![]() |
Abschusswinkel gesucht
Liste der Anhänge anzeigen (Anzahl: 1)
Morgen.
Ich hab grad ein kleines Problem. Sagen wirs mal so: An Punkt A steht ein KI-Gesteuerter... Panzer. An Punkt B befindet sich sein Ziel, das sich mit einer Geschwindigkeit vb bewegt. Der Panzer an Punkt A kann Geschosse der Geschwindigkeit vg verschießen. Gesucht ist jetzt der Punkt c, bei dem Gegner und Geschoss zusammenstoßen bzw. der Abschusswinkel alpha, bei dem sie das tun. Daraus berechnet sich dann noch die Zeit t vom Abschuss bis zum Aufprall. Im Anhang befindet sich eine Skizze. In der Skizze wären A, B, C unsere bekannten Punkte sowie alpha der Abschusswinkel. a wäre der Abstand zwischen Panzer und Gegner. b ist der Weg, den das Geschoss in t zurücklegt. c ist der Weg, den der Gegner in t zurücklegt. a, vb, vg sind gegeben. Jetzt lassen sich folgende Gleichungen aufstellen: b=t*vb c=t*vg Daraus resultierend: b/c=vb/vg Aber wie berechne ich jetzt alpha? |
Re: Abschusswinkel gesucht
Hi,
sorry wenn's etwas wirr wird, hab gerade nur dein Problem überflogen und antworte vermeintlich an der Frage vorbei (warne nur vor, egal, schau einfach mal). Ja, Du hast für deine beiden Bewegungen einen Startpunkt und eine Geschwindigkeit. Daraus kannst Du natürlich leicht eine Geradengleichung aufstellen und den Schnittpunkt (Zeitpunkt) berechnen. Wichtig ist es natürlich, dass überhaupt einen Schnittpunkt gibt (aber der Abschusswinkel dürfte kaum parallel zum Fahrzeug sein). Jedenfalls kannst Du über das Gleichsetzen der Gleichungen die beiden Bahnen (Bewegung Fahrzeug und Bewegung Geschoss) berechnen. Diese Bahnen kannst Du wiederum einfach als Vektoren auffassen und den Winkel zwischen zwei Vektoren kann man leicht über das Skalar-Produkt bestimmen. Dieses war (prüf es lieber noch mal nach) grob etwas wie: v(a) * v(b) = |v(a)| * |v(b)| * cos(alpha), mit v(x) = Vektor x (halt kein Vektorpfeil zur Verfügung). Ja, daraus solltest Du dann natürlich auch den Winkel bestimmen können. Wenn ich die Frage richtig verstanden habe, möchtest Du aber überhaupt erstmal einen Abschusswinkel bestimmen, so dass das Geschoss und das Fahrzeug einander treffen? Das ganze sollte immer dann klappen, wenn das Geschoss schneller ist als das Fahrzeug, unbegrenzt weit fliegt und einen nicht paralleler Winkel gewählt wird. Ja, hoffe es hilft weiter, Gruß Der Unwissende |
Re: Abschusswinkel gesucht
Geschosse fliegen eine Parabelbahn. Das wurde bislang noch nicht berücksichtigt. Ist vg gegeben oder in der Gleichung gesucht?
|
Re: Abschusswinkel gesucht
@Jelly: vg ist gegeben. Ich gehe vereinfacht von einer konstanten Geschwindigkeit und gerader Schussbahn aus. Das "Geschoss" ist kein Sprengkopf, sondern eher eine großkalibrige Kugel, die mit hoher Geschwindigkeit und geringer Luftreibung fliegt.
EDIT: @Der_Unwissende: Wie genau? *kratz* v(a)*v(b)? Soweit ich weiß, lassen sich Vektoren im Allgemeinen nicht untereinander multplizieren. |
Re: Abschusswinkel gesucht
Zitat:
Zitat:
Und ums ganz verwirrend zu machen. Es gibt sogar 2 Verktormultiplikationen: Neben dem Skalarprodukt gibt es dann auch noch das Vektorprodukt, das allerdings ausschliesslich im 3D Raum definiert ist. Aber zum eigentlichen Problem. Vielleicht benötige ich einfach mal eine detailliertere Beschreibung, denn so wie bislang beschrieben macht die Aufgabe keinen Sinn. |
Re: Abschusswinkel gesucht
Da programmierst du eine FFT und scheiterst an einer einfachen Wurfparabel :gruebel: ?
Als KDV darf ich dir eigentlich nicht verraten, wie sowas geht :mrgreen: Aber gehe doch mal über eine gleichmäßig beschleunigte Bewegung in vertikaler Richtung mit Startgeschwindigkeit! |
Re: Abschusswinkel gesucht
So, jetzt noch einmal:
Ein Vektor v lässt sich multiplizieren mit einem Skalar a. Ein Vektor lässt sich allgemein jedoch nicht mit einem anderen Vektor w multiplizieren. Bei einigen Vektorräumen, z.B. bei Matrizen oder den komplexen Zahlen geht das zwar, aber bei einem Vektorraum allgemein nicht. So steht das zumindest in meinem LinAlg-Studienbrief. Ich will nicht den vertikalen Abschusswinkel, sondern den Abschusswinkel auf der horizontalen Ebene. Der vertikale Winkel lässt sich, dank linearer Flugbahn des Projektils, einfach mit den trigonometrischen Funktionen berechnen. Der horizontale vermutlich auch, ich komm nur grad nicht drauf. |
Re: Abschusswinkel gesucht
Zitat:
Zitat:
![]() Edit: Und was denkst du, was man mit Vektoren und Matritzen noch so alles anstellen kann... |
Re: Abschusswinkel gesucht
![]() Zitat:
Zitat:
|
Re: Abschusswinkel gesucht
Lassen wir das mit Matritzen :mrgreen: und Vektoren :mrgreen: :mrgreen:
Ich glaube, ich habe meinen Verständnissfehler gefunden: Deine Skizze gilt als von oben betrachtet. Richtig? Du interessierst dich demnach gar nicht für die Flughöhe (auch nicht indirekt)? |
Re: Abschusswinkel gesucht
Genau.
|
Re: Abschusswinkel gesucht
Musst du dann nicht noch den Winkel zwischen a und c definieren?
|
Re: Abschusswinkel gesucht
*kratz*
Äh... nein? Der ist doch durch das Verhältnis b/c und die Strecke a festgelegt. |
Re: Abschusswinkel gesucht
Wenn nur die Seiten a, b und c bekannt sind:
α = arccos ((b^2 + c^2 − a^2) / (2b*c)) β = arccos ((a^2 + c^2 − b^2) / (2a*c)) γ = arccos ((a^2 + b^2 − c^2) ÷ (2a*b)) Aus: -> ![]() Oder habe ich das auch falsch verstanden? Grüße Klaus |
Re: Abschusswinkel gesucht
Ähm... Das gilt nur im rechtwinkligen Dreieck, oder?
|
Re: Abschusswinkel gesucht
Zitat:
Das dürfte ![]() |
Re: Abschusswinkel gesucht
Zitat:
Der Kosinussatz ist eine verallgemeinerte Form des "Pythagoras", mit dem sich die Seiten eines beliebigen Dreiecks berechnen lassen: <Grafik fehlt > Wenn nur die Seiten a, b und c bekannt sind: α = arccos ((b2 + c2 − a2) ÷ (2bc)) β = arccos ((a2 + c2 − b2) ÷ (2ac)) γ = arccos ((a2 + b2 − c2) ÷ (2ab)) Handelt es sich um ein rechtwinkliges Dreieck, so beträgt der Winkel γ 90°. Damit gilt: . Für ein rechtwinkliges Dreieck gilt somit die Formel c2 = a2 + b2 Grüße Klaus |
Re: Abschusswinkel gesucht
|
Re: Abschusswinkel gesucht
Zitat:
Ein Dreieck, dass einem Kongruenzsatz genügt, kann man berechnen. Aber ein dreieck, dass "nur" einem Ähnlichkeitssatz genügt (eigentlich) nicht :gruebel: Abgesehen, davon: Auf welchen Ähnlichkeitssatz spielst du denn an. Wennn ich mir die Dreiecke so bildlich vorstelle, ist da nix ähnlich (da ja "a" konstan bleibt). Edit: Ö-Strichelchen vergessen :oops: |
Re: Abschusswinkel gesucht
Auf den letzten. Und ich will ja nicht das ganze Dreieck, mir reicht prinzipiell schon der Winkel. Und Winkel sind in ähnlichen Dreiecken generell gleich.
|
Re: Abschusswinkel gesucht
Zitat:
Vielleicht solltest du deine Frage eher ![]() |
Re: Abschusswinkel gesucht
*kratz*
Äh Stimmt. :wall: Aber eigentlich müsste es gehen. Kennt ihr diese Weltraumshooter wie Freespace2/Descent? Da gibts immer so eine Vorhalteanzeige. Ist prinzipiell das gleiche Problem, nur in 3D und bei mir in 2D. |
Re: Abschusswinkel gesucht
Zitat:
b=t*vg c=t*vb Zum Rest des Problems: Du kannst die Geradengleichungen für c und b errechnen. Diese lässt du dann schneiden und du hast den Punkt C. Ob in diesem Punkt nun wirklich eine Kollision stattfindet prüfst du, indem du die Zeit t errechnest, die gebraucht wird, bis das Geschoss an diesem Punkt ist. Anschließend kannst du berechnen, wo das Ziel sich nach der Zeit t befindet. Daran lässt sich dann ablesen, ob es eine Kollision gibt. Wenn du den Punkt C hast, dürfte es auch kein Problem darstellen, den Winkel zu errechnen. |
Re: Abschusswinkel gesucht
Zitat:
Aber die kennen bestimmt die Bewegung des Zielobjektes, und damit den Winkel ac. |
Re: Abschusswinkel gesucht
Haaalt, den kenne ich auch (seh ich grad). Das ist kein Problem.
EDIT: Da schlägt jetzt auch der S:s:W-Satz zu. |
Re: Abschusswinkel gesucht
Das Problem ist die berechnung des Punktes C. Hier kann man sich prima der Vektorrechnung bedienen und folgende zwei Gleichungen aufstellen (^bedeutet Vektor. bei Großbuchstaben Ortsvektoren, bei Kleinbuchastaben Richtungsvektoren):
C^=B^+t*b^ C^=A^+t*g^ Diese setzen wir gleich und lösen nach t auf: B^+t*b^=A^+t*g^ t*b^-t*g^=A^-B^ t=(A^-B^)/(b^-g^) diese t setzen wir in eine der beiden Gleichungen ein und erhalten C^ (brauchen wir aber nicht, siehe unten). C^=B^+(A^-B^)/(b^-g^)*g^ Auf diesen Punkt muss der Panzer zielen. Die ganze Winkelrechnerei kann man sich übrigens sparen, wenn diese (dritte) Gleichung in die 2. einsetzt und dann nach g^ umstellt, denn das ist der Richtungsvektor für den Schuss (und wie man aus einem Richtungsvektor einen Winkel errechnet sollte klar sein). Hierbei kann man diese resultierende Gleichung noch in zwei zerlegen, indem man je eine Koordinate benutzt (jeweils immer x und y) |
Re: Abschusswinkel gesucht
Zitat:
|
Re: Abschusswinkel gesucht
Liste der Anhänge anzeigen (Anzahl: 1)
Um mal die Grundlagendiskussion fortzuführen: Ich bin der Meinung das Dreieck ist nicht Eindeutig und lässt sich nicht berechnen. Gegenbeispiel angehängt.
//edit Ist ja auch eigentlich ganz logisch und durch den freien Willen des Gegners bedingt. Er kann frei entscheiden in welche Richtung er mit welcher Geschwindigkeit geht, also kann der Winkel Beta nicht aus dem Verhältniss der Geschwindigkeiten und aus a folgern. Wobei er aus a eh nicht folgen kann da a ja die einzige bekannte Strecke ist. Dein Panzer muss ja unterschiedlich schiessen je nachdem in welche Richtung der Gegner davonläuft --> folglich muss Beta auch (zusammen mit den Geschwindigkeiten) eine Rolle spielen und gegeben sein. |
Re: Abschusswinkel gesucht
Ich habe ja schon längst gesagt, dass der Winkel ac, also die Laufrichtung des Gegners, bekannt ist.
|
Re: Abschusswinkel gesucht
achso dann würde ich jetzt einfach mal sagen: sin(beta)*c = sin(alpha)*b für c ist Weg des Gegners und b ist Weg des Geschosses, also
alpha = sin-1(sin(beta)*c/b) = sin-1(sin(beta)*vg/vb) dann kannst du über ein Differenzial ja sogar den Vertikalen Abschusswinkel und die Energie berechnen... *träum* |
Re: Abschusswinkel gesucht
Hat überhaupt jemand mal meinen Post gelesen?
Ihr braucht für diesen Spass nicht einen Winkel! Die Abschussrichtung gv lässt sich direkt aus den gegebenen Punkten und Vektoren berechnen. Aus dem Vektor gv lässt sich dann diskussionsfrei der Abschusswinkel bestimmen mit cos(gv.x) oder sin(gv.y), je nach Gusto. |
Re: Abschusswinkel gesucht
Zitat:
|
Re: Abschusswinkel gesucht
Zitat:
Jenachdem ob der Gegner jetzt nach oben oder unten (Winkel) fährt brauchst du ein anderes Alpha, also MUSS die Formel zwingend irgendwie das Beta enthalten. |
Re: Abschusswinkel gesucht
@Sidoron: Das Missverständnis liegt wohl darin, dass du, Der_Unwissende und ich dachten, dass es sich vb und vg um Vektoren handelt, die Richtungen also bekannt sind.
@ichbins: Du präsentierst in Beitrag #30 exakt die gleiche Lösung wie sirius in Beitrag #27. |
Re: Abschusswinkel gesucht
na zumindest vb sollte bekannt sein, das ist die Richtung, in der das Ziel fährt. |vb| sollte dann die Geschwindigkeit des Ziels sein. |vg| sollte auch bekannt sein, das ist die Geschwindigkeit des Geschosses. die Richtung von vg wird ja erst berechnet. Im Grund braucht man nur A, B, vb und entweder Betrag oder Richtung von vg.
|
Re: Abschusswinkel gesucht
Was fehlt denn im Moment noch?
Ich meine man hat die Startpunkte von Geschoss (A) und Ziel (B). Das Geschoss entfernt sich von A mit einer konstanten Geschwindigkeit vg. Der Abstand des Geschosses zum Abschusspunkt ist also unabhängig von der Richtung des Schusses. Das Fahrzeug wiederum näher oder entfernt sich vom Abschusspunkt A ebenfalls mit einer konstanten Geschwindigkeit. Hier ist zudem die Richtung bekannt, man kann also leicht den Abstand zwischen dem Fahrzeug zum Zeitpunkt t und dem Punkt A berechnen. Um die Länge des Weges des Geschosses zu berechnen reicht es jetzt also, dass man diese beiden Abstände gleich setzt, oder übersehe ich irgendwas? |
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:13 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz