Diskussion:Kollisionserkennung (algorithmische Geometrie)

Alte Version Bearbeiten

Es auch noch die Möglichkeit auf die Schnittpunkte von einer Kugel mit einer anderen zu bestimmen.

Neue Version Bearbeiten

Ich habe den Artikel neu und hoffentlich etwas professioneller aufgesetzt. Ist aber noch nicht ganz fertig. Sanches

Broad Phase Definition Bearbeiten

Das ist so sicher nicht richtig! Auch Paarfindung mittels anderen Raumnunterteilungsverfahren oder PQP Abfragen fallen unter Broad Phase. BVH's sind nur eine von mehreren Broad Phase Varianten. (nicht signierter Beitrag von 88.217.170.75 (Diskussion) 17:08, 20. Apr. 2012 (CEST)) Beantworten

Es geht keine korrekte Kollisionsabfrage, denn die Welt ist analog. Bearbeiten

Stellt euch mal zwei Bälle vor, die durch die Luft fliegen und miteinander kollidieren. Der Abprallwinkel hängt nun nicht nur von dem Einprallwinkel, sondern auch von der Einprallgeschwindigkeit ab! Mal angenommen, jeder Ball hätte einen Bewegungsvektor, das heißt einen Wert, mit dem sich dessen jeweilige X-, Y- und Z-Koordinaten pro Zeiteinheit verändern. Der Einfachheit halber mal nur die X- und Y-Koordinaten. Es wäre denkbar, bei Kollision zwei Bitmaps von einem Kreis anhand der Kollisionseigenschaften zu überlappen und beide Bitmaps von der Mitte ausgehend mit einer ausbalancierten Rekursion zu fluten. Einfach ein Flood-Fill von der Mitte jedes Kreises, bei dem die Füllfunktionaufrufe gepuffert und anhand eines Ausbreitungszählers umsortiert werden für eine gleichmäßige Ausbreitung. Erreicht die Flutung dann die Schnittfläche beider Kreise, so bekommt der dem jeweiligen Kreis zugeordnete Ball dann anhand der Ausbreitungsrichtung der Flutung die Bewegungsvektoren verdreht, sprich erhöht oder erniedrigt. Wenn man das richtig justieren könnte... - Eine allgemeine, saubere Gleichung für den Abprall gibt es nicht! - Ist aber die Auflösung eines solchen Bitmaps hoch genug, dann ist wieder der Vektor zu ungenau. Ist der Vektor groß genug, dann ist wieder das Bitmap zu niedrig aufgelöst. Es läuft also darauf hinaus, daß der Ball nur in rechten Winkeln abprallen kann! Es ist auch nicht möglich, mit einem Computer ohne Wertetabelle oder Entsprechendem einen Kreis zu berechnen! In einem Raster gilt nämlich der Satz vom Pythagoras nicht. Ein Kreis ist so definiert, daß jeder seiner Punkte die gleiche Entfernung zu seiner Mitte hat. Wie will man aber ausgehend von der Mitte im Computer eine schräge Linie mit bestimmter Länge abtragen? Mit einem Linienalgorithmus wie dem Bresenham-Algorithmus kann man deren Länge schlecht bestimmen. Ob man die Länge der Linie quer oder treppenförmig abmißt, die Anzahl der Bildpunkte, die sie berührt, wird auf keinen Fall der Länge in der Realität entsprechen. Hätte man etwa ein Bitmap von einem Quadrat der Seitenlänge 4 Pixel und zieht darin die Diagonale, dann hat diese Diagonale die Länge 4 oder 8 Pixel, je nachdem, wie man abzählt. Nach dem Pythagoras gilt aber Wurzel "4 mal 4 + 4 mal 4 ", und das ist irgendwas dazwischen! Also in der Matrix ist der Kreis ein Quadrat. Es ist notwendig, Kreiswinkel, die also das relative Verhältnis zum Flächeninhalt eines Kreises angeben, linear zu Steigungen zuzuordnen. Genau dafür gibt es Trigonometrietabellen. Aber selbst mit solch einer Tabelle, und auch nicht mit einer kompletten Tabelle für jede Einprallgeschwindigkeit und Objektmasse, kriegt man Kollisionen beziehungsweise die Physik hinreichend im Computer nachgebildet geschweige denn simuliert. Die Kollisionsabfrage ist immer fehlerhaft! Das liegt daran, daß ein simultaner, also zeitgleicher dreidimensional-räumlicher Vorgang mit verschiedenen Geschwindigkeiten nicht sequentiell, also in Form einer Abfolge berechnet werden kann, so wie es ein Computer eben nur kann. Beispiel: Mal angenommen es gebe eine maximale Ausbreitungsgeschwindigkeit für alle Objekte und es wird pro Zeiteinheit beziehungsweise Schleifendurchlauf für jedes Objekt immer nur ein potentieller Bewegungsschritt um eine Einheit simuliert. Und vor jedem Bewegungsschritt folgt einmal vorausschauende Kollisionsabfrage. Man dividiert also die Maximalgeschwindigkeit durch die Geschwindigkeit im Vektor und das Ergebnis ist die Anzahl Aussetzer der Bewegung, in denen ein Zähler hochläuft, bis im jeweiligen Schleifendurchlauf einmal eine Bewegung um eine Einheit stattfindet und der Zähler wieder auf Null gesetzt wird. Die Objektkoordinaten wandern dabei in die globale "Matrix", eine Matrize, auf der belegte Raumpunkte markiert werden, mit der für jedes Objekt nachgesehen wird, ob und mit was eine Kollision vorliegt. Anhand dieses Arrays und den Vektoren beider kollidierender Objekte würden dann anhand einer Tabelle die neuen Vektoren ausgewählt und dem Objekt zugewiesen. Wenn man sich das gedanklich veranschaulicht - was einer Gehirnverstimmung gleichkommt und ziemlich Aua macht -, treten auch hier unweigerlich gravierende Abweichungen auf. Entweder der aus dem Vektor resultierende Winkel, die Raumkoordinaten, die Anzahl Zeitschritte, sind zu ungenau. Man kann es drehen und wenden wie man will. Es läuft also darauf hinaus, daß man die Welt nicht in einem Raster mit einem Digitalrechner simulieren kann. In der Realität gibt es keine kleinste Raum- oder Zeiteinheit, sondern alles ist analog, also geht fließend ineinander über oder so. Und auch im Verband mit etlichen derartig simulierten Teilchen oder Bällen heben sich die Fehler nicht statistisch auf. Wenn es doch ginge, dann wären wir wohl tatsächlich schon in der Matrix, aber de facto funktioniert noch nicht einmal die Wettervorhersage. Und das ist genau das Ironische an der Matrix. "Sie sind ein Symbol ihrer Gattung, der blinde Messias", bedeutet also "the BLIND ONE". Blind im Sinne von blöd. Und wenn man aus SimulatIOn ganz rechtsgefährlich das OI rausnimmt, dann erhält man also Simultan, oder Simulant. Ich kenne noch andere rechtsgefährliche Begriffe, wie zum Beispiel "Semantic". sprich "Antisemitic", ein Begriff aus der Compilerwissenschaft. Die Nintendogestörten brauchen also im Schnitt 15 Jahre, um es zu bemerken. Und wie sieht es mit dem "Zeitgeist" dann bei den darauffolgenden Generationen aus? Naja, immerhin gefährden sie nicht unsere Demokratie, sie gehen ja schließlich alle wählen. (nicht signierter Beitrag von 77.25.179.101 (Diskussion) 18:17, 24. Mai 2014 (CEST))Beantworten

Vielen Dank für den ausführlichen Beitrag, auch wenn ich die Quintessenz leider nicht ganz rauslesen konnte. Den letzten Satz habe ich im Sinne der WP:WQ entfernt... Viele Grüße -- Phil1881 (Diskussion) 00:45, 25. Mai 2014 (CEST)Beantworten