Zitat von
dino:
Richtungen: da ich einen großen Kreisund nicht bloss nen Pixel habe erhöht sich die Anzahl an Pixel, die überwacht werden müssen...
Die Anzahl der Punkte natürlich. Aber du hast trotzdem nur 8 mögliche Richtungen, wenn du zwischen den Kollisionsabfragen immer nur um einen Pixel verschiebst.
Beispiel:
Du hast einen Kreis (Mittelpunkt: 0,0), den du pro Sekunde um 3 Pixel nach unten und 4 nach rechts verschiebst. Die Strecke, die in einer Sekunde zurückgelegt wird, beträgt also 5 (denn 3²+4²=5²).
Du verschiebst zwischen den Kollisionsabfragen aber immer nur um die Länge eines Pixels. Pro Sekunde machst du also 5 mal die Kollisionsabfrage:
Zuerst verschiebst du um 3/5 nach unten und 4/5 nach rechts (Mittelpunkt jetzt: 4/5, 3/5) und machst dann die Kollisionsabfrage, allerdings mit den gerundeten Koordinaten (1,1). Verschiebung also nach unten-rechts.
Dann verschiebst du nochmal genau so weit (Mittelpunkt jetzt: 8/5, 6/5). Der Mittelpunkt für die Kollisionsabfrage ist jetzt 2,1. Die Verschiebung jetzt also nur nach rechts.
So kommt man am Ende nur auf 8 mögliche Richtungen: oben, unten, rechts, links und die 4 Richtungen, die dazwischen liegen. Die Anzahl der zu überwachenden Pixel ist dann der halbe Umfang des Kreises, also pi*Radius.