75 void SweepPoints(SweepContext& tcx);
86 Node& PointEvent(SweepContext& tcx, Point& point);
95 void EdgeEvent(SweepContext& tcx, Edge* edge, Node* node);
97 void EdgeEvent(SweepContext& tcx, Point& ep, Point& eq, Triangle* triangle, Point& point);
107 Node& NewFrontTriangle(SweepContext& tcx, Point& point, Node& node);
114 void Fill(SweepContext& tcx, Node& node);
119 bool Legalize(SweepContext& tcx, Triangle& t);
145 bool Incircle(
const Point& pa,
const Point& pb,
const Point& pc,
const Point& pd)
const;
161 void RotateTrianglePair(Triangle& t, Point& p, Triangle& ot, Point& op)
const;
170 void FillAdvancingFront(SweepContext& tcx, Node& n);
174 bool LargeHole_DontFill(
const Node* node)
const;
175 bool AngleExceeds90Degrees(
const Point* origin,
const Point* pa,
const Point* pb)
const;
176 bool AngleExceedsPlus90DegreesOrIsNegative(
const Point* origin,
const Point* pa,
const Point* pb)
const;
177 double Angle(
const Point* origin,
const Point* pa,
const Point* pb)
const;
184 double HoleAngle(
const Node& node)
const;
189 double BasinAngle(
const Node& node)
const;
200 void FillBasin(SweepContext& tcx, Node& node);
209 void FillBasinReq(SweepContext& tcx, Node* node);
211 bool IsShallow(SweepContext& tcx, Node& node);
213 bool IsEdgeSideOfTriangle(Triangle& triangle, Point& ep, Point& eq);
215 void FillEdgeEvent(SweepContext& tcx, Edge* edge, Node* node);
217 void FillRightAboveEdgeEvent(SweepContext& tcx, Edge* edge, Node* node);
219 void FillRightBelowEdgeEvent(SweepContext& tcx, Edge* edge, Node& node);
221 void FillRightConcaveEdgeEvent(SweepContext& tcx, Edge* edge, Node& node);
223 void FillRightConvexEdgeEvent(SweepContext& tcx, Edge* edge, Node& node);
225 void FillLeftAboveEdgeEvent(SweepContext& tcx, Edge* edge, Node* node);
227 void FillLeftBelowEdgeEvent(SweepContext& tcx, Edge* edge, Node& node);
229 void FillLeftConcaveEdgeEvent(SweepContext& tcx, Edge* edge, Node& node);
231 void FillLeftConvexEdgeEvent(SweepContext& tcx, Edge* edge, Node& node);
233 void FlipEdgeEvent(SweepContext& tcx, Point& ep, Point& eq, Triangle* t, Point& p);
247 Triangle& NextFlipTriangle(SweepContext& tcx,
int o, Triangle& t, Triangle& ot, Point& p, Point& op);
260 Point& NextFlipPoint(Point& ep, Point& eq, Triangle& ot, Point& op);
275 void FlipScanEdgeEvent(SweepContext& tcx, Point& ep, Point& eq, Triangle& flip_triangle, Triangle& t, Point& p);
277 void FinalizationPolygon(SweepContext& tcx);
279 std::vector<Node*> nodes_;