25 #ifndef __TRIANGULATOR_INCLUDED
26 #define __TRIANGULATOR_INCLUDED
35 static const double C_EPS = 1.0e-20;
50 return (
x * (v1).
y - (v1).
x *
y);
65 return (sqrt(
x *
x +
y *
y));
186 #define MAX(a, b) (((a) > (b)) ? (a) : (b))
190 #define MIN(a, b) (((a) < (b)) ? (a) : (b))
193 #define CROSS(v0, v1, v2) (((v1).x - (v0).x) * ((v2).y - (v0).y) - ((v1).y - (v0).y) * ((v2).x - (v0).x))
195 #define DOT(v0, v1) ((v0).x * (v1).x + (v0).y * (v1).y)
239 bool inserted(
int segnum,
int whichpt);
260 bool isCCW(
int size,
double (*vertices)[2]);
261 void revert(
int size,
double (*vertices)[2]);
262 void makeCCW(
int size,
double (*vertices)[2]);
263 void makeCW(
int size,
double (*vertices)[2]);
269 int triangulate_polygon(
int ncontours,
int cntr[],
double (*vertices)[2],
int (*triangles)[3]);
270 static int getTriangles(
int numVert,
float *
x,
float *
y,
int (*triangles)[3]);
Triangulator(int size)
Definition: Triangulator.cpp:85
static const int INFINITY
Definition: Triangulator.h:167
friend _point_t operator-(const _point_t &v0, const _point_t &v1)
Definition: Triangulator.h:75
GLsizeiptr size
Definition: khronos-glext.h:6610
static const int TR_FROM_DN
Definition: Triangulator.h:181
static const int SP_SIMPLE_LRDN
Definition: Triangulator.h:173
static const int S_RIGHT
Definition: Triangulator.h:169
Definition: Triangulator.h:117
double get_angle(const point_t &vp0, const point_t &vpnext, const point_t &vp1)
Definition: Triangulator.cpp:1227
double y
Definition: Triangulator.h:52
int triangulate_polygon(int ncontours, int cntr[], double(*vertices)[2], int(*triangles)[3])
Definition: Triangulator.cpp:2001
int add_segment(int segnum)
Definition: Triangulator.cpp:604
bool is_left_of(int segnum, point_t &v)
Definition: Triangulator.cpp:356
Definition: Triangulator.h:106
int getQSize()
Definition: Triangulator.h:230
bool operator>=(const _point_t &v1)
Definition: Triangulator.h:83
int * permute
Definition: Triangulator.h:214
_point_t()
Definition: Triangulator.h:58
int next
Definition: Triangulator.h:148
int nodetype
Definition: Triangulator.h:137
int init_query_structure(int segnum)
Definition: Triangulator.cpp:265
int * mon
Definition: Triangulator.h:210
int root1
Definition: Triangulator.h:110
static const int TRI_LHS
Definition: Triangulator.h:182
void initialize(int n)
Definition: Triangulator.cpp:1958
int uside
Definition: Triangulator.h:124
Definition: Triangulator.h:130
static const int FIRSTPT
Definition: Triangulator.h:161
bool operator==(const _point_t &v1)
Definition: Triangulator.h:79
int make_new_monotone_poly(int mcur, int v0, int v1)
Definition: Triangulator.cpp:1319
_node_t()
Definition: Triangulator.h:133
int left
Definition: Triangulator.h:142
int state
Definition: Triangulator.h:125
int parent
Definition: Triangulator.h:141
int triangulate_single_polygon(int nvert, int posmax, int side, int op[][3])
Definition: Triangulator.cpp:1866
GLfloat v0
Definition: khronos-glext.h:6752
void makeCW(int size, double(*vertices)[2])
Definition: Triangulator.cpp:2177
static const int SP_2UP_RIGHT
Definition: Triangulator.h:176
int triangulate_monotone_polygons(int nvert, int nmonpoly, int op[][3])
Definition: Triangulator.cpp:1761
int newmon()
Definition: Triangulator.cpp:139
struct in_addr ip
Definition: coSimClient.h:202
double x
Definition: Triangulator.h:47
static const int LASTPT
Definition: Triangulator.h:162
int construct_trapezoids(int nseg)
Definition: Triangulator.cpp:1197
int next
Definition: Triangulator.h:111
GLdouble GLdouble GLdouble r
Definition: khronos-glext.h:6457
int op_idx
Definition: Triangulator.h:215
bool FP_EQUAL(double s, double t)
Definition: Triangulator.cpp:55
int get_vertex_positions(int v0, int v1, int &ip, int &iq)
Definition: Triangulator.cpp:1265
bool operator>(const _point_t &v1)
Definition: Triangulator.h:67
static const int ST_VALID
Definition: Triangulator.h:170
int chain_idx
Definition: Triangulator.h:215
static const int TRI_RHS
Definition: Triangulator.h:183
int newtrap()
Definition: Triangulator.cpp:177
point_t v1
Definition: Triangulator.h:108
bool operator<(const _point_t &v1)
Definition: Triangulator.h:91
point_t pt
Definition: Triangulator.h:155
_point_t(double xx, double yy)
Definition: Triangulator.h:53
int choose_segment()
Definition: Triangulator.cpp:1948
int tr_idx
Definition: Triangulator.h:217
int getSegSize()
Definition: Triangulator.h:226
static int getTriangles(int numVert, float *x, float *y, int(*triangles)[3])
Definition: Triangulator.cpp:2185
Definition: Triangulator.h:145
void setmax(const _point_t &v0, const _point_t &v1)
~Triangulator()
Definition: Triangulator.cpp:120
static const int T_Y
Definition: Triangulator.h:164
class covise::_point_t point_t
Definition: Triangulator.h:197
node_t * qs
Definition: Triangulator.h:200
int inside_polygon(trap_t &t)
Definition: Triangulator.cpp:1247
static const double C_EPS
Definition: Triangulator.h:35
vertexchain_t * vert
Definition: Triangulator.h:204
GLdouble GLdouble t
Definition: khronos-glext.h:6449
point_t yval
Definition: Triangulator.h:139
int prev
Definition: Triangulator.h:112
int rseg
Definition: Triangulator.h:119
static const int SP_2UP_LEFT
Definition: Triangulator.h:175
bool isCCW(int size, double(*vertices)[2])
Definition: Triangulator.cpp:2139
void setmin(const _point_t &v0, const _point_t &v1)
Definition: Triangulator.h:153
int mon_idx
Definition: Triangulator.h:215
int math_logstar_n(int n)
Definition: Triangulator.cpp:60
GLint GLint GLint GLint GLint GLint y
Definition: khronos-glext.h:6346
static const int SP_SIMPLE_LRUP
Definition: Triangulator.h:172
int locate_endpoint(point_t &v, point_t &vo, int r)
Definition: Triangulator.cpp:435
int * visited
Definition: Triangulator.h:212
void makeCCW(int size, double(*vertices)[2])
Definition: Triangulator.cpp:2169
static const int SP_2UP_2DN
Definition: Triangulator.h:174
int traverse_polygon(int mcur, int trnum, int from, int dir)
Definition: Triangulator.cpp:1451
static const int TR_FROM_UP
Definition: Triangulator.h:180
bool is_inserted
Definition: Triangulator.h:109
static const int T_SINK
Definition: Triangulator.h:165
static const int SP_NOSPLIT
Definition: Triangulator.h:179
int merge_trapezoids(int segnum, int tfirst, int tlast, int side)
Definition: Triangulator.cpp:519
int d1
Definition: Triangulator.h:122
int sink
Definition: Triangulator.h:123
GLdouble s
Definition: khronos-glext.h:6441
bool inserted(int segnum, int whichpt)
Definition: Triangulator.cpp:426
int trnum
Definition: Triangulator.h:140
trap_t * tr
Definition: Triangulator.h:201
void revert(int size, double(*vertices)[2])
Definition: Triangulator.cpp:2153
GLfloat GLfloat v1
Definition: khronos-glext.h:6753
int prev
Definition: Triangulator.h:149
static const int S_LEFT
Definition: Triangulator.h:168
point_t lo
Definition: Triangulator.h:120
static const int T_X
Definition: Triangulator.h:163
int segnum
Definition: Triangulator.h:138
static const int ST_INVALID
Definition: Triangulator.h:171
int marked
Definition: Triangulator.h:150
int q_idx
Definition: Triangulator.h:216
int nextfree
Definition: Triangulator.h:158
int find_new_roots(int segnum)
Definition: Triangulator.cpp:1181
GLdouble n
Definition: khronos-glext.h:8447
int choose_idx
Definition: Triangulator.h:213
int u1
Definition: Triangulator.h:121
static const int SP_2DN_RIGHT
Definition: Triangulator.h:178
int monotonate_trapezoids(int n)
Definition: Triangulator.cpp:1382
segment_t * seg
Definition: Triangulator.h:202
int newnode()
Definition: Triangulator.cpp:158
monchain_t * mchain
Definition: Triangulator.h:203
int vnum
Definition: Triangulator.h:147
double LENGTH()
Definition: Triangulator.h:63
int _segsize
Definition: Triangulator.h:218
int new_chain_element()
Definition: Triangulator.cpp:131
class covise::_point_t vector_t
int getTRSize()
Definition: Triangulator.h:234
GLint GLint GLint GLint GLint x
Definition: khronos-glext.h:6346
double CROSS_SINE(const _point_t &v1)
Definition: Triangulator.h:48
static const int SP_2DN_LEFT
Definition: Triangulator.h:177
Definition: Triangulator.h:43
bool _gotError
Definition: Triangulator.h:266
const GLdouble * v
Definition: khronos-glext.h:6442
void generate_random_ordering(int n)
Definition: Triangulator.cpp:2081
int right
Definition: Triangulator.h:142
class covise::_node_t node_t