14 #ifndef TRIANGULATOR_H 15 #define TRIANGULATOR_H 37 int add_vertex(
const LPoint2d &point);
38 INLINE
int add_vertex(
double x,
double y);
40 INLINE
int get_num_vertices()
const;
41 INLINE
const LPoint2d &get_vertex(
int n)
const;
42 MAKE_SEQ(get_vertices, get_num_vertices, get_vertex);
43 MAKE_SEQ_PROPERTY(vertices, get_num_vertices, get_vertex);
46 void add_polygon_vertex(
int index);
47 INLINE
bool is_left_winding()
const;
50 void add_hole_vertex(
int index);
54 int get_num_triangles()
const;
55 int get_triangle_v0(
int n)
const;
56 int get_triangle_v1(
int n)
const;
57 int get_triangle_v2(
int n)
const;
60 void cleanup_polygon_indices(vector_int &polygon);
72 INLINE Triangle(
Triangulator *t,
int v0,
int v1,
int v2);
87 INLINE segment_t(
Triangulator *t,
int v0_i,
int v1_i,
int prev,
int next);
147 TrapezoidStructure tr;
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;
PANDA 3D SOFTWARE Copyright (c) Carnegie Mellon University.
PANDA 3D SOFTWARE Copyright (c) Carnegie Mellon University.
This class can triangulate a convex or concave polygon, even one with holes.
PANDA 3D SOFTWARE Copyright (c) Carnegie Mellon University.
PANDA 3D SOFTWARE Copyright (c) Carnegie Mellon University.