Ahh.
Ich dachte das wäre der Punkt absolut zum Koordinatenursprung...
Also dann.
Der Geschwindigkeitsvektor ist (XSpd | YSpd).
Die Senkrechte auf die Ebene wäre als Vektor dann (AtPoint.X | AtPoint.Y).
Der Cosinus des Winkels zwischen zwei Vektoren ist das Skalarprodukt dividiert durch das Produkt der Beträge:
Quelltext
1:
| cos(v1, v2) = (v1 * v2) / (|v1| * |v2|) |
In unseren Punkten ausgedrückt also:
Quelltext
1:
| cos(v1, v2) = (XSpd * AtPoint.X + YSpd * AtPoint.Y) / (sqrt(XSpd² + YSpd²) * sqrt(AtPoint.X² + AtPoint.Y²)) |
(Der eigentliche Winkel in Grad ist also der Arcuscosinus davon

)
Nu hat man den Winkel (zumindest wenn ich mich nicht irgendwo vertan hab') und kann damit den Asutrittsvektor bestimmen, dessen Komponenten die neuen Werte für XSpd und YSpd sind.
Aber wie man jetzt einen Vektor dreht, weiß ich nicht. Aber ich versuch's mal rauszukriegen

Your computer is designed to become slower and more unreliable over time, so you have to upgrade. But if you'd like some false hope, I can tell you how to defragment your disk.