Ebenen



  • Hey,

    und zwar hab ich grad mit Kollisionsabfrage in meinem Q3 bsp Loader angefangen.
    Jetzt hab ich eine Verständnisfrage...

    Eine Ebene (Plane) in der Datei folgende Werte:

    Vector3f normal		(Plane normal)
    float distance		 (Distance from origin to plane along normal)
    

    Wie muss ich mir das denn jetzt vorstellen? Origin ist doch 0|0|0 des Koordinatensystems. Was mich verwirrt ist jetzt das along normal, wie ist das gemeint?

    Dankeschön



  • Das sagt halt aus, wie weit du vom Ursprung aus in Richtung des Normalenvektors gehen musst, bis du die Ebene triffst. (die Formulierung ist mathematisch gesehen wohl nicht ganz exakt, aber den Sinn sollte es vermitteln)



  • eine ebene kann mathematisch als eine Normale dargestellt werden, die sich in der x, sowie auch in der z achse unendlich erstreckt. die y achse ist sozusagen die richtung, in die ebene ausgerichtet ist. die formel ist nun folgende:
    origin*x*richtungsvektor=ebenengleichung
    wenn beide seiten der gleichung den gleichen wert haben ist dies ein schnittpunkt und somit hier auch die distanz.

    falls es nicht klar ist hilft sicherlich ein blick in ein mathe buch über vektoren.
    gruss GraveCH



  • Okay dankeschön.

    Hab mal noch 'ne Frage:
    Eine Quake 3 Karte ist ein BSP Tree.
    Wenn ich für die Kollisionsabfrage jetzt ein Ellipsoid benutzen möchte, dann muss ich doch alle Leafs checken, die den Ellipsoid schneiden, oder?

    Wie kann ich (schnell?) berechnen, ob eine Bounding Box einen Ellipsoid schneidet/berrührt?

    Vielen Dank





  • ChaosAngel schrieb:

    http://www.peroxide.dk/papers/collision/collision.pdf

    Hab ich ausgedruckt vor mir liegen, aber darin ist beschrieben, wenn man die Plane(s) schon bestimmt hat...



  • also ich habe keine ahnung von quake 3 usw.
    aber wenn du testen willst ob ein punkt in einer box ist kannst du eifach schauen ob x, y und z koordinaten des punktes in der box sind. z.b sagst du, dass die box 3 einheiten hoch und 2 einheiten breit und lang ist.
    diese box steht beim ursprung 0, 0, 0
    ein punkt p[x, y, z] muss die bedingung erfüllen:
    1<x>-1 --> weil ja die box 2 einheiten breit ist
    1.5>y<-1.5 --> höhe
    1<z>-1 ---> länge

    also der punkt p[0.5, 1.2, -0.2]:
    1<0.5>-1 --> true
    1.5>1.2<-1.5 --> true
    1<-0.2>-1 --> true
    somit ist der punkt p in der box

    eine ellipse hat auch eine definition und man sollte damit die selbe rechnung durchführen können.

    vielleicht hast du aber in der engine bereits eine erkennung eingebaut. das würde dir vieles ersparen.

    ich hoffe dieser post bringt dich weiter.
    gruss GraveCH


Anmelden zum Antworten