JLI Spieleprogrammierung Foren-Übersicht JLI Spieleprogrammierung

 
 FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen 
 medals.php?sid=0bc0e86ce3a9a1fce4ec5451cd3d1533Medaillen   RegistrierenRegistrieren   ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin 

Vektorrechnung: Auto fährt gegen Wand

 
Neues Thema eröffnen   Neue Antwort erstellen    JLI Spieleprogrammierung Foren-Übersicht -> Fragen, Antworten und Kritik
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
Jonathan_Klein
Living Legend


Alter: 37
Anmeldedatum: 17.02.2003
Beiträge: 3433
Wohnort: Siegerland
Medaillen: Keine

BeitragVerfasst am: 05.05.2004, 15:56    Titel: Vektorrechnung: Auto fährt gegen Wand Antworten mit Zitat

Ich programmierer gerade ein Rennspiel. Für die Kollision mit Wänden hatte ich mir gedacht, den Winkel zwischen der Autobewegung und der Wand zu berechnen, und wenn dieser kleiner als 45 Grad istdas Auto mehr oder weniger(hängt dann vom Winkel ab) abzubremsen und paralel zur Wand weiterfahren lassen, und wenn er größer ist, das auto anzuhalten.
Dies ist ja in etwa realistisch, da das Auto, wenn es frontal gegen eine Wand fährt ja auch stehen bleiben wüürde. Schrappt es allerdings nur an der Wand entlang verleiert es nur etwas Geschwindigkeit und das natürlich auch abhängig vom Bewegungswinkel. Das Auto muss anschließend aber paralel zur Wand fahren, da es sonst ja durch sie hindurch fahren würde, wenn ich nur die Geschwindigkeit verringern würde.

So da jetzt jeder hoffentlich kapiert hat, wie ich mir das vorstelle, kann ich ja jezt mein problem beschreiben:

Das Auto ist folgendermasen definiert:
Position (x, y)
Fahrrichtung (Winkel zwischen 0 u. 360 Grad)
Geschwindigkeit

Die Wand ist so definiert:
Startpunkte (x, y)
Endpunkt (x, y)

Hei, da kommt Freude auf. Ich hab nämlich ziemlich wenig Ahnung von Vektorrechnung, und das dumme ist, das ich ja einigemale Vektoren in winkel umrechnen muss und wahrscheinlich auch umgekehrt. Ich glaub man kann einiges mit Sinus und Kosinus und deren Umkehrfunktionen machen, aber so ganz blick ich da nicht durch.
Da die x und y 's ja absulute Koordinaten sind, muss ich die Vektoren zwischendurch wahrscheinlich auch normalsieren oder so.

Naja, kennt sich jemand damit aus oder kann mir jemand sagen wo man so was lernt. So nen kleiner Internetlink oder so (aber am besten einer wofür man kein Abitur braucht, bin erst in der 10)
_________________
https://jonathank.de/games/
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Chewie
Super JLI'ler



Anmeldedatum: 17.07.2003
Beiträge: 382

Medaillen: Keine

BeitragVerfasst am: 06.05.2004, 18:04    Titel: Antworten mit Zitat

aus eigener erfahrung kann ich dir nur raten: lass das mit dem autorennspiel Wink ausser, du willst es ganz primitiv haben, aber es schaut nicht so aus, nach deiner kollisionsschilderung. ich hab mir mal die berechnungen für ein 'realistischeres' fahrverhalten angesehen...da wird einem schlecht.

solltest du es doch wagen: was weißt du von vektoren? du solltest auf die richtungsangabe in grad verzichten und statt dessen einen richtungsvektor nehmen...ist dann leichter, den an der wand entlang zu orientieren.
im spiel checks du dann, ob die neue position hinter der wand ist, wenn ja mußt du das auto mal zurückversetzen, dann nimmst du dir richtungsvektor und vektor wandAB her und berechnest dir den winkel mit dem punktprodukt...ich hab das hier schonmal versucht zu erklären, such mal danach oder schau z.B. hier.
und wenn du dann den winkel hast, wirds erst richtig lustig, das überlaß ich mal dir Wink
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Jonathan_Klein
Living Legend


Alter: 37
Anmeldedatum: 17.02.2003
Beiträge: 3433
Wohnort: Siegerland
Medaillen: Keine

BeitragVerfasst am: 07.05.2004, 10:20    Titel: Antworten mit Zitat

Ich hab mir jetzt ein neues Buch gekauft: 3DSpieleprogrammierung von David Scherfgen.
Da ist am Anfang ein Kapitel über Vektorrechnung. Ich denke, damit könnte ich es vieleicht schaffen. Sind nämlich ziemlich viele Funktionen (Winkel zwischen 2 Vektoren usw.) beschrieben.
_________________
https://jonathank.de/games/
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Hazel
JLI MVP
JLI MVP


Alter: 39
Anmeldedatum: 19.07.2002
Beiträge: 1761

Medaillen: Keine

BeitragVerfasst am: 07.05.2004, 10:49    Titel: Antworten mit Zitat

Zitat:
abzubremsen und paralel zur Wand weiterfahren lassen


Meinst du das Auto soll gegen die Wand ausgerichtet werden(unrealistisch) oder es soll die Ausrichtung beibehalten und an der Wand entlangschleifen? Das ist ziemlich einfach zu erreichen. Wenn du willst, dass ich dir helfen dann schreib mal was dir alles zur Verfügung steht(Levelgeometrie etc, wie ist alles aufgebaut..)
_________________
*click* Dabuu!?
Twitter: http://twitter.com/Ollie_R
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Jonathan_Klein
Living Legend


Alter: 37
Anmeldedatum: 17.02.2003
Beiträge: 3433
Wohnort: Siegerland
Medaillen: Keine

BeitragVerfasst am: 08.05.2004, 15:08    Titel: Antworten mit Zitat

Die Levels sind mithilfe von Linien aufgebaut. jede besteht aus einer XY Start Position und einer XYEndposition. Ich habs jetzt geschafft zu testen ob das Auto die Wand berührt oder nicht (mithilfe einer Linie-Kreis Kollisionsabfrage). Jee Wand soll auserdem noch ihren eigenen Winkel speichern (kann man ja aus den Koordinaten der Start und Endpunkte irgendwie berechnen). Wenn ich den Fahrwinkel des Autos vom Richtungswinkel der Wand abzieh, kann ich also den Einschlagswinkel feststellen und dementsprechend reagieren. Im Moment bleibt das Auto bei einem zu steilen Winkel (zwischen 45 und 135 Grad) stehen. Ist er flacher, richtet es sich nach der Wand aus und fährt weiter(mit vermindertet Gewschwindigkeit).
Mein einziges Problem ist zur Zeit, den Winkel der Wand zu berechnen. Also aus den 4 Koordinaten (StartX, StartY, EndX, EndY) einen Winkel zwischen 0 und 360 Grad.
Wäre net wenn mir jemand sagen könnte welche Funktion ich zum berechnen des Winkels brauch. (Ich denke mal ich muss zuerst XStart-XEnd und YStar-YEnd rechen. Aber weiter weiß ich nicht)
_________________
https://jonathank.de/games/
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
=]Mid[=]Night[=
Super JLI'ler



Anmeldedatum: 20.11.2002
Beiträge: 380
Wohnort: Aachen
Medaillen: Keine

BeitragVerfasst am: 08.05.2004, 15:42    Titel: Antworten mit Zitat

(y2 - y1) / (x2 - x1) ergibt die Steigung der Strecke.

atan((y2 - y1) / (x2 - x1)) gibt den winkel der strecke im bogenmaß zurück, den du dann noch in grad umrechnen kannst:
atan((y2 - y1) / (x2 - x1)) * PI / 180
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Chewie
Super JLI'ler



Anmeldedatum: 17.07.2003
Beiträge: 382

Medaillen: Keine

BeitragVerfasst am: 08.05.2004, 15:55    Titel: Antworten mit Zitat

oder eben mit dem punktprodukt, steht eh im buch vom scherfgen drinnen.
vDirWand = vB - vA;
vDirX = Vec(1.0f, 0.0f);
winkel = acos(Punktprod(vDirWand, vDirX));
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
xardias
JLI Master


Alter: 38
Anmeldedatum: 28.12.2003
Beiträge: 804
Wohnort: Palo Alto, CA
Medaillen: Keine

BeitragVerfasst am: 08.05.2004, 18:03    Titel: Antworten mit Zitat

also ich glaube nicht, dass das sooo einfach ist...

Hier ein Artikel über Contact Physics:
http://www.gamasutra.com/resource_guide/20030121/kennedy_01.shtml

und hier eine ganze Artikelserie über Racing Physics:
http://gamedev.net/reference/list.asp?categoryid=28#39
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    JLI Spieleprogrammierung Foren-Übersicht -> Fragen, Antworten und Kritik Alle Zeiten sind GMT
Seite 1 von 1

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.


Powered by phpBB © 2001, 2005 phpBB Group
Deutsche Übersetzung von phpBB.de

Impressum