Hi.
Also mal vereinfacht:
Ich habe 2 Bälle, diese bewegen sich in einem leeren Raum. Jetzt will ich herausfinden, wann sie sich treffen (wenn überhaupt). Das ist eigentlich schon alles, danach komm ich dann schon weiter.
Gegeben:
Quelltext
1: 2: 3: 4:
| v1: Geschwindigkeit von BallA (normiert) Pos1: Position von BallA r1: Radius von BallA v1Betrag: Länge von v1 |
Ball2 analog.
So jetzt setze ich folgendermaßen an:
Quelltext
1: 2:
| g=Pos1+a*v1*v1Betrag h=Pos2+b*v2*v2Betrag |
da sich die beiden Bälle nach der gleichen Zeit treffen sollen ist a=b
Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10:
| gh=(Pos2+a*v2*v2Betrag)-(Pos1+a*v1*v1Betrag) //Differenzvektor der "allgemeinen Geradenpunkte" gh=(Pos2-Pos1)+a(v2*v2Betrag-v1*v1Betrag)
|gh|=r1+r2 //Der Differenzvektor muss so lang sein wie beide Radien
|a(v2*v2Betrag-v1*v1Betrag)|=r1+r2 sqrt(a(v2.X*v2Betrag-v1.X*v1Betrag)*a(v2.X*v2Betrag-v1.X*v1Betrag)+Y²+Z²)=r1+r2
a*sqrt((v2.X*v2Betrag-v1.X*v1Betrag)²+Y²+Z²)=r1+r2 a=(r1+r2)/sqrt((v2.X*v2Betrag-v1.X*v1Betrag)²+Y²+Z²) |
so, Problem gelöst sollte man meinen. Allerdings ist das Ergebniss völliger Unsinn und außerdem gibt es ja sehr viele Punkte, in denen die Geraden genau diesen Abstand voneinander haben.
Wo ist da nur der Fehler? Scheint fast so, als sei mein Ansatz schon falsch.