Registriert seit: 6. Jun 2006
589 Beiträge
Turbo Delphi für Win32
|
Re: Kugel/Kreis prallt von Eck/Kante ab
14. Okt 2006, 12:14
Nur die zu zeichnenden Koordinaten sind Integer. Die wirklichen Koordinaten sind natürlich Floats, bei der Kollision sollte man aber die Integer-Koordinaten prüfen, genau wie du es meintest. Die sind die gerundeten Floats.
Natürlich sind die Richtungen eigentlich Floats. Anhand dieser Float-Werte werden dann die neuen wirklichen Koordinaten (Floats) berechnet, wenn der Kreis um die Länge eines Pixels in die Richtung bewegt wird. Die Integer-Koordinaten können sich dann jeweils aber höchstens um einen Pixel verändern. Es gibt also bei den Integer-Koordinaten nur 8 mögliche Richtungen: 0, 45, 90, 135, 180, 225, 270 oder 315 Grad. Dann kommt die Kollisionsabfrage mit diesen Integer-Koordinaten.
Es wird dann auch nicht zu großen Rundungsfehlern kommen, weil alle Rechnungen mit den Floats gemacht werden. Nur bei der Kollisionsberechnung werden Integer genommen.
|