Ebenen



  • Sorry, habe jetzt nochmal in einem anderen Tutorial:
    http://www.geometrictools.com/Documentation/ClipMesh.pdf
    Gerade herausgefunden, dass x, y und z doch die Punktkoordinaten sind.

    Aber warum ist ax + by + bz + d = 0? Bzw. warum ist ax + by + bz + d die Distanz des Punktes (X Y Z) ? Das wird leider immer bei vielen Tutorials einfach als gegeben gesehen.

    mfg olli



  • Aber warum ist ax + by + bz + d = 0?

    Öh, wieso denn nicht? 😃 Ausserdem meinst du sicherlich ax + by + cz + d = 0.
    Die Herleitung der KO-Gleichung kann ja aus der Parameterform erfolgen:
    Dort hast du eine Ebene gegeben durch einen Stützvektor und zwei Richtungsvektoren gegeben. Über den Normalenvektor der Ebene(d.h. dem Vektor, der orthogonal auf beiden Richtungsvektoren liegt) kannst du dir nun auch die Koordinatenform herleiten, da gilt:
    n*(x-a) = 0
    n ist der Normalenvektor, x ein beliebiger Punkt der Ebene und a ein "bekannter" Punkt der Ebene. Die Gleichung besagt nur, dass der Normalenvektor orthogonal auf der Strecke AX(die Element der Ebene ist)liegt. Im Falle der Orthogonalität ist das Skalarprodukt der Vektoren gleich 0.
    Aus der Gleichung folgt dann auch:
    n1*x1 + n2*x2 + n3*x3 -(n*a) = 0
    Das ist die gleiche Form, wie oben mit n1 = a, n2 = b, n3 = c und d = (n*a)(Konstante). Zudem steht da nicht immer " =0" da du eine Konstante im Form von d in der Gleichung hast.



  • OK, danke, habe mir jetzt mal die anderen Darstellungsformen angeguckt bei Wikipedia.

    Pfff... Koordinatendarstellung
    E:a_1x+a_2y+a3z=b\mathbf{E: a\_1 \cdot x+a\_2 \cdot y+a_3 \cdot z=b}

    Hierbei sind x, y und z die Koordinaten im Raum. Mit dieser Ebenengleichung kann man beispielsweise leicht prüfen, ob ein Punkt auf dieser Ebene liegt, in dem man den Punkt P(x,y,z) in diese Gleichung einsetzt. Erfüllt er diese, liegt er auf der Ebene.

    Bei a1, a2 und a3 handelt es sich um die Koordinaten eines zur Ebene gehörenden Normalenvektores. Wenn dieser Vektor normiert ist, also der Normaleneinheitsvektor, dann ist b die Distanz entlang der Normalen zum Ursprung. Die Ebene liegt dann in der Hessesche Normalform vor.

    Ich stehe jetzt ein wenig auf dem Schlauch...
    Gehen wir davon aus, das es ein Punkt P(x y z) gibt sowie einen Normalvektor N mit dem Betrag 1.

    Warum ergibt P*N (Punktprodukt) die Distanz von P in Bezug auf die Ebene? Ich kenne das Punktprodukt geteilt durch die beiden Beträge der Vektoren als Kosinus des Winkels zwischen beiden Vektoren.

    cos(α) = (P*N) / (|P|*|N|); |N| ist ja 1 daraus folt
    cos(α) = PN / |P|; mit |P| multipliziert
    cos(α)
    |P| = P*N

    Aber unter cos(α)*|P| kann ich mir jetzt rein garnix vorstellen.

    Lässt sich eigentlich aus der Parameterform
    r=r0+λu+μv\vec r = \vec r_0 + \lambda \cdot \vec u + \mu \cdot\vec v
    auch die Distanz eines Punktes zur Ebene berechnen?

    mfg olli

    Edit:
    Habe das nochmal visuell dargestellt: >> Bild <<
    Aber dieser eingezeichnete Winkel α ist jedoch nicht der Winkel zwischen N und P sondern sondern 90° - α. Der Betrag |P| ist dann praktisch wie ein Radius.



  • ja, <p,n> ist der abstand vom punkt zur ebene, wenn n normiert ist. und du hast es sogar selbst hergeleitet. dein cos(alpha)||p|| ist doch gerade die laenge der orthogonalen projektion von p auf n.



  • Vertex schrieb:

    Lässt sich eigentlich aus der Parameterform
    r=r0+λu+μv\vec r = \vec r_0 + \lambda \cdot \vec u + \mu \cdot\vec v
    auch die Distanz eines Punktes zur Ebene berechnen?

    Soweit ich weiß nicht direkt. Aber indirekt natürlich immer, indem man z.B. einfach umformt in Hesse-Form.



  • Vertex schrieb:

    Lässt sich eigentlich aus der Parameterform
    r=r0+λu+μv\vec r = \vec r_0 + \lambda \cdot \vec u + \mu \cdot\vec v
    auch die Distanz eines Punktes zur Ebene berechnen?

    Nein, warum nicht, weil sie nicht implizit gegeben ist. Da bleibt nur die HNF: Punkt einsetzen -> Abstand bekannt, fertig.



  • Naja, geht im Prinzip schon. Man könnte einen Punkt der Ebene bestimmen, der maximal nah am Punkt ist, dessem Anstand man berechnen möchte. Dazu müßte man den Abstand mal allgemein hinschreiben und dann jeweils nach mü und lambda ableiten und Nullstellen suchen. Das liefert dann den nächsten Punkt auf der Ebene.



  • einfach den punkt auf das normalisierte kreuzprodukt der richtungsvektoren projezieren. 😉



  • PeterTheMaster schrieb:

    einfach den punkt auf das normalisierte kreuzprodukt der richtungsvektoren projezieren. 😉

    et voila -> HNF



  • exactly. daher der smily.



  • OK, der Ansatz mit dem normalisierten Vektor und dessen Punktprodukt zum Ortsvektor war für mich das entscheidente zum Verständnis.

    Hier in hübscher Wordgrafik 🙂
    >> Intersection <<
    Zum berechnen des Schnittpunktes zwischen einer Strecke <P0;P1>(jaja, mit t aus dem Bereich der Reellen Zahlen UND [0;1]) und einer Ebene NQ -d = 0.

    mfg olli


Anmelden zum Antworten