#pragma once #ifdef _WIN32 #ifdef WIREROUTINGDLL_EXPORTS // VisualStudio DLL 项目模板会将 _EXPORTS 添加到定义预处理器宏。 #define BVH_API __declspec(dllexport) // _WIN32 #else #define BVH_API __declspec(dllimport) #endif #else #define BVH_API #endif #include"ReadXML.h" #include #include #include #include #include #include #include using namespace std; extern bool BVH_API PointInTri(Point3& P, Point3& P0, Point3& P1, Point3& P2); struct BVH_API Triangle{ P p[3]; void getbox(P& _min, P& _max); void print(); }; extern bool BVH_API cmpt0(const Triangle& a, const Triangle& b); extern bool BVH_API cmpt1(const Triangle& a, const Triangle& b); extern bool BVH_API cmpt2(const Triangle& a, const Triangle& b); struct BVH_API O_AABB { P _min; P _max; int l,r; O_AABB(); O_AABB(const P& min, const P& max); bool insig(double x, double a, double b); bool inbox(const P& p); bool hit(P& p1, P& p2); }; struct BVH_API BVH{ int trinum,tot,root; Triangle tri[MaxSTL]; O_AABB ab[400010]; BVH(); void update(int x); void build(int &x,int l,int r,int k); bool TriSegIntersection(Point3& P0, Point3& P1, Point3& P2, Point3& A, Point3& B); bool TriSegIntersection(Triangle& t, Point3& A, Point3& B); bool query(int x,int l,int r,P &A,P &B); bool iscollect(P& A, P& B); void read_stl(string filename); };