Rechteckt
-
Hallo,
ich habe in einer Ebene 2D 4 Punkte, die die Eckpunkte eines Rechteckes sind.
Ich brauche eine allgemeine Gleichung um herauszufinden ob Punkt X in diesem Rechteck liegt und auch ob es auf einer der Seitenkanten. ( die Seitenkanten ist leicht und habe ich auch jetzt schon )
Ich bin fuer Vorschlaege offen.
-
Dein Rechteck hat die Punkte A,B,C,D als Ecken.
Anordnung
DC
ABDu rechnest jetzt die Vektoren vec(AB) und vec(AD) aus und nimmst die als neue Basis.
Diese Vektoren nimmst du nun als Spalten einer Matrix (nennen wir die Matrix T) und berechnest die Inverse dieser Matrix (T^(-1):=T').
Wenn du nun einen Punkt (x1,x2) mit dieser Matrix T' multiplizierst erhälst du die Koordinaten dieses Punktes in der neuen Basis (x1',x2').
Ist x1' und x2' zwischen 0 und 1, dann liegt dein Punkt in dem Rechteck.
falls x1' oder x2' gleich 1 oder gleich 0, dann liegt dein Punkt auf den Verbindungslinien.
Ist auch nur eins von beiden negativ oder größer 1, dann liegt der Punkt außerhalb.Ist etwas blöd, das ohne Skizze zu erklären.
Die Mathematik dahinter ist, dass T eine Basiswechselmatrix ist.
-
Das was du beschreibst, ist ja letztlich das lösen des Gleichungssystems
m * vec(AB) + n * vec(AD) = (x1, x2)
wobei (x1,x2) der zu überprüfende Punkt ist.
Ich würd das anders Lösen als über die Inverse. Um meinen Prof. zu zitieren:
"Wer Matrizen invertiert ist blöd."
Man kann ja eine allgemeine Lösung für ein System mit 2 Variablen und 2 Unbekannten
angeben (zB Gauß).
Überprüfung ist wieder die gleiche: Liegen m,n auf dem Intervall [0,1] ?
-
Hi
Du kannst dir die Kanten auch einfach als Geraden denken.
Liegt der Punkt vor allen vier Geraden, liegt der Punkt im
Rechteck, sonst außerhalb. (geht im Übrigen mit jedem konvexen Polygon).Wobei "vor" folgendes heißen soll.
Die Normalen der Geraden zeigen in das Rechteck hinein und der Winkel
zwischen Punkt-Gerade und Normale ist kleiner als 90°.Noch eine schöne Möglichkeit:
A----B
|***|
C----D P
(sorry sieht nicht so hünsch aus, meine Leerzeichen werden immer entfernt)Jetzt berechnest du Winkel APB, APD, DPC, CPB. (alle positiv)
Ergeben APB+APD+DPC+CPB = 360° dann liegt der Punkt innerhalb sonst außerhalb.
Geht auch mit jedem konvexen Polygon.
(die Winkel aber mit Skalarprodukt ausrechnen, sonst wirds zu aufwendig!)Viele Grüße
Fischi
-
Bei meiner Lösung muss man noch A von Punkt x abziehen. Also quasi das Rechteck zum Ursprung verlegen.
Taurin schrieb:
Ich würd das anders Lösen als über die Inverse. Um meinen Prof. zu zitieren:
"Wer Matrizen invertiert ist blöd."Die Inverse einer 2x2 Matrix sollte jetzt aber nicht das Problem sein, oder?
-
@ ALL
Ich danke fuer die viellen Moeglichkeiten und werde mal sehen, welche am schnellsten umzusetzen geht.
Wenn es Probleme gibt, melde ich mich sowieso wieder.
-
Ich merke gerade, ich hoffe Ihr habt bedacht, dass das Rechteck beliebig im Koordinatensystem liegt.
-
asmodis schrieb:
Die Inverse einer 2x2 Matrix sollte jetzt aber nicht das Problem sein, oder?
Nö, geht aber ums Prinzip
-
Chris233 schrieb:
Ich merke gerade, ich hoffe Ihr habt bedacht, dass das Rechteck beliebig im Koordinatensystem liegt.
bedacht.