Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

1

10.06.2009, 19:00

Erkennung von Selbstkollisionen

Hallo,

In diesem Paper: http://www.miralab.unige.ch/repository/papers/112.pdf (Abschnitt 2.1) werden die beiden Bedingungen für Selbstkollisionen eingeführt und irgendwie sind die mir nicht so ganz klar.

Zum einen schonmal die beiden Beispiele a) und b). Wo ist da der Unterschied zwischen den beiden?

Außerdem verstehe ich auch die Funktionsweise des Algorithmus nicht 100%.
In der if-Anweisung wird ja gesagt, dass Selbstkollisionsfreiheit nur dann herrschen kann, wenn es keinen Vektor gibt, der nicht zu mindestens einer Oberflächennormale senkrecht steht. Scheint auch sinnvoll zu sein, denn dadurch, dass es ja immer eine Schleife gibt, muss ja irgendwo ein rechter Winkel sein. Sehe ich das aber richtig, dass die Nichterfüllung dieser Bedigung nicht automatisch eine Selbstkollision bedeutet?

Und den zweiten Teil der if-Anweisung verstehe ich gar nicht. Wie soll man denn auf einer 2D-Ebene feststellen, ob es Kollisionen gibt? Die Zeichnung b) bezieht sich wohl darauf, aber woher weiß ich, dass der Schnittpunkt ein Schnittpunkt ist und nicht ganz normal zum Objekt gehört?

Vielen Dank im Voraus :)

2

11.06.2009, 09:11

wir hatten das ma in ner vorlesung
eine bedingung is, dass die innenwinkel > 180 grad sind (bei der PDF a) )

das andre glaube, dass die außenkante ne schleife bildet.

gug dir s mal an, ein algorythmus ist auch erklärt (der is nur zum testen, ob selbskollision möglich ist):

http://img35.imageshack.us/img35/3774/selbstkoll.jpg

3

12.06.2009, 20:23

Ja genau, je öfter ich das Paper lese, desto mehr verstehe ich es, aber eben immer noch nicht so 100%. Der erste Test ist ja irgendwo logisch. Wenn man eine Schleife hat, gibts ja keine Möglichkeit, einen Vektor darin zu platzieren, sodass er nicht zu irgendeiner Normale der Schleife orthogonal ist.

Aber man stelle sich folgende Situation vor: Wir haben wieder eine fast komplette Schleife, nur ein Punkt fehlt und sie ist somit an einer Stelle offen. Jetzt gibts es aber immer noch keine Möglichkeit, einen Vektor zu platzieren, der nicht zu mindestens einer Normale orthogonal ist, denn wenn man den Vektor genau parallel zur jetzt fehlenden Normale ausrichtet, ist er auch zur Normale des gegenüberliegenden Punktes der Schleife parallel. Die erste Bedingung wird also verletzt, wir haben aber keine Kollision.

Und dass der Konturtest nur für Überlappungen am Rand zuständig ist stimmt auch. Das schau ich mir nochmal an.

Werbeanzeige