Entwickler-Ecke
Algorithmen, Optimierung und Assembler - Kollission von Bällen
Xion - So 17.02.08 09:31
Titel: Kollission von Bällen
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.
delfiphan - So 17.02.08 10:25
Woher kommt Y und Z im Resultat?
Xion - So 17.02.08 10:27
also, der Betrag eines Vektors = sqrt(v.x²+v.y²+v.z²) (Pythagoras)
somit steht Y für (v2.Y*v2Betrag-v1.Y*v1Betrag). (Z analog) Wollte das nur aus übersichtlichkeit nicht noch reinschreiben ;)
Also Y und Z sind immer analog zu dem X-Term davor
Kha - So 17.02.08 12:24
| Zitat: |
Quelltext 1:
| |a(v2*v2Betrag-v1*v1Betrag)|=r1+r2 | |
Sollte das nicht
Quelltext
1:
| | Pos2-Pos1+a(v2*v2Betrag-v1*v1Betrag) | = r1+r2 |
heißen? Außerdem musst du a² als |a| aus der Wurzel herausziehen.
Xion - So 17.02.08 12:34
Khabarakh hat folgendes geschrieben: |
| Zitat: | Quelltext 1:
| |a(v2*v2Betrag-v1*v1Betrag)|=r1+r2 | |
Sollte das nicht
Quelltext 1:
| | Pos2-Pos1+a(v2*v2Betrag-v1*v1Betrag) | = r1+r2 |
heißen? |
hmm, ich dachte nein...bin mir da aber unsicher.
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!