You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

104 lines
2.1 KiB

#pragma once
#ifdef _WIN32
#ifdef WIREROUTINGDLL_EXPORTS // VisualStudio DLL ��Ŀģ���Ὣ <PROJECTNAME>_EXPORTS ���ӵ�����Ԥ�������ꡣ
#define CLIP_API __declspec(dllexport) // _WIN32
#else
#define CLIP_API __declspec(dllimport)
#endif
#else
#define CLIP_API
#endif
#include "KDtree.h"
#include<cmath>
#include<vector>
#include<queue>
#include<map>
#include<iostream>
#include<fstream>
#include<sstream>
using namespace std;
extern KDtree CLIP_API kdtree;
//������Ϣ
struct CLIP_API Clip{
string name; //����
P coord,dir; //�����ͷ���,dir�ķ�����Ϊ����
int emc; //��������,δȷ��Ϊ0
double dia; //ͨ��������������ֱ��
double maxDia; //��������ͨ��������������ֱ��
int id; //��������
int bundleNodeID; //������ʱ�����ĸ�Bundle
vector<double> diaset; //�Ѿ�ͨ�����������°뾶����
vector<int> channelEdge; //�ڽ���ͨ�������ӵ��Ŀ�������
bool used; //�����Ƿ���ʹ��
Clip();
//��������ͨ���������ߺ�ͨ����Ϣ
void clear();
//�ڿ���������ֱ��Ϊd������
void addwire(double d);
//����ͨ��������������ֱ��
double getDia();
//�ж�ֱ��Ϊd�������ܷ�ͨ��
bool transitable(double d);
//�жϴ�p�㵽������Ӧ�ô���һ�����룬����Ϊ0������Ϊ1
int inDir(P p);
};
//���������������еĿ�����Ϣ
struct CLIP_API ClipSet{
Clip c[N]; //�������ϣ��±���1~clipnum
int clipnum; //�����ܺ�,�������ŷ�Χ1`clipnum
map<P,int>clipid; //���ݵ������ҵ���������
ClipSet();
//����ͨ��������������Ϣ
void clearWire();
//�¼���һ������
void addclip(P p, P d, string name, int emc);
//����ͨ�������ĵ���
void addwire(int id, double d);
void addwire(P& p, double d);
//��ȡָ������Ϊid�Ŀ�����ָ��
Clip * getClipPointer(int id,int bundleNodeID);
//�ж����������Ƿ�����Ϊ����(��֪i�����Ŀ�����j)
bool bothConnect(int i, int j);
//�жϿ����ܷ�ͨ��
bool transitable(int id, int emc, double d);
//���ݿ���λ�ù��Ʒɻ��Ľ���������
void computeCenter();
//��ӡ�����������������ߵľ���
void printDis();
//���ݿ���λ���ȴ���һ�����Ƶ�ͨ����ÿ����������������������������
void buildChannel();
//��ӡ���п�����Ϣ��clipDir�ļ��������������������Ͽ�������
/*
0򿨹
1ֱ򿨹
2򿨹
*/
void print();
};