00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022 INLINE int Triangulator::
00023 add_vertex(double x, double y) {
00024 return add_vertex(LPoint2d(x, y));
00025 }
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036 INLINE int Triangulator::
00037 get_num_vertices() const {
00038 return _vertices.size();
00039 }
00040
00041
00042
00043
00044
00045
00046 INLINE const LPoint2d &Triangulator::
00047 get_vertex(int n) const {
00048 nassertr(n >= 0 && n < (int)_vertices.size(), LPoint2d::zero());
00049 return _vertices[n];
00050 }
00051
00052
00053
00054
00055
00056
00057
00058
00059 INLINE bool Triangulator::
00060 is_left_winding() const {
00061 return check_left_winding(_polygon);
00062 }
00063
00064
00065
00066
00067
00068
00069 INLINE Triangulator::Triangle::
00070 Triangle(Triangulator *t, int v0, int v1, int v2) :
00071 _v0(t->vert[v0].user_i),
00072 _v1(t->vert[v1].user_i),
00073 _v2(t->vert[v2].user_i)
00074 {
00075 }
00076
00077
00078
00079
00080
00081
00082 INLINE Triangulator::segment_t::
00083 segment_t() {
00084 }
00085
00086
00087
00088
00089
00090
00091 INLINE Triangulator::segment_t::
00092 segment_t(Triangulator *t, int v0_i, int v1_i, int prev, int next) :
00093 is_inserted(false),
00094 root0(0), root1(0),
00095 next(next),
00096 prev(prev),
00097 v0_i(v0_i)
00098 {
00099 v0.x = t->_vertices[v0_i][0];
00100 v0.y = t->_vertices[v0_i][1];
00101
00102 v1.x = t->_vertices[v1_i][0];
00103 v1.y = t->_vertices[v1_i][1];
00104 }