32class EXPCL_PANDA_MATHUTIL Triangulator {
41 INLINE
const LPoint2d &
get_vertex(
int n)
const;
60 void cleanup_polygon_indices(vector_int &polygon);
62 typedef pvector<LPoint2d> Vertices;
67 typedef pvector<vector_int> Holes;
72 INLINE Triangle(Triangulator *t,
int v0,
int v1,
int v2);
76 typedef pvector<Triangle> Result;
87 INLINE segment_t(Triangulator *t,
int v0_i,
int v1_i,
int prev,
int next);
97 typedef pvector<segment_t> Segments;
144 typedef pvector<node_t> QueryStructure;
146 typedef pvector<trap_t> TrapezoidStructure;
147 TrapezoidStructure tr;
152 pvector<monchain_t> mchain;
160 pvector<vertexchain_t> vert;
168 bool check_left_winding(
const vector_int &range)
const;
169 void make_segment(
const vector_int &range,
bool want_left_winding);
171 int choose_segment();
172 static double math_log2(
double v);
173 static int math_logstar_n(
int n);
174 static int math_N(
int n,
int h);
178 int _max(point_t *yval, point_t *v0, point_t *v1);
179 int _min(point_t *yval, point_t *v0, point_t *v1);
180 int _greater_than(point_t *v0, point_t *v1);
181 int _equal_to(point_t *v0, point_t *v1);
182 int _greater_than_equal_to(point_t *v0, point_t *v1);
183 int _less_than(point_t *v0, point_t *v1);
184 int init_query_structure(
int segnum);
185 int is_left_of(
int segnum, point_t *v);
186 int inserted(
int segnum,
int whichpt);
187 int locate_endpoint(point_t *v, point_t *vo,
int r);
188 int merge_trapezoids(
int segnum,
int tfirst,
int tlast,
int side);
189 int add_segment(
int segnum);
190 int find_new_roots(
int segnum);
191 int construct_trapezoids(
int nseg);
193 int inside_polygon(trap_t *t);
195 int new_chain_element();
196 double get_angle(point_t *vp0, point_t *vpnext, point_t *vp1);
197 int get_vertex_positions(
int v0,
int v1,
int *ip,
int *iq);
198 int make_new_monotone_poly(
int mcur,
int v0,
int v1);
199 int monotonate_trapezoids(
int n);
200 int traverse_polygon(
int mcur,
int trnum,
int from,
int dir);
201 void triangulate_monotone_polygons(
int nvert,
int nmonpoly);
202 void triangulate_single_polygon(
int nvert,
int posmax,
int side);
204 friend class Triangle;
205 friend struct segment_t;