AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Ballflug bei Tennisspiel

Ein Thema von Yheeky · begonnen am 28. Mai 2006 · letzter Beitrag vom 10. Jun 2006
Antwort Antwort
Seite 1 von 2  1 2      
Yheeky

Registriert seit: 7. Jun 2002
1.339 Beiträge
 
#1

Ballflug bei Tennisspiel

  Alt 28. Mai 2006, 13:36
Hi,

ich bin gerade dabei ein kleines Tennisspiel zu programmieren und stehe vor dem ersten Problem. Das Spiel soll in einer 2D-Perspektive programmiert werden. Nun bin ich gerade dabei den Ballflug zu realisieren. Eine einfache 2D-Verschiebung (im Bild die rote Linie) funktioniert da ja nicht. Meine Frage ist nun, wie ich die im Bild blau markierte Linie anhand Start- und Zielpunkt berechnet bekomme.
Wäre nett, wenn mir da jemand helfen könne. Danke.
Miniaturansicht angehängter Grafiken
ballflug_590.jpg  
  Mit Zitat antworten Zitat
Benutzerbild von Airblader
Airblader

Registriert seit: 29. Okt 2004
Ort: Geislingen an der Steige
742 Beiträge
 
#2

Re: Ballflug bei Tennisspiel

  Alt 28. Mai 2006, 13:41
Die Perspektive, die du da hast, ist aber nicht wirklich 2D, oder?
Das einfachste dürfte wohl sein, wenn du schlichtweg die 3. Dimension mit reinnimmst und die Höhe mitberechnest.

Eine wirkliche 2D-Perspektive wäre, wenn du direkt von oben drauf schaust.

air
Ingo Bürk
Es nimmt der Augenblick, was Jahre geben.

Johann Wolfgang von Goethe
  Mit Zitat antworten Zitat
Yheeky

Registriert seit: 7. Jun 2002
1.339 Beiträge
 
#3

Re: Ballflug bei Tennisspiel

  Alt 28. Mai 2006, 14:44
Die Perspektive ist nicht 2D aber trotzdem wird das Spiel 2D gezeichnet. Ist ein ähnliches Prinzip wie bei einer ISO-Engine.
Für eine dritte Dimension muss ich ja ein 3D-Objekt erstellen. Möchte aber wenn´s geht bei 2D bleiben.
Vielleicht kennt jemand Spiele wie Smash Court Tennis auf dem SNES früher. Das war auch komplett 2D...also möglich scheint es ja zu sein
  Mit Zitat antworten Zitat
Benutzerbild von JasonDX
JasonDX
(CodeLib-Manager)

Registriert seit: 5. Aug 2004
Ort: München
1.062 Beiträge
 
#4

Re: Ballflug bei Tennisspiel

  Alt 28. Mai 2006, 14:51
Ich sehe da eine Moeglichkeit:
Du zeichnest alles 2D, die Ballflugberechnung laeuft im Hintergrund aber in 3D. Sprich: Der Ball erhaelt eine z-Koordinate. Abhaengig der 3D-Position des Balles, und des Blickwinkels kannst du dir dann die Position von 3D auf 2D umrechnen, und damit dann zeichnen.
Einen anderen Ausweg, der das halbwegs elegant und flexibel erledigt seh ich im Moment nicht...

greetz
Mike
Mike
Passion is no replacement for reason
  Mit Zitat antworten Zitat
Yheeky

Registriert seit: 7. Jun 2002
1.339 Beiträge
 
#5

Re: Ballflug bei Tennisspiel

  Alt 28. Mai 2006, 15:03
Zitat von JasonDX:
[...] die Ballflugberechnung laeuft im Hintergrund aber in 3D. [...]
Ja stimmt, das muss ich auf jeden Fall so machen. Der Ball braucht ja noch einen Schatten und deswegen muss ich auch die Höhe des Balles wissen. Danke für diesen Ansatz.

Zitat von JasonDX:
Der Ball erhaelt eine z-Koordinate. Abhaengig der 3D-Position des Balles, und des Blickwinkels kannst du dir dann die Position von 3D auf 2D umrechnen, und damit dann zeichnen.
Das wäre nun das Problem - die Umrechnung. Hat da jemand Erfahrung mit?
  Mit Zitat antworten Zitat
Benutzerbild von DGL-luke
DGL-luke

Registriert seit: 1. Apr 2005
Ort: Bad Tölz
4.149 Beiträge
 
Delphi 2006 Professional
 
#6

Re: Ballflug bei Tennisspiel

  Alt 28. Mai 2006, 15:46
weißt du, wie man eine parabelförmige flugbahn berechnet? solltest du im inet überall finden.

Zur Umrechnung würde ich einfach zur y-koordinate die z-Koordinate mal einen bestimmten faktor dazurechnen... einfach ausprobieren, was für ein faktor da am besten passt.

ansonsten kann man das auch sicher exakt berechnen... irgendwas trinagulares oder so...
Lukas Erlacher
Suche Grafiktablett. Spenden/Gebrauchtangebote willkommen.
Gotteskrieger gesucht!
For it is the chief characteristic of the religion of science that it works. - Isaac Asimov, Foundation I, Buch 1
  Mit Zitat antworten Zitat
Benutzerbild von JasonDX
JasonDX
(CodeLib-Manager)

Registriert seit: 5. Aug 2004
Ort: München
1.062 Beiträge
 
#7

Re: Ballflug bei Tennisspiel

  Alt 28. Mai 2006, 16:07
Zitat von DGL-luke:
ansonsten kann man das auch sicher exakt berechnen... irgendwas trinagulares oder so...
Ja, sowas in die Richtung. Ich hab mir mal schnell ein Blatt Papier unter die Finger gekrallt und was ueberlegt....
Im Eigentlichen reicht dir diese Formel:
Code:
BallPos - (EyePos - BallPos) * (BallPos.Z / (EyePos.Z - BallPos.Z));
(EyePos und BallPos sind Vektoren, die die X, Y und Z-Position von Ball und Auge beinhalten )
Ok, ein bisschen zur Erklaerung: Stell dir einen Strahl vor, der bei deinem Auge startet und durch den Ball geht. Dort, wo der Strahl deinen "Tennisplatz" trifft, musst du den Ball zeichnen. Das zu berechnen ist am end nur Geometrie. (Falls ich dir des genauer erklaeren soll meld dich einfach ) Das Ergebnis ist wiederum ein 3D-Vektor. Allerdings ist dessen Z-Komponente immer 0 (bzw. sollte sie zumindest sein ^^), d.h. den kann man dann fast schon als 2D-Vektor betrachten, denn in X und Y stehen die Koordinaten, wo du den Ball zeichnen musst
Uebrigens: Das Prinzip funktioniert auch mit deinem Schatten: Die Sonne ist der Ausgangspunkt deines Strahles, der wieder durch den Ball verlaeuft. Dort, wo dieser Strahl den Boden trifft, muss der Schatten hin. Is doch einfach, oder?

greetz
Mike
Mike
Passion is no replacement for reason
  Mit Zitat antworten Zitat
Yheeky

Registriert seit: 7. Jun 2002
1.339 Beiträge
 
#8

Re: Ballflug bei Tennisspiel

  Alt 28. Mai 2006, 20:46
Zitat von JasonDX:
Ich hab mir mal schnell ein Blatt Papier unter die Finger gekrallt und was ueberlegt....
Im Eigentlichen reicht dir diese Formel:
Code:
BallPos - (EyePos - BallPos) * (BallPos.Z / (EyePos.Z - BallPos.Z));
(EyePos und BallPos sind Vektoren, die die X, Y und Z-Position von Ball und Auge beinhalten )
Cool, dass du dir dafür soviel Zeit genommen hast - danke

Also laut deiner Erklärung wäre ja doch die rote Linie die Richtige, aber wie man die blaue hinbekommt, ist ja noch offen. Oder meintest du das irgendwie? Das "BallPos" im Anfang deiner Gleichung benötigt ja auch noch einen bestimmten Vektoren oder?

Zitat von JasonDX:
Uebrigens: Das Prinzip funktioniert auch mit deinem Schatten: Die Sonne ist der Ausgangspunkt deines Strahles, der wieder durch den Ball verlaeuft. Dort, wo dieser Strahl den Boden trifft, muss der Schatten hin. Is doch einfach, oder?
Yep, das verstehe ich auch soweit Jedoch ist das mit dem Ballflug an sich nicht so einfach, vor allem auch, wenn man unterschiedliche Geschwindigkeiten hinbekommen möchte.
  Mit Zitat antworten Zitat
Yheeky

Registriert seit: 7. Jun 2002
1.339 Beiträge
 
#9

Re: Ballflug bei Tennisspiel

  Alt 29. Mai 2006, 01:13
So, ich bin inzwischen schon etwas weiter.
Ich habe mir mal die Mühe gemacht und meine Idee aufgezeichnet:

Bild nun im Anhang

Die lila farbene Linie zeigt den Verlauf des Schattens an, der auf einer Geraden verläuft. Nimmt man die Hälfte dieser Linie (hier die gelbe Linie) so kann man erkennen, dass es sich bei der blauen Linie um eine Parabel handelt. Die beiden schwarzen Eckpunkte sind die Nullstellen. Beispiel hierzu:
Die lila farbene Gerade ist 300 Pixel lang. Rechnet man von der Mitte aus, handelt es sich um die Nullstellen x01=-150 und x02=+150.

So, und nun bräuchte ich mal wieder eure Hilfe. Was ich weiss...die Parabel hat in meinem Fall die Formel y=-x² und ist nach unten geöffnet. Was ich nicht weiss, ist, wie ich die Parabel zeichnen soll. Welchen Punkt soll ich als Ursprung nehmen? Meine 2.Frage wäre: Wie kann ich anhand der Nullstellen nun die Funktion herausfinden?
Miniaturansicht angehängter Grafiken
logik_751.jpg  
  Mit Zitat antworten Zitat
Benutzerbild von fkerber
fkerber
(CodeLib-Manager)

Registriert seit: 9. Jul 2003
Ort: Ensdorf
6.723 Beiträge
 
Delphi XE Professional
 
#10

Re: Ballflug bei Tennisspiel

  Alt 29. Mai 2006, 01:18
Hi!

Könntest du das Bild den Modem-Usern zum Gefallen und vor allem, um späteren Dead-Links vorzubeugen, anhängen? Danke.


Ciao Frederic
Frederic Kerber
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:12 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz