Wenn Sie wissen, dass Ihr Viereck ein Rechteck ist, können Sie mit einfacher Vektorrechnung die Koordinaten der Ecken bestimmen. Die bekannten Koordinaten sind:
(x1,y1)
- die Koordinate des Mittelpunkts auf der oberen Linie
(x2,y2)
- die Koordinate des Mittelpunkts auf der unteren Linie
l1
- die Länge der oberen und unteren Zeile
l2
- die Länge der beiden anderen Zeilen
Zunächst wird der Vektor zwischen den beiden bekannten Punkten ermittelt. Dieser Vektor ist parallel zu den Seitenlinien:
(vx, vy) = (x2 - x1, y2 - y1)
Wir müssen diesen Vektor normalisieren (d. h. ihn auf die Länge 1 bringen), damit wir ihn später als Basis für unsere Koordinaten verwenden können.
vlen = sqrt(vx*vx + vy*vy)
(v1x, v1y) = (vx / vlen, vy / vlen)
Anschließend drehen wir diesen Vektor um 90 Grad gegen den Uhrzeigersinn. Der gedrehte Vektor wird parallel zu den oberen und unteren Linien verlaufen. Bei einer Drehung um 90 Grad werden einfach die Koordinaten vertauscht und eine davon negiert. Sie können dies einfach durch Ausprobieren auf dem Papier sehen. Oder werfen Sie einen Blick auf die Gleichungen für 2D-Drehungen und um 90 Grad drehen.
(u1x, u1y) = (-v1y, v1x)
Jetzt haben wir genug Informationen, um die linke obere Ecke zu finden. Wir beginnen einfach an unserem Punkt (x1, y1)
und bewegen Sie sich entlang dieser Seite um die Hälfte der Seitenlänge zurück:
(p1x, p1y) = (x1 - u1x * l1 / 2, y1 - u1y * l1 / 2)
Von hier aus können wir die verbleibenden Punkte einfach durch Addition der entsprechenden Vielfachen unserer Basisvektoren finden. Bei der Umsetzung können Sie die Berechnung natürlich beschleunigen, indem Sie jede einzelne Multiplikation nur ein einziges Mal berechnen:
(p2x, p2y) = (p1x + u1x * l1, p1y + u1y * l1)
(p3x, p3y) = (p1x + v1x * l2, p1y + v1y * l2)
(p4x, p4y) = (p3x + u1x * l1, p3y + u1y * l1)