Idee für Algorithmus für Sprung-Laufbahn

OP #2213338
Lesenswert?
• ▲
▼
Hallo,

gegeben sei ein Feld mit 5x5 Rechtecken. Ich würde nun gerne einen 
"Stein" von einem der Felder auf ein anderes Feld "werfen".

Also soll das "Zielfeld" nicht einfach nur über eine Gerade verbunden 
werden, sondern eher etwas in der Form wie die Flugbahn eines geworfenen 
Steins. Die höchste Stelle des Bogens sollte dabei auch immer etwas über 
dem Zielfeld, bzw. des Startfeldes sein, so dass der Eindruck eines 
Wurfs entsteht.

Hat da evtl. jemand von euch eine Idee, wie man sowas berechnen kann? So 
ein eifaches Springen über SIN / TAN bekomme ich schon hin, aber für 
diesen Fall ist es wohl etwas schwieriger...

Programmiersprache wäre Java, aber C#, PHP etc. wären auch OK.

Vielen Dank für jede konstruktive Idee,
Peter
Angehängte Dateien:
Gast #2213348
Lesenswert?
• ▲
▼
Parabelgleichung:
y = ax² + bx + c

Drei Punkte für x und y einsetzen (Startpunkt, Zielpunkt, Scheitel), die 
Parameter a, b und c ermitteln und dann für alle x-Werte die Höhe 
berechnen.

Scheitel müsst man ausprobiern, ist ein festes Verhältnis zwischen 
x-Abstand der Start- und Zielpunkte und Höhe über dem Mittelwert der 
Höhen von Start- und Zielpunkt. Könnte man aber auch als Lookup-Table 
speichern, nach Höhendifferenz und Wurfweite sortiert.
Gast #2213352
Lesenswert?
• ▲
▼
Dabei handelt es sich um eine Parabel, nicht um eine Kreisbahn, die mit 
Sin/Tan zu erschlagen wäre.

aus dem Physik-Unterricht:

Eine balistische Bahn ist eine überlagerte Bewegung bestehend aus einer 
gleichförmigen x-Komponente und einer gleichmäßig beschleunigten 
(-9,81m/s²) y-Komponente.

Mit dem Wissen sollte dir dein Programm (oder auch Excel) erstklassige 
Wurfbahnen zeichnen können.
Gast #2213354
Lesenswert?
• ▲
▼
das kann man mathematisch korrekt mit vektoren machen

du musst mathematisch korrekt die flugbahn berechnen, dann diese 
funktion aus einem kamerapunkt auf die ebene projizieren(einfach gerade 
durch kamera- und funktions punkt und schnittpunkt gerade ebene 
berechnen)
Gast #2213357
Lesenswert?
• ▲
▼
Ja und um dann Startkoordinate -> Zielkoordinate hinzubekommen musst du 
die Koordinaten dann in die Wurf-Funktion eintragen und voila... 
Übrigens solltest du eine Reihe an gültigen Parabeln dabei 
herausbekommen aus der du dir eine aussuchen kannst (zb könntest du nach 
der suchen, bei der y um 20% größer ist als Start/Zielpunkt)
OP #2213361
Lesenswert?
• ▲
▼
Phantomix schrieb:
> Dabei handelt es sich um eine Parabel, nicht um eine Kreisbahn, die mit
> Sin/Tan zu erschlagen wäre.
>
> aus dem Physik-Unterricht:
>
> Eine balistische Bahn ist eine überlagerte Bewegung bestehend aus einer
> gleichförmigen x-Komponente und einer gleichmäßig beschleunigten
> (-9,81m/s²) y-Komponente.
>
> Mit dem Wissen sollte dir dein Programm (oder auch Excel) erstklassige
> Wurfbahnen zeichnen können.

Hmm, das habe ich verstanden, und ich denke, dass ich so auch schöne 
Bögen berechnen könnte. Allerdings möchte ich im Endeffekt, dass der 
Startpunkt und der Zielpunkt feststeht, sowie der höchste Punkt des 
Bogens.
#2213433
Lesenswert?
• ▲
▼
Peter Pippinger schrieb:
> Hmm, das habe ich verstanden, und ich denke, dass ich so auch schöne
> Bögen berechnen könnte. Allerdings möchte ich im Endeffekt, dass der
> Startpunkt und der Zielpunkt feststeht, sowie der höchste Punkt des
> Bogens.

Was gefällt dir denn an der Methode des zweiten Postings (von "Ich 
(Gast)") nicht? Start, und Endpunkt hast du ja, den Scheitelpunkt kannst 
du dir ja einfach definieren (z.B. in der Mitte und gleich hoch wie die 
Grundstrecke lang).
Gast #2213806
Lesenswert?
• ▲
▼
Hallo,

also ich habe mich jetzt dafür entschieden, die oberen 180° von SIN zu 
nehmen (0, -1, 0).

Als Startpunkte y / Endpunkte y nehme ich dann
die Schnittpunkte von x
bei jeweils y 0.166, 0.166*2, 0.166*3, 0.166*4, 0.166*5, 0.166*6

Den "Abstand" kann ich dann einer gleichmäßigen "Bewegung" von x Start 
nach x Ende durchgehen...

Ich denke, das dürfte super aussehen. Werde das mal umsetzten und die 
Ergebnisse posten...

Viele Grüße,
Peter
Gast #2214150
Lesenswert?
• ▲
▼
Hallo Peter,
wenn man die Wurfbahn nachbilden möchte, sind die Bewegungsgleichungen 
sehr einfach. Die Position muss nur um die Geschwindigkeit erhöht 
werden:
1
// Bewegung des Steines simulieren
2
x += v_x;
3
y += v_y;
4
z += v_z;

und für die Z-Richtung wird zusätzlich die Geschwindigkeit um die 
Erdbeschleunigung erhöht:
1
// Z-Richtung hat zusätzlich die Erdbeschleunigung
2
v_z += -9.81 m/s²;

Wie das ganze dann in JAVA aussieht, hab ich hier mal gezeigt. Ich hab 
zusätzlich noch einen Schatten eingefügt, die X und Y Position ist die 
gleiche, wie die des Steines. Die Höhe (Z) ist jedoch immer 0.

Gerd
Gast #2214649
Lesenswert?
• ▲
▼
Hallo Peter,

Ist eigentlich kein "3D". eher ein "2.5D".

Ich rechne zwar im 3D Raum, übernehme dann für den 2D Raum die x und 
y-Koorindaten und rechne auf die y-Koordinate noch einen Z-Anteil drauf. 
Dadurch entsteht der Eindruck der "Höhe"
1
// Transformation der 3D Koordinaten in den 2D Raum
2
stein_2D_x = stein_3D_x; 
3
stein_2D_y = stein_3D_y-stein_3D_z*3;

Sourcecode ist ja untenhalb des Applets als ZIP angefügt.

Gerd

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren