Dipl. User mit summa cum laude
Ich haette da eine Idee ... habs jetzt zwar nicht mathematisch bewiesen, aber es scheint mir logisch ... ^__^
Als erstes brauchst du den Normalenvektor N der Ebene, sprich einen Vektor, der senkrecht auf deiner Ebene steht, und die Laenge 1 hat. In 3D waere eine Moeglichkeit das Kreuzprodukt zweier beliebiger linear unabhaengiger Vektoren in der Ebene zu bilden, und dann mit dem Reziprokwert der Laenge des Normalenvektors zu multiplizieren.
[
Eine Formel sagt mehr als tausend Worte:
N:Normale, A,B zwei Vektoren in der Ebene, die nicht in die selbe Richtung zeigen
Grosse Buchstaben: Vektoren, kleine Buchstaben Zahlen
N.x = A.y*B.z - A.z*B.y;
N.y = B.x*A.z - A.x*B.z;
N.z = A.x*B.y - A.y*B.x:
s = sqrt(N.x*N.x + N.y*N.y + N.z*N.z)
N = 1/s * N = { N.x/s, N.y/s, N.z/s };
]
Als naechstes berechnest du die Projektion P deines Geschwindigkeitvektors auf die Normale N. Das geht ueber ein einfaches Skalarprodukt mit anschliessender skalarer Multiplikation mit dem Normalenvektor. Die Projektion zeigt nun in die selbe Richtung, wie die Normale. Allerdings ist die Laenge jetzt die Urspruengliche Geschwindigkeit multipliziert mit dem Cosinus des eingeschlossenen Winkels.
[
V: Geschwindigkeit, N: Normale von oben, P: Projektion
p = V*N = V.x*N.x + V.y*N.y + V.z*N.z; // Skalarprodukt V dot N
P = p*N = {p*N.x, p*N.y, p*N.z}; // skalare Multiplikation p * N
/* Da der Ball ja von zwei verschiedenen Seiten die Ebene treffen kann, aber der
* Normalenvektor immer gleich ist, eine Spitzfindigkeiten zu beachten.
* -> ist V+P laenger als V, so multiplizieren wir P mit -1
*/
]
Wie man zeigen kann, bildet die Projektion P und die Geschwindigkeit V zwei Seiten eines rechtwinkligen Dreiecks (wegen dem angewendeten Kosinussatz). Die fehlende Steite D ist der Vektor, den wir als naechstes suchen. Wie man leicht sieht, muss V + P - D = 0 sein, da man, wenn man das ganze Dreieck abfaehrt wieder am Ausgangspunkt sein muss. Somit ist D = V + P. Wenn man nun zur Ausgangsposition 2 * D hinzuaddiert, erhaellt man den Pukt Q als Vektor V gespiegelt an P bezueglich des Fusspunktes von P. Wir wollen aber den neuen Geschwindigkeitsvektor W haben, also den Vektor von Q bezueglich des Fusspunktes. Somit ergibt sich, wie man leicht sieht, die Gleichung V + W - 2*D = 0, und unsere neue Geschwindigkeit zu W = 2*D - V
Zusammengefasst mit der Formel fuer D ergibt dies: W = V + 2*P was unsere finale Formel darstellt.
Alles in allem eine recht einfache geometrische Aufgabe.
Bei Fragen stehe ich gerne zur Seite ^__^
Ich bin dann auch mal nicht so geizig und hab ein paar Bildchen gemacht zur Veranschaulichung ...

Geändert von Ineluki (11.05.2005 um 01:11 Uhr)