Autor Beitrag
Xion
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
EE-Maler
Beiträge: 1952
Erhaltene Danke: 128

Windows XP
Delphi (2005, SmartInspect), SQL, Lua, Java (Eclipse), C++ (Visual Studio 2010, Qt Creator), Python (Blender), Prolog (SWIProlog), Haskell (ghci)
BeitragVerfasst: So 17.02.08 10:31 
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:
ausblenden 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:

ausblenden 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

ausblenden 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.

_________________
a broken heart is like a broken window - it'll never heal
In einem gut regierten Land ist Armut eine Schande, in einem schlecht regierten Reichtum. (Konfuzius)


Zuletzt bearbeitet von Xion am So 17.02.08 11:28, insgesamt 1-mal bearbeitet
delfiphan
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2684
Erhaltene Danke: 32



BeitragVerfasst: So 17.02.08 11:25 
Woher kommt Y und Z im Resultat?
Xion Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
EE-Maler
Beiträge: 1952
Erhaltene Danke: 128

Windows XP
Delphi (2005, SmartInspect), SQL, Lua, Java (Eclipse), C++ (Visual Studio 2010, Qt Creator), Python (Blender), Prolog (SWIProlog), Haskell (ghci)
BeitragVerfasst: So 17.02.08 11: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

_________________
a broken heart is like a broken window - it'll never heal
In einem gut regierten Land ist Armut eine Schande, in einem schlecht regierten Reichtum. (Konfuzius)
Kha
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 3803
Erhaltene Danke: 176

Arch Linux
Python, C, C++ (vim)
BeitragVerfasst: So 17.02.08 13:24 
Zitat:
ausblenden Quelltext
1:
|a(v2*v2Betrag-v1*v1Betrag)|=r1+r2					

Sollte das nicht
ausblenden 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
EE-Maler
Beiträge: 1952
Erhaltene Danke: 128

Windows XP
Delphi (2005, SmartInspect), SQL, Lua, Java (Eclipse), C++ (Visual Studio 2010, Qt Creator), Python (Blender), Prolog (SWIProlog), Haskell (ghci)
BeitragVerfasst: So 17.02.08 13:34 
user profile iconKhabarakh hat folgendes geschrieben:
Zitat:
ausblenden Quelltext
1:
|a(v2*v2Betrag-v1*v1Betrag)|=r1+r2					

Sollte das nicht
ausblenden Quelltext
1:
| Pos2-Pos1+a(v2*v2Betrag-v1*v1Betrag) | = r1+r2					

heißen?

hmm, ich dachte nein...bin mir da aber unsicher.

_________________
a broken heart is like a broken window - it'll never heal
In einem gut regierten Land ist Armut eine Schande, in einem schlecht regierten Reichtum. (Konfuzius)