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.