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
104 lines
2.1 KiB
10 months ago
|
#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();
|
||
|
|
||
|
};
|