AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Delphi Break-Game, Kugel auf Rechtecklanden lassen ...
Thema durchsuchen
Ansicht
Themen-Optionen

Break-Game, Kugel auf Rechtecklanden lassen ...

Ein Thema von KleinAmann · begonnen am 26. Jun 2008 · letzter Beitrag vom 6. Jul 2008
 
Medium

Registriert seit: 23. Jan 2008
3.679 Beiträge
 
Delphi 2007 Enterprise
 
#30

Re: Break-Game, Kugel auf Rechtecklanden lassen ...

  Alt 30. Jun 2008, 15:24
PtInRect macht folgendes:
Es nimmt einen 2D-Punkt entgegen, und ein Rect. Dann wird die X-Koordinate des Punktes auf größer/kleiner mit der linken/rechten Begrenzung des Rects verglichen, sowie die Y-Koordinate mit der oberen/unteren Grenze. Das ergebnis ist die 4 Vergleiche and-verknüpft.
Das muss man nun für jeden Punkt des zu testenden Objektes machen, und für jeden Punkt den dieses im Laufe der Bewegung einnehmen wird.

Was ich mache ist etwas völlig anderes. Ich nehme den Richtungsvektor des beweglichen Objektes, und erstelle mir eine Gerade auf den Ballmittelpunkt gestütz, setzte diese gleich mit der Gerade die die Kollisionsoberfläche bildet, und erhalte nach lösen des kleinen LGS einen Parameter, der angibt wie oft ich den Richtungsverktor "malnehmen" muss, um auf die Oberfläche zu treffen. Ist der Parameter kleinergleich eins, tritt die Kollision im anstehenden Schritt auf, und mit den dann vorhandenen Daten kann man zudem leicht ein physikalisch korrektes Abprallverhalten trotz mögl. großschrittiger Bewegung errechnen.

Was man mit PtInRect macht ist Pixelweise rumfrickeln, was ich mache ist einfache lineare Algebra. Vorteile letztrer Variante:
- Konstanter Zeitverbrauch (man muss nicht u.U. alle Pixel in einer Diagonalen quer über den Bildschirm abstesten)
- Kollision wird IMMER gefunden, selbst wenn das Objekt so klein/schnell ist, dass es sonst weit über den Kollisionspartner "springen" würde
- Analytischer statt diskreter Ansatz
- Universell einsetzbar (Die Kollisionspartner müssen keine rechtwinkligen Vierecke oder Kugeln sein, auch wenn es die einfachsten Fälle sind)

Nachteile:
- Man muss in der Schule bei Vektorrechnung gerade wach gewesen sein, zumindest halb


Und wie vorher schon erwähnt, kann man in diesem speziellen Fall einige sehr deutliche Vereinfachungen machen, da man immer mit horizontalen Linien Kollidiert, diese keine Eigenbewegung haben, und die Präzision sehr wahrscheinlich ausreichen wird. Wie, hatte ich ja auch schon geschrieben.

Der TE müsste nur mal ein wenig genauer werden als "geht nicht", dann könnte man vermutlich sogar konkret weiter helfen
"When one person suffers from a delusion, it is called insanity. When a million people suffer from a delusion, it is called religion." (Richard Dawkins)
  Mit Zitat antworten Zitat
 


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 14:20 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