AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Andorra 2d Billardspiel in 2d
Thema durchsuchen
Ansicht
Themen-Optionen

Andorra 2d Billardspiel in 2d

Ein Thema von Noobmaster · begonnen am 27. Jul 2010 · letzter Beitrag vom 8. Jul 2011
Antwort Antwort
Noobmaster

Registriert seit: 18. Jul 2010
114 Beiträge
 
FreePascal / Lazarus
 
#1

AW: Andorra 2d Billardspiel in 2d

  Alt 4. Aug 2010, 12:52
Danke, manchmal sieht man vor lauter Bäumen den Wald nicht mehr
  Mit Zitat antworten Zitat
Noobmaster

Registriert seit: 18. Jul 2010
114 Beiträge
 
FreePascal / Lazarus
 
#2

AW: Andorra 2d Billardspiel in 2d

  Alt 5. Aug 2010, 16:36
Hi, habe ein neues Problem, aber weil es immer noch mit dem Billardspiel zu tun hat, schreibe ich meine Frage hier hin.
Ich bin bei den Kugelkollisionen angekommen. Das Problem für mich ist jetzt sehr schwer zu beschreiben. Wann eine Kugel von einer anderen getroffen wird brauche ich selber nicht zu bestimmten, das erledigt Andorra2d für mich. Nun ist es aber das Problem, dass die Kugel in Wirklichkeit keine flüssige Bewegung macht, sondern "Sprünge":
Delphi-Quellcode:
                     X := X + (XSpeed * TimeGap * Energie * 10);
                     Y := Y + (YSpeed * TimeGap * Energie * 10);
                     //Energie neu berechnen
                     Energie := Energie - sqrt(Xspeed*XSpeed + YSpeed*YSpeed) * TimeGap;
Maximalwert der Energie ist übrigens 25.
Das heißt, dass eine Kollision erst erkannt wird, wenn die eine Kugel eventuell schon tief in der anderen steckt, aber dann kann ich die neuen Richtungen nicht mehr ausrechnen (Im Normalfall prallt die Weiße im 90° Winkel ab, also läuft entlang der Senkrechten zu der Gerade durch die beiden Kugelmittelpunkten)
Ich hoffe ihr könnt mir helfen. Bisher habe ich im Internet nichts gefunden, was mir das Problem verständlich näher bringen konnte.
  Mit Zitat antworten Zitat
Benutzerbild von igel457
igel457

Registriert seit: 31. Aug 2005
1.622 Beiträge
 
FreePascal / Lazarus
 
#3

AW: Andorra 2d Billardspiel in 2d

  Alt 5. Aug 2010, 18:23
Deshalb solltest du dich in solchen Fällen nicht auf die Kollisionsprüfung von Andorra 2D verlassen, sondern über Vektorgleichungen die möglichen Kollisionspunkte im voraus bestimmen...
Andreas
"Sollen sich auch alle schämen, die gedankenlos sich der Wunder der Wissenschaft und Technik bedienen, und nicht mehr davon geistig erfasst haben als die Kuh von der Botanik der Pflanzen, die sie mit Wohlbehagen frisst." - Albert Einstein
  Mit Zitat antworten Zitat
Noobmaster

Registriert seit: 18. Jul 2010
114 Beiträge
 
FreePascal / Lazarus
 
#4

AW: Andorra 2d Billardspiel in 2d

  Alt 5. Jul 2011, 14:44
Hallo Leute!

Mein Billardspiel ist vorangeschritten (auch wenn es lange gedauert hat).

Die Kugelkollisionen klappen, genauso wie die Kugel-geradeBanden-Kollisionen.

Allerdings tue ich mich mit den Banden in den Ecklöchern schwer. Diese sind nämlich schiefe Flächen und ich habe keine Ahnung wie ich die Abprallrichtung berechnen soll. Die Banden in den Mittellöchern sind nicht im 45°-Winkel sondern knapp weniger als 90°.

Habe mich schon versucht anders zu informieren

Delphi-Quellcode:
              //Steigung der Normalen zur Bande:
              VekNormale := TVek2d.Create;
              VekNormale.x := 1;
              VekNormale.y := -1 / m[j];

              //Richtungsvektor der Kugel an dem Normalenvektor spiegeln:
              //Spiegeln(w an v) = 2*(v*w)/(v*v)*v-w
              Richtung.x := 2*(VekNormale.x*Richtung.x)/(VekNormale.x*VekNormale.x)*VekNormale.x-Richtung.x;
              Richtung.y := 2*(VekNormale.y*Richtung.y)/(VekNormale.y*VekNormale.y)*VekNormale.y-Richtung.y;
              VekNormale.Destroy;
              VekNormale := nil;
Aber so funktioniert es leider nicht...
Anmerkung: "m" ist ein Array für die Steigungen der Geraden, die das jeweilige Bandenstück beschreiben.

Ich wäre sehr dankbar für eure Hilfe,

Gruß,
Noobmaster
  Mit Zitat antworten Zitat
Noobmaster

Registriert seit: 18. Jul 2010
114 Beiträge
 
FreePascal / Lazarus
 
#5

Bandenkollision

  Alt 6. Jul 2011, 12:17
Ich komme wirklich nicht weiter.

http://de.wikipedia.org/wiki/Spiegelungsmatrix

Damit kann ich gar nix anfangen...

Weiß einer die Lösung meines Problems?

Im Prinzip will ich folgendes erreichen:
Den Richtungsvektor v=(x,y) meiner Kugel bei der Kollision mit einer beliebigen Gerade g:y=mx+n so verändern, dass die Kugel mit Einfallswinkel=Ausfallswinkel an der Geraden abprallt.
  Mit Zitat antworten Zitat
Noobmaster

Registriert seit: 18. Jul 2010
114 Beiträge
 
FreePascal / Lazarus
 
#6

AW: Andorra 2d Billardspiel in 2d

  Alt 6. Jul 2011, 14:23
Habe nun versucht die Formel von Wikipedia auch umzusetzen, nachdem ich mich wieder mal eingehend mit Vektorrechnung abgemüht habe, aber es funktioniert einfach nicht.

Kann mir bitte einer sagen, wie ich einen sich bewegenden Kreis korrekt von einer gerade g(x)=m*x+n abprallen lasse? Habe bisher noch keine Formel gefunden, die ich verstanden habe.
  Mit Zitat antworten Zitat
Sinderion

Registriert seit: 23. Nov 2007
Ort: Oberösterreich
19 Beiträge
 
Delphi XE7 Architect
 
#7

AW: Andorra 2d Billardspiel in 2d

  Alt 6. Jul 2011, 17:16
Statt der Spiegelungsmatrix solltest du es eher mit einer Rotationsmatrix versuchen.

Grundidee wäre, dass du jede Situation auf eine einfachere zurückführst, indem du das Koordinatensystem entsprechend drehst.
Wenn die Kugel auf eine nicht waagrechte(oder auch senkrechte) gerade fällt, drehst du das Koordinatensystem um eben jenen Winkel, sodass du den einfacheren Fall einer Gerade parallel zur x oder y - Achse hast. Hier die neue Richtung berechnen und anschließend wieder zurückdrehen.

Rotiert werden muss nur die Richtung.

Infos zur Rotation: Drehmatrix

Ich hoffe in der Skizze erkennt man einigermaßen was ich meine (Paint )
Angehängte Grafiken
Dateityp: jpg Kollision mit Gerade.JPG (20,2 KB, 16x aufgerufen)
Daniel

Geändert von Sinderion ( 6. Jul 2011 um 17:22 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort


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 02:44 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