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;
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.
PANDA 3D SOFTWARE Copyright (c) Carnegie Mellon University.
PANDA 3D SOFTWARE Copyright (c) Carnegie Mellon University.