# abschusswinkel berechnen



## Romep (17. Apr 2008)

Hallo,

ich habe ein kleines panzerspiel geschrieben, wie man es auch im wii play findet. nun habe ich allerdings ein problem bei der KI.
ich möchte berechnen, in welche richtung der panzer schiessen muss, wenn sich der gegner bewegt.

ich habe also gegeben:

vektoren für die positionen der beiden panzer
richtungsvektor des gegners
geschwindigkeit des projektils

meine idee war, zwei geradengleichungen aufzustellen und diese gleich zu setzen. dabei hab ich dann aber nachher das problem, dass ich 2 unbekannte habe. zum einen den gesuchten schussvektor für das projektil und eben den parameter der geradengleichungen. hat jemand ne idee wie man das anders lösen kann oder wo ich einen fehler gemacht habe?


P.S. man schau einfach von oben auf die szene, also interessiert nur die richtung in der das projektil abgefeuert werden muss. weiterhin wird der einfachkeit halber die erdanziehungskraft ausser acht gelassen.


----------



## Illuvatar (17. Apr 2008)

Hm das hat mich interessiert... ich hab mal bisschen rumgerechnet, krieg aber auch kein vollständiges Ergebnis hin. Vielleicht hilft es dir aber trotzdem weiter / kann jemand anderes an der Stelle weiterhelfen.

Damit ich die Formeln gescheit darstellen kann, das Ganze was ich gemacht hab im folgenden als Bild:





(Der Bildinhalt als Word-2007-Datei)


----------



## Marco13 (17. Apr 2008)

EDIT: Ich nehm' den Beitrag hier mal raus, sorry...


----------



## Lulumann6 (17. Apr 2008)

Marcos idee finde ich gut, aber ich möchte an Illuvatars Idee anknüpfen



ich würde sagen ein winkel reicht nicht, man muss für das projektil einen richtungsvektor verwenden, von dem der betrag des richtungsvektors bekannt ist (weil das projektil immer die gleiche geschwindigkeit hat)
So jetzt haben wir 2 gleichungen mit zwei unbekannten (Vp1 und Vp2). daraus sollte man die unbekannten errechnen können.


----------



## Romep (18. Apr 2008)

Das kann ich wohl leider nicht :-( Der Term wird für meine Fähigkeiten einfach zu kompliziert.


----------



## Marco13 (18. Apr 2008)

Lulumann6 hat gesagt.:
			
		

> So jetzt haben wir 2 gleichungen mit zwei unbekannten (Vp1 und Vp2). daraus sollte man die unbekannten errechnen können.


t ist auch unbekannt.


----------



## Lulumann6 (18. Apr 2008)

t ist nicht in den zwei gleichungen, außerdem braucht man t nicht, weil 1t = 1update im spiel ist, d.h. t ist nur die variable für den vektor des projektils. und falls man t doch benötigt wäre es nachdem man den richtungsvektor ausgerechnet hat ein kinderspiel t auch noch außzurechnen.


----------



## Marco13 (18. Apr 2008)

Ich weiß nicht genau, ob das ein Witz sein sollte  ???:L aber falls nicht: Die Position des Ziels zum Zeitpunkt des Treffers ist (weil es sich bewegt) ja erst dann bekannt, wenn man weiß, zu welchem Zeitpunkt man es treffen wird. Und der Zeitpunkt, zu dem man es treffen wird, hängt (weil sich das Projektil mit einer endlichen Geschwindigkeit bewegt) davon ab, an welcher Position man es treffen wird. 

EDIT: Ich nehm' hier mal einen Teil raus, sorry...


----------



## Illuvatar (18. Apr 2008)

> außerdem braucht man t nicht, weil 1t = 1update im spiel ist, d.h. t ist nur die variable für den vektor des projektils. und falls man t doch benötigt wäre es nachdem man den richtungsvektor ausgerechnet hat ein kinderspiel t auch noch außzurechnen.


Das verstehe ich irgendwie auch nicht, was es bedeuten soll, klingt mir stark nach Unsinn. Aber


> t ist nicht in den zwei gleichungen


Das stimmt, und ich kann in der Rechnung von Lulumann6 keinen Fehler finden - und am Ende steht ein wirklich einfaches Gleichungssystem.
Marcos Lösung hab ich btw noch nicht mehr als überflogen, ist aber auf jeden Fall brauchbar, würd ich mal sagen. Wär jetzt interessant ob auch Lulumanns Gleichungen stimmige Lösungen liefern - das wäre dann nämlich schon einfacher.


----------



## Marco13 (18. Apr 2008)

Illuvatar hat gesagt.:
			
		

> Wär jetzt interessant ob auch Lulumanns Gleichungen stimmige Lösungen liefern ...


Sowohl bei meinem Ansatz, als auch bei Lulumann6s steht der Beweis dafür noch aus... Bei letzterem aber auch jegliches Indiz... :wink:



> ... das wäre dann nämlich schon einfacher.



Sicher? ???:L Naja... Wer es mal implementieren will: Hier ist die Lösung, die rauskommt, wenn man das Gleichungssystem nach vp1 und vp2 auflöst:

http://www.java-forum.org/de/userfiles/user8645/Mathematica_new.cgi.htm

("Ja", da kommen komplexe Zahlen drin vor, und "Nein", ich glaube auch nicht, dass das Sinn macht :wink: )

EDIT: Vielleicht so als Nachtrag: Es ist eben KEIN "einfaches" (Lineares) Gleichungssystem, sondern eins, wo Quadrate drin vorkommen. Das mit dem "mal kurz nach irgendwas auflösen" ist darum nicht ganz so leicht, wie bei einem Linearen Gleichungssystem, für das die ganzen Regeln ("n Gleichungen bei n Unbekannten -> Lösbar" usw) gelten.


----------



## Lulumann6 (18. Apr 2008)

Wenn das gleichungssystem nur wirklich so einfach wäre...
Mein Ergebnis (natürlich ohne gewähr da ich sehr warscheinlich irgendwo einen fehler gemacht habe  :bae: )



Ach übrigens bei meiner lösung gibt es auch jenachdem 0, 1, oder 2 möglichkeiten.


----------



## Marco13 (18. Apr 2008)

Ach ja, womit sich mein obiger Nachtrag erübrigt hat: Wenn man das ganze mal "expandiert", kommt wohl sowas raus, wie das verlinkte :wink:


----------

