예제 #1
0
// liefert den Punkt neben dem Segment (links oder rechts, siehe 'left'), der orthogonal von
// 'p' die Entfernung 'newLen' von diesem Segment hat.
static DPoint leftOfSegment(const DLine &segment, const DPoint &p, double newLen, bool left = true)
{
	DVector v;
	if (p == segment.start())
		v = segment.end() - p;
	else
		v = p - segment.start();

	DVector newPos(v.orthogonal());
	if (!left) newPos *= -1;

	// newPos has nonzero length
	newPos = (newPos * newLen) / newPos.length();

	return p + newPos;
}