addNextSegment method
Implementation
void addNextSegment(Coordinate p, bool addStartPoint) {
// s0-s1-s2 are the coordinates of the previous segment and the current one
s0 = s1;
s1 = s2;
s2 = p;
seg0.setCoordinates(s0, s1);
computeOffsetSegment(seg0, side, distance, offset0);
seg1.setCoordinates(s1, s2);
computeOffsetSegment(seg1, side, distance, offset1);
// do nothing if points are equal
if (s1.equals(s2)) return;
int orientation = Orientation.index(s0, s1, s2);
bool outsideTurn = (orientation == Orientation.CLOCKWISE &&
side == Position.LEFT) ||
(orientation == Orientation.COUNTERCLOCKWISE && side == Position.RIGHT);
if (orientation == 0) {
// lines are collinear
addCollinear(addStartPoint);
} else if (outsideTurn) {
addOutsideTurn(orientation, addStartPoint);
} else {
// inside turn
addInsideTurn(orientation, addStartPoint);
}
}