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