Autor Beitrag
Aya
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 1964
Erhaltene Danke: 15

MacOSX 10.6.7
Xcode / C++
BeitragVerfasst: Mi 20.11.02 20:34 
Hi :)

kann mir mal jemand helfen bei den CollisionDetections???

Brauche garnichts schweres... ich hab 20 Objekte (Kugeln) und möchte nur wissen ob ein würfel irgendeine der Kugeln berührt. Nicht wo, wie oder weshalb er sie berührt, ich möchte auchnicht igendwie die kugel abstoßen lassen oder so, sondern einfach nur wissen OB sie sich berühren.. :)

Hat jemand ne ahnung wie man das machen könnte???

Au'revoir,
Aya
OregonGhost
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 215



BeitragVerfasst: Do 21.11.02 21:10 
Ob ein beliebiger Punkt eine Kugel berührt bzw. drinnen ist, stellst du fest, indem du die Entfernung des Punktes zum Kugelmittelpunkt berechnest (Satz des Pythagoras) und diese mit dem Kugelradius vergleichst. Wenn du das mit alle Würfelpunkten machst, ist das schonmal ein Anfang.

Jetzt kommt der schwierige Teil, du musst überprüfen, ob die Kugel im Würfel ist, oder sie sich überlappen, ohne dass ein Eckpunkt in der Kugel liegt. Und das ist nicht mehr trivial.

Im DirectX SDK gibt es ein Sample für Viewing Frustum Culling. Das behandelt die wesentliche Mathematik hierfür. Vielleicht solltest du dir das mal anschauen. Vereinfacht geht es so: Für jede Würfelfläche überprüfe den Abstand des Kugelmittelpunktes zur Oberfläche. Dabei bekommst du einen positiven oder negativen Wert raus, je nach dem, auf welcher Seite der Fläche der Punkt liegt. Wenn der Punkt innerhalb des Würfels liegt, tut das auch die Kugel. Wenn der Abstand des Punktest zu einer der Flächen kleiner als der Radius ist, kollidieren sie ebenfalls.

Die Anhaltspunkte in der Mathematik sind: Parameterform von Geraden und Ebenen, Normalenform nach Hesse, Abstandsbestimmung Punkt-Ebene.

_________________
Oregon Ghost
---
Wenn NULL besonders groß ist, ist es fast schon wie ein bisschen eins.
Aya Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 1964
Erhaltene Danke: 15

MacOSX 10.6.7
Xcode / C++
BeitragVerfasst: Fr 22.11.02 00:58 
huhu

Cool, danke.

Eine frage noch.. wenn ich das ganze jetzt mit lauter Würfeln (Größe: 1x,1y,2z) mache, und die beliebig rotiert sein können... wie geht es da??? :)

bzw. wie bekomme ich die eckpunkte raus, wenn ich weiß wo die mitte liegt, und wie stark er rotiert ist...?? (Ich bin leider nich so gut in Mathe :oops: )

Au'revoir,
Aya~
OregonGhost
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 215



BeitragVerfasst: Fr 22.11.02 13:54 
Die Methode, die ich beschrieben habe, ist deshalb so kompliziert, WEIL sie für beliebig orientierte Würfel geeignet ist. Soviel also dazu.

user defined image

Ich hab dir ein Bild gemalt. Du brauchst drei Vektoren. Nein, das ist gelogen, eigentlich brauchst du nur zwei, weil du den dritten daraus berechnen kannst. Wenn du weißt wie der Würfel rotiert ist, hast du wohl drei Winkel Alpha, Beta und Gamma. Daraus lässt sich der Vektor a berechnen, mit den Komponenten ax, ay und az. Wenn ich mich jetzt nicht VÖLLIG irre, dann musst du nur Alpha um 90° erhöhen, und dann erhältst du mit derselben Berechnung b oder c. Das Kreuzprodukt a x b ergibt dann den dritten. Soweit klar? Musst du mal rumprobieren, ob jetzt überall die Reihenfolge und so stimmt weiß ich gerade nicht.

OK. Du hast also drei Vektoren. M(ittelpunkt) + a + b + c ergibt den ersten Eckpunkt, M + a + b - c den zweiten usw. Damit haste alle Eckpunkte. Alles klar oder was? ;c)

So, wenn du jetzt noch Fragen hast, dann frag' ;c)

_________________
Oregon Ghost
---
Wenn NULL besonders groß ist, ist es fast schon wie ein bisschen eins.
Aya Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 1964
Erhaltene Danke: 15

MacOSX 10.6.7
Xcode / C++
BeitragVerfasst: Mo 25.11.02 03:26 
ähm... *gg*
Also wenn ich fragen hab, frag ich.... ich hab da nu garnix verstanden bei deinem beispeil :oops:

Schau mal da -> www.auq.de/viewtopic.php?p=21530#21530

Da hab ich nen bildchen zugemacht, vieleicht kannst es mir daran besser erklären :)

Au'revoir,
Aya
OregonGhost
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 215



BeitragVerfasst: Mo 25.11.02 20:35 
OK, hab' jetzt was beim anderen Thread gepostet.

_________________
Oregon Ghost
---
Wenn NULL besonders groß ist, ist es fast schon wie ein bisschen eins.