PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Vektorproblem


nobody
14.12.2004, 15:19
Hi,

Ich hab mir n PCprogramm erstellt. Das Programm stellt ne 3D Umgebung dar, vorab will ich aber erst mal auf mein 2d Problem eingehen.

In diesem Raum befindet sich ein Objekt mit den zugehörigen Koordinaten. Weiter habe ich ne Mauer (Gerade) integriert. Das Objekt bewegt sich mit gleichbleibender Geschwindigkeit vorwärts. Das Objekt kann im Eulerwinkel (360°) gedreht werden (die Mauer auch) und bewegt sich immer in die Richtung, in die es ausgerichtet ist.
Das Problem: Ich habe die Richtung des Objekts z.B. 0° und die der Mauer (hier 90°). Beim Aufprall soll sich die Richtung ändern, also hier bekommt das Objekt dann die 180° Einstellung.
Wenn das Objekt mit 10° aufprallt, dann wird der Winkel in 350° umgewandelt.
Wie muss die Funktion aussehen, die immer den richtigen Winkel ermittelt wenn die Objektrichtung und die der Mauer beliebige Werte im Eulerwinkel annehmen ?
Sollte ich die Winkel besser in Vektoren umwandeln ? Will ich eigentlich vermeiden, aber wenns nicht anders geht, dann halt mit Vektoren.

nobody
15.12.2004, 12:50
Oh, das scheint villeicht doch nicht so einfach zu sein. Dann versuch ichs mit Vectoren. Kann mir jemand verraten wie ich einen Vector an einem Anderen spiegle ( B eide Vektoren sind Einheitsvektoren mit der länge 1 ) ?

nobody
15.12.2004, 12:55
Oh, das scheint villeicht doch nicht so einfach zu sein. Dann versuch ichs mit Vectoren. Kann mir jemand verraten wie ich einen Vector an einem Anderen spiegle ( B eide Vektoren sind Einheitsvektoren mit der länge 1 ) ?

Zunächst: einen Vektor (mit 'k') an einem anderen Vektor spiegeln ist meines Erachtens nach kein mathematisch korrektes Anliegen. Ich nehme mal an, Du meinst, einen Vektor an einer Geraden spiegeln? (Diese Gerade kann ja den anderen Vektor als Richtungsvektor haben.)

Dann: Sprichst Du von R2 oder vom R3? (Im R3 geht das nämlich nicht eindeutig, dort könntest Du höchstens einen Vektor an einer Ebene spiegeln!)


Gruß, Michael

Rosentod
15.12.2004, 12:58
Zu dem was du mit deinem Programm machen möchtest: Könntest du das irgendwie zeichnerisch darstellen? Ich hab's nämlich nicht verstanden.

nobody
15.12.2004, 13:23
...Wie man es im R2 machen kann:


Der Vektor \vec{v} soll an der Geraden g mit dem Richtungseinheitsvektor \vec{rg} gespiegelt werden (Siehe Anhang, 1. Zeichung).

Das kann man wiefolgt machen (siehe Anhang, 2. Zeichnung):
Man zerlegen \vec{v} in die zwei Komponenten \vec{vn} (senkrecht zur Geraden) und \vec{vg} (in Richtung der Geraden).

Es gilt:

\vec{v} = \vec{vn} + \vec{vg}


Dann ist der gespiegelte Vektor

\vec{v'} = -\vec{vn} + \vec{vg}



Es müssen nur die Komponenten ausgerechnet werden. Diese ergeben sich folgendermaßen:

\vec{vg} = (\vec{v}*\vec{rg})*\vec{rg}

und damit

\vec{vn} = \vec{v}-\vec{rg}



Gruß, Michael

nobody
15.12.2004, 14:18
Oh ja, das ist es. Die Zeichnung bringt es auf den Punkt und mit der Antwort kann ich was anfangen. Herzlichen dank. Und sorry das ich nicht mehr so fit mit den Fachbegriffen bin und danke, dass ihr diese Begriffe eingebunden habt.

Rosentod
15.12.2004, 14:29
Ah, ich verstehe. Das Zauberwort heißt Reflexion.

kirdie
10.08.2006, 09:54
Danke, so toll habe ich das noch nie erklärt bekommen. Kann ich das im R3 ab einer Ebene analog machen?

Pomplito
10.08.2006, 13:26
Ja das geht, du brauchst lediglich den Normalenvektor der Ebene und zerlegst deinen Ursprungsvektor genau wie beschrieben in beide Komponenten...