Kollisionserkennung: abgerundetes Objekt

Ich entwickle ein Java-Spiel (aber die Entwicklungssprache spielt keine Rolle), das abgerundete Objekte wie Bälle oder Pucks enthält, und arbeite jetzt an Kollisionen. Ich benutze einen Timer, also überprüfe ich bei jedem Frame, ob eine Kollision auftritt.

Hier ist ein Diagramm, das das obere rechte Stück eines Objekts darstellt.

Die Mitte des Objekts wird durch den Punkt [0,0] dargestellt, sein Radius beträgt 10px und die Einheiten sind Pixel.

Nun, wenn mein Objekt (zum Beispiel,obj_1) ist quadratisch / rautenförmig (blaue Linie), um festzustellen, ob eine andere (obj_2) kollidiert es Ich muss nur ihre Koordinaten bekommen und durch überprüfenMath.abs(obj_1.x - obj_2.x) + Math.abs(obj_1.y - obj_2.y) <= radius Ich werde wissen, ob es eine Kollision gibt.

Bei einer Kreisform (rote Linie) ist das Problem jedoch schwieriger, da mehr Platz benötigt wird und dieser belegte Raum nicht durch eine gerade Linie begrenzt wird. Natürlich muss ich einige Werte runden (zum Beispiel in der vorherigen Grafik, wenn ich eine Kollision bei prüfen möchtex = 2 Ich muss den y-Wert, der wie 9,5 zu 10 aussieht, runden). Aber ich habe einfach keine Ahnung, wie ich an diese Formel komme. Jede Hilfe wird sehr geschätzt.

Antworten auf die Frage(4)

Ihre Antwort auf die Frage