Da hilft die gute alte Vektorrechnung. Für die Winkelstücke nimmst du einfach den Vektor von p1 nach p2 (oder umgekehrt) und drehst diesen um 90°. Das auf p1 und p2 addiert ergibt deine weiteren gesuchten Punkte.
Die Idee: Bei einem Vektor (x, y) ist 90° dazu (y, -x) und (-y, x). Man kommt da also komplett ohne Trigonometrie aus - sogar ohne Rechnen
Diese müssen dann nur noch auf deine gewünschte Länge gebracht werden:
(v': Längenangepasster Vektor; L: Deine Ziellänge; v: Gedrehter Vektor (p1-p2))
Code:
/ v.x \
| ----------------- |
| sqrt(v.x² + v.y²) |
v' = L * | |
| v.y |
| ----------------- |
\ sqrt(v.x² + v.y²) /
Und dann auf die Endpunkte addieren. Welche Richtung man nachher erhält hängt davon ab, wie rum man den Ausgangsvektor (p1-p2 oder p2-p1) bildet, und welche der beiden 90° Varianten man nimmt.
"When one person suffers from a delusion, it is called insanity. When a million people suffer from a delusion, it is called religion." (Richard Dawkins)