#pragma once #ifdef _WIN32 #ifdef WIREROUTINGDLL_EXPORTS // VisualStudio DLL 项目模板会将 _EXPORTS 添加到定义预处理器宏。 #define KD_TREE_API __declspec(dllexport) // _WIN32 #else #define KD_TREE_API __declspec(dllimport) #endif #else #define KD_TREE_API #endif #include "BVH.h" #include #include #include #include #include #include #include using namespace std; struct KD_TREE_API point { double x[3]; int id; point(); }; extern bool KD_TREE_API cmp0(const point &a, const point &b); extern bool KD_TREE_API cmp1(const point &a, const point &b); extern bool KD_TREE_API cmp2(const point &a, const point &b); struct KD_TREE_API node { double dis; int id; bool operator<(node b) const; node(); node(int id1, double dis1); }; struct KD_TREE_API tree { point p; double mx[3], mn[3]; int ls, rs, id; tree(); }; struct KD_TREE_API KDtree { int n, tot, root; double X, Y, Z; priority_queue q; vector vec; point p[MAXPointNum]; tree t[MAXPointNum]; KDtree(); double dis(tree &x); double mndis(tree &x); void update(int x); void query(int x); void queryd(int x, double d); void add(P &s); void build(int &x, int l, int r, int k); void build(); vector search_by_k(P &s, int k); // 返回距离s点d以内的所有点的编号 vector search_by_dis(P &s, double d); };