Ich werde einen schnellen Kollisionstest per Bounding Sphere als ungefähres Kollisionskriterium implementieren (3 Subtraktionen, 4 Multiplikationen, 2 Additionen, 1 Vergleich, also sehr schnell zu berechnen).
Also, jetzt dazu, wozu ich das alles brauche. Ich denke momentan vage daran, eine Art Weltraum-Spiel zu programmieren (mit
OpenGL). Wenn ich jetzt einen Kollisionstest machen will, muss ich möglicherweise testen, ob 20-30 Schiffe mit jeweils einer Station kollidieren. Jetzt sind Schiffe u.U. nicht gerade klein und Stationen sind riesig. Auch bei Beschuss durch Raketen/Partikelwaffen ergibt sich dieses Problem. Da stellt sich natürlich die Frage, ob ein Dreiecks-Dreiecks-Test in allen Fällen das richtige ist, da der eine Komplexität von O(m*n) hat (wobei m die Dreiecksanzahl des Schiffes, n die der Station ist). Da Schiffe eher länglich sind, lässt sich ihre Form u.U. nicht sehr gut mit einer Kugel approximieren, jedoch sehr gut mit einem Ellipsoiden. Darüber hinaus sollen die Schiffe Schilde besitzen, die bei einem Treffer das Projektil abfangen. Diese Schilde sollen dann ellipsoid das Schiff umgeben, wodurch ich sogar noch eine optisch ansprechende und logisch einleuchtende Erklärung für diese Kollision habe. Der Ellipsoid-Test wird dadurch also eher selten, der Polygon-Test noch seltener verwendet, was sich ressourcensparend auswirkt - und Ressourcen sind bei einem 3D-Echtzeit-Spiel immer knapp.