-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathEdge.cpp
More file actions
36 lines (27 loc) · 1.15 KB
/
Copy pathEdge.cpp
File metadata and controls
36 lines (27 loc) · 1.15 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
#include "Edge.h"
Edge::~Edge(void)
{
}
bool Edge::IsFlipMovePossible() const
{
// Disallow if the triangle is adjacent to itself along this edge.
// Also, if diagonals are connected a move will not change the triangulation, so don't allow it.
return (getParent() != getAdjacent()->getParent())
&& (getNext()->getAdjacent() != getAdjacent()->getNext())
&& (getPrevious()->getAdjacent() != getAdjacent()->getPrevious()) ;
}
void Edge::DoFlipMove()
{
Edge * adjacent = adjacent_;
// make sure the vertices keep a correct parent
getNext()->getOpposite()->setParent(adjacent->getPrevious());
adjacent->getNext()->getOpposite()->setParent(getPrevious());
// update the adjacency of the triangles getParent() and adjacent->getParent()
bindAdjacent(adjacent->getPrevious()->getAdjacent());
adjacent->bindAdjacent(getPrevious()->getAdjacent());
getPrevious()->bindAdjacent(adjacent->getPrevious());
// update the vertices
getNext()->setOpposite( adjacent->getOpposite() );
adjacent->getNext()->setOpposite( getOpposite() );
BOOST_ASSERT(getNext()->getOpposite() == getNext()->getOpposite()->getParent()->getOpposite());
}