// 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; }