Ich finde atm meinen Denkfehler nicht bei dem schreiben einer Kollisionserkennung mit 2 Ovalen.
Mein Ansatz war( Vereinfachte Form für Lesbarkeit; Es geht nur um die Mathematik dahinter ):
Code:
double RAD = Math.atan2(a.x- b.x, a.y- b.y);// Winkel output zwischen +PI und -PI
int A = Math.sqrt(Math.pow(Math.cos(RAD)*a.x)+ Math.pow(Math.sin(RAD)*a.y));// Hyp. von a
int B = Math.sqrt(Math.pow(Math.cos(RAD)*b.x)+ Math.pow(Math.sin(RAD)*b.y));// Hyp. von b
int DisAB = Math.sqrt(Math.pow(a.x- b.x)+ Math.pow(a.y- b.y));// Ges. Hyp.
if( A + B >= DisAB ) return true;
return else;
Falls ihr euch über die etwas sonderbare Schreibweisse wundert...fragt lieber nicht wofür ich das brauche.
mfg
Speedmaster
_________________ Shareholder und Leitender Entwickler bei Pipedream-Games.
Zitat: Siehst du diesen Park da unten? Jeden Tag lernen sich darin Menschen kennen und verlassen einander. Und du hast dein ganzes Leben Zeit darin zu gehen.
Deine Idee wird vermutlich funktionieren, allerdings ist das wohl ein bischen viel für ein bischen Ovalenkollision!
_________________ Shareholder und Leitender Entwickler bei Pipedream-Games.
Zitat: Siehst du diesen Park da unten? Jeden Tag lernen sich darin Menschen kennen und verlassen einander. Und du hast dein ganzes Leben Zeit darin zu gehen.
Registriert: Mi Aug 17, 2005 13:19 Beiträge: 98 Wohnort: Jahnsdorf
Man kann in meiner Gleichung 2 Vereinfachungen einbauen:
1. Wenn der Abstand der Mittelpunkte M1 und M2 nach partiellem Abstand größer als die Radien in diese Richtungen ist --> keine Kollision
2. Man brauch nicht die gesamte Punktschaar berechnen, sondern kann die Berechnung auf einen Punkt P der Peripherie konzentrieren, der auf der Strecke zwischen M1 und M2 liegt konzentrieren.
Weiterhin sollte beachtet werden, dass man gegenseitig überprüfen muss, dass M1 außerhalb von M2 und M2 außerhalb von M1 liegt (wenn mindestens eine dieser Bedingungen gebrochen wird, kollidieren die Ovale.
Übrigens: Die Prüfung auf korrektheit der Ungleichung |(P - M)/R| <= 1 ist konstant in O(1)* durchführbar.
Worstcase wäre also die gesamte Überprüfung aller Teilschritte durchzuführen, was etwa 5 solcher Oval-Punkt-Vergleiche und wenige weitere Berechnungen\Vergleiche benötigen würde. Weiterhin komplizierter wird es bei gedrehten Ovalen, wo die größe für den ersten Schritt das Maximum der Radien sein sollteund in jeder der Vergleichsoperationen eine Punktrotation mit reinkommt.
Mitglieder in diesem Forum: 0 Mitglieder und 13 Gäste
Du darfst keine neuen Themen in diesem Forum erstellen. Du darfst keine Antworten zu Themen in diesem Forum erstellen. Du darfst deine Beiträge in diesem Forum nicht ändern. Du darfst deine Beiträge in diesem Forum nicht löschen. Du darfst keine Dateianhänge in diesem Forum erstellen.