Jens B.
Erfahrenes Mitglied
Einfallswinkel = Ausfallswinkel (Flash AS3)
Tag
ich arbeite grade an einer Funktion, mit der ich einen Vektor (im Anhang rot) nach dem Prinzip Einfallswinkel = Ausfallswinkel "reflektieren" kann. Das ist recht simpel, wenn man den Vektor, an dem man den Ausgangsvektor reflektieren möchte, gegeben hat - das ist bei mir aber nicht so. Ich habe einen Vektor, der rechtwinklig zu diesem "Spiegelvektor" ist (im Bild rot).
Da meine Berechnungen auf dem Winkel zur x-Achse beruhen (atan2 berechnet den Winkel zur x-Achse gegen den Uhrzeigersinn) dachte ich mir, dass ich einfach ein (PI / 2) addieren kann, um den Vektor quasi um 90° zu drehen. Soweit so gut, die Funktion lieferte aber nicht die gewünschten Ergebnisse. Also habe ich alternativ mit einer Drehmatrix den Vektor gedreht und bekomme dort verschiedene Ergebnisse, die aber auch immernoch nicht richtige Ergebnisse liefern. Wahrscheinlich sitze ich schon zu lang davor, um den Fehler zu entdecken. Hier der Code (sehr vereinfacht, damit nicht nur Flasher ihn lesen können
)
Es geht also um die Zeilen mit wt und w2 - eigentlich müssten die doch gleich sein, oder sich zumindest genau um PI unterscheiden? Keine von beiden liefert richtige Ergebnisse, mit dem entsprechenden Vektor gegeben hingegen funktioniert der Code so.
Danke für eure Hilfe
jens
Tag
ich arbeite grade an einer Funktion, mit der ich einen Vektor (im Anhang rot) nach dem Prinzip Einfallswinkel = Ausfallswinkel "reflektieren" kann. Das ist recht simpel, wenn man den Vektor, an dem man den Ausgangsvektor reflektieren möchte, gegeben hat - das ist bei mir aber nicht so. Ich habe einen Vektor, der rechtwinklig zu diesem "Spiegelvektor" ist (im Bild rot).
Da meine Berechnungen auf dem Winkel zur x-Achse beruhen (atan2 berechnet den Winkel zur x-Achse gegen den Uhrzeigersinn) dachte ich mir, dass ich einfach ein (PI / 2) addieren kann, um den Vektor quasi um 90° zu drehen. Soweit so gut, die Funktion lieferte aber nicht die gewünschten Ergebnisse. Also habe ich alternativ mit einer Drehmatrix den Vektor gedreht und bekomme dort verschiedene Ergebnisse, die aber auch immernoch nicht richtige Ergebnisse liefern. Wahrscheinlich sitze ich schon zu lang davor, um den Fehler zu entdecken. Hier der Code (sehr vereinfacht, damit nicht nur Flasher ihn lesen können

Code:
// Ändert die Vektoren von Kugeln nach einer Kollision entsprechend dem Prinzip Einfallswinkel = Ausfallswinkel
function einfall(a, p, flag) {
// atan2 muss man erst y, dann x übergeben...
w1 = atan2(a.y, a.x);
wt = atan2(p.x * sin(90) - p.y * cos(90), p.x * cos(90) - p.y * sin(90));
w2 = atan2(p.y, p.x) + (PI / 2);
var w = w2+w2-w1;
neu.x = sin(w);
neu.y = cos(w);
}
Es geht also um die Zeilen mit wt und w2 - eigentlich müssten die doch gleich sein, oder sich zumindest genau um PI unterscheiden? Keine von beiden liefert richtige Ergebnisse, mit dem entsprechenden Vektor gegeben hingegen funktioniert der Code so.
Danke für eure Hilfe
jens
Anhänge
Zuletzt bearbeitet: