Es gibt einen Unterschied zwischen einem "Viereck" und einem "Rechteck".
Wenn Sie den Mittelpunkt von oben und unten und die Seitenlängen haben, ist der Rest einfach.
Gegeben:
(x1, y1) -- (top_middle_x, top_middle_y) -- (x2, y1)
(x1, y2) -- (btm_middle_x, btm_middle_y) -- (x2, y2)
und oben/unten Länge zusammen mit rechts/links Länge.
x1 = top_middle_x - oben/unten_length/2; x2 = x1 + oben/unten_Länge;
y1 = y2 = top_middle_y bottom_middle_y
Offensichtlich, das ist der einfachste Fall und unter der Annahme, daß die Linie von (TMX, tmy) (BMX, BMY) ausschließlich entlang der Y-Achse ist.
Wir nennen diese Linie die "Mittellinie".
Der nächste Trick besteht darin, die Mittellinie zu nehmen und den Rotationsversatz von der Y-Achse zu berechnen.
Jetzt ist meine Trigon super rostig.
dx = tmx - bmx, dy = tmy - bmy.
Also ist die Tangente des Winkels dy/dx. Der Arkustangens (dy/dx) ist der Winkel der Linie.
Davon können Sie sich orientieren.
(Geist, gibt es einige Spiele mit Quadranten und Zeichen, und so diese richtig zu machen - aber das ist der Kern von ihm.)
Sobald Sie die Orientierung haben, können Sie „drehen“ die Zeile zurück zur Y-Achse. Nachschlagen 2D-Grafiken für die Mathematik, es ist einfach.
Das bekommt Sie Ihre normale Orientierung. Berechnen Sie dann die Rechtecke in dieser neuen Normalform und drehen Sie sie schließlich zurück.
Viola. Rechteck.
Andere Dinge, die Sie tun können, ist "rotieren" eine Linie, die die halbe Länge der "oberen" Linie ist, wo es 90 Grad der Mittellinie ist. Also, sagen Sie, Sie haben eine Mittellinie, die 45 Grad ist. Sie würden diese Linie bei tmx, tmy beginnen und diese Linie 135 Grad (90 + 45) drehen. Dieser Punkt wäre deine "obere linke" Ecke. Drehe ihn -45 (45 - 90), um den Punkt "oben rechts" zu erhalten. Dann mach etwas ähnliches mit den unteren Punkten.
ich wieder meine Antwort nehmen .. Das ist lösbar! – Dolph
Ich nehme an, dass das in jedem Winkel gedreht werden kann und Sie den Winkel nicht kennen? – Casey
@Casey, richtig. – icco