Transformation Koordinatensyst < Topologie+Geometrie < Hochschule < Mathe < Vorhilfe
|
Aufgabe | Hallo, zusammen ich habe folgendes Problem:
Ein Punkt P liegt auf einer Ebene E. P ist gegeben. Auf der Ebene E liegen noch weitere vier Punkte A,B,C und D, die ebenfalls bekannt sind und durch die die Ebene E definiert wird. Diese vier Punkte beschreiben auf der Ebene ein Rechteck. |
Wie kann man möglichst einfach herausfinden, ob der Punkt P innerhalb oder außerhalb des Rechteckes liegt?
Mein Lösungsansatz:
Ich habe mir überlegt mit einem globalen und einem lokalen Koordinatensystem zu arbeiten. Das lokale KS würde ich dann an die eine Ecke des Rechteckes auf den Punkt A setzten. Die x- und y-Achsen lägen dann in Richtung der anliegenden Seiten AB und AD. Nun würden ich die Koordinaten aller Punkte in Bezug auf das lokale KS transformieren.
Somit wäre das Problem 2-dimensional. Ich müsste nur noch überprüfen, ob die x- & y-Koordinaten des Punktes P kleiner oder gleich der Koordinaten des Punktes B, bzw. D sind.
Ist mein Lösungsansatz korrekt/machbar?
Leider weiß ich nicht wie man ein 3-dimensionales KS so transformiert, dass dessen Ursprung in einem bestimmten Punkt liegt und dessen x- und y-Achsen in die Richtung zweier Vektoren (AB und AD) zeigen. Kann mir da jemand weiter helfen?
Ich danke euch, dass ihr meine Frage durchgelesen habt.
Ich wünsche euch einen guten Rutsch ins neue Jahr 2009,
Gruß
Julian
Ich habe diese Frage in keinem Forum auf anderen Internetseiten gestellt.
|
|
|
|
Hallo brokenspine187,
> Hallo, zusammen ich habe folgendes Problem:
>
> Ein Punkt P liegt auf einer Ebene E. P ist gegeben. Auf der
> Ebene E liegen noch weitere vier Punkte A,B,C und D, die
> ebenfalls bekannt sind und durch die die Ebene E definiert
> wird. Diese vier Punkte beschreiben auf der Ebene ein
> Rechteck.
> Wie kann man möglichst einfach herausfinden, ob der Punkt P
> innerhalb oder außerhalb des Rechteckes liegt?
>
> Mein Lösungsansatz:
> Ich habe mir überlegt mit einem globalen und einem lokalen
> Koordinatensystem zu arbeiten. Das lokale KS würde ich dann
> an die eine Ecke des Rechteckes auf den Punkt A setzten.
> Die x- und y-Achsen lägen dann in Richtung der anliegenden
> Seiten AB und AD. Nun würden ich die Koordinaten aller
> Punkte in Bezug auf das lokale KS transformieren.
> Somit wäre das Problem 2-dimensional. Ich müsste nur noch
> überprüfen, ob die x- & y-Koordinaten des Punktes P kleiner
> oder gleich der Koordinaten des Punktes B, bzw. D sind.
>
> Ist mein Lösungsansatz korrekt/machbar?
Das ist machbar.
>
> Leider weiß ich nicht wie man ein 3-dimensionales KS so
> transformiert, dass dessen Ursprung in einem bestimmten
> Punkt liegt und dessen x- und y-Achsen in die Richtung
> zweier Vektoren (AB und AD) zeigen. Kann mir da jemand
> weiter helfen?
Du suchst eine Abbildung die das leistet:
[mm]f\left(\pmat{0 \\ 0 \\ 0}\right)=\overrightarrow{OA}[/mm]
[mm]f\left(\pmat{1 \\ 0 \\ 0}\right)=\overrightarrow{AB}[/mm]
[mm]f\left(\pmat{0 \\ 1 \\ 0}\right)=\overrightarrow{AD}[/mm]
[mm]f\left(\pmat{0 \\ 0 \\ 1}\right)=\pmat{0 \\ 0 \\ 1}[/mm]
mit dem Ansatz
[mm]f\left(\pmat{u \\ v \\ w}\right)=C*\pmat{u \\ v \\ w}+d[/mm]
solltest Du auf eine Lösung kommen.
>
>
> Ich danke euch, dass ihr meine Frage durchgelesen habt.
>
> Ich wünsche euch einen guten Rutsch ins neue Jahr 2009,
Danke, gleichfalls.
>
> Gruß
>
> Julian
>
> Ich habe diese Frage in keinem Forum auf anderen
> Internetseiten gestellt.
Gruß
MathePower
|
|
|
|
|
Hallo MathePower,
vielen Dank für deine Antwort. Mir schien es erst eine gute Idee zu sein, doch leider bekomme ich kein richtiges Ergebnis heraus. Jetzt weiß ich nicht, ob es an meiner Unfähigkeit oder an dem Ansatz liegt. Hier ist was ich getan habe:
Zum Überprüfen des Ansatzes habe ich mir ein Beispiel ausgedacht. Gegeben sind darin vier Punkte A,B,D und P in einem 2-dimensionalem KS mit folgenden Koordinaten: A(3,5|1), B(3,5|2), D(2,5|1) und P(2,5|3).
Mit Hilfe der oben stehenden Formeln habe ich die Matrix C und den Vektor d ermittelt: [mm] C=\pmat{ -3,5 & -4,5 \\ 0 & -1 }, d=\vektor{3,5 \\ 1}
[/mm]
Nun möchte ich gerne überprüfen, ob bei einer Eingabe der lokalen Koordinaten des Punktes P' die richtigen globalen Koordinaten des Punktes P erscheinen.
lokal: P'(2|1)
global: P(2,5|3)
Ich habe mit folgender Herleitung gearbeitet:
[mm] \overline{AP}=P-A=C\*P'+d
[/mm]
[mm] \Rightarrow P=C\*P'+d+A=\vektor{-4,5 \\ 1}\not=\vektor{2,5 \\ 3}
[/mm]
Ich weiß leider nicht wo der Fehler liegt. Ob nun bei mir oder in den Formeln. Vielleicht habe ich mich auch nur verrechnet. Ich würde mich freuen, wenn sich das jemand mal anschauen würde.
Schöne Grüße,
Julian
|
|
|
|
|
Hallo brokenspine187,
> Hallo MathePower,
>
> vielen Dank für deine Antwort. Mir schien es erst eine gute
> Idee zu sein, doch leider bekomme ich kein richtiges
> Ergebnis heraus. Jetzt weiß ich nicht, ob es an meiner
> Unfähigkeit oder an dem Ansatz liegt. Hier ist was ich
> getan habe:
>
> Zum Überprüfen des Ansatzes habe ich mir ein Beispiel
> ausgedacht. Gegeben sind darin vier Punkte A,B,D und P in
> einem 2-dimensionalem KS mit folgenden Koordinaten:
> A(3,5|1), B(3,5|2), D(2,5|1) und P(2,5|3).
>
> Mit Hilfe der oben stehenden Formeln habe ich die Matrix C
> und den Vektor d ermittelt: [mm]C=\pmat{ -3,5 & -4,5 \\ 0 & -1 }, d=\vektor{3,5 \\ 1}[/mm]
>
> Nun möchte ich gerne überprüfen, ob bei einer Eingabe der
> lokalen Koordinaten des Punktes P' die richtigen globalen
> Koordinaten des Punktes P erscheinen.
> lokal: P'(2|1)
> global: P(2,5|3)
>
> Ich habe mit folgender Herleitung gearbeitet:
> [mm]\overline{AP}=P-A=C\*P'+d[/mm]
Hier mußt Du ansetzen:
[mm]f\left(P'\right)=\overrightarrow{OP}=C*P'+\overrightarrow{OA}[/mm]
>
> [mm]\Rightarrow P=C\*P'+d+A=\vektor{-4,5 \\ 1}\not=\vektor{2,5 \\ 3}[/mm]
>
> Ich weiß leider nicht wo der Fehler liegt. Ob nun bei mir
> oder in den Formeln. Vielleicht habe ich mich auch nur
> verrechnet. Ich würde mich freuen, wenn sich das jemand mal
> anschauen würde.
Der Fehler liegt bei der Matrix C.
Wir haben
[mm]f\left( \ \pmat{0 \\ 0} \ \right)=\pmat{3.5 \\ 1}[/mm]
[mm]f\left( \ \pmat{1 \\ 0} \ \right)=\pmat{3.5 \\ 2}[/mm]
[mm]f\left( \ \pmat{0 \\ 1} \ \right)=\pmat{2.5 \\ 1}[/mm]
Setzen wir mit
[mm]f=C*x+d=\pmat{c_{11} & c_{12} \\ c_{21} & c_{22}}*x+d[/mm] an,
so folgt aus
[mm]f\left( \ \pmat{0 \\ 0} \ \right)=\pmat{3.5 \\ 1} \Rightarrow d=\pmat{3.5 \\ 1}[/mm]
[mm]f\left( \ \pmat{1 \\ 0} \ \right)=\pmat{3.5 \\ 2} \Rightarrow c_{11}=0, \ c_{21}=1[/mm]
[mm]f\left( \ \pmat{0 \\ 1} \ \right)=\pmat{2.5 \\ 1} \Rightarrow c_{12}=-1, \ c_{22}=0[/mm]
Somit ergibt sich:
[mm]f\left(x\right)=\pmat{0 & -1 \\ 1 & 0}*x+\pmat{3.5 \\ 1}[/mm]
>
> Schöne Grüße,
>
> Julian
Gruß
MathePower
|
|
|
|
|
Hey Danke für deine Hilfe. Das war ein blöder Fehler von mir!
Jetzt hats auch geklappt. Jedoch habe ich noch ein wenig im Internet herumgestöbert und bin auf ein elegantere Lösungsmethode gestoßen. Das Problem, das ich habe nennt sich im Englischen PIP-Problem (Point-in-Polygon). Auf dieser Seite (http://local.wasp.uwa.edu.au/~pbourke/geometry/insidepoly/) findet man näheres dazu.
Dort wird auch empfohlen, dass man einfach Vektoren vom Punkt P zu allen Eckpunkten des Polygons erstellen soll. Danach werden die Winkel zwischen allen Vektoren errechnet und addiert. Ist die Winkelsumme nicht gleich [mm] 2\pi, [/mm] dann liegt P nicht im Polygon bzw. nicht in der Ebene, die durch das Polygon beschrieben wird.
Ich denke auf diese Weise kann ich mein Problem gut lösen. Wenn sonst noch Schwierigkeiten auftauchen sollten werde ich mich hier unter einem neuen Thema melden.
Danke nochmal MathePower.
Gruß
Julian
|
|
|
|