Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Ebenengleichung darstellen (durch X mal Y Punkte) (https://www.delphipraxis.net/158007-ebenengleichung-darstellen-durch-x-mal-y-punkte.html)

treeRunner 2. Feb 2011 06:41

Ebenengleichung darstellen (durch X mal Y Punkte)
 
Hey Leute.

Ich habe eine Ebene (in der Form: Normale - Distanz = 0) und wollte mir diese zu Übungszwecken darstellen (weil ich noch andere Sachen wie Schnittgerade von Ebenen lernen will).

Weil die Ebene ja "nur" zwei-dimensional ist, habe ich mir schonmal gedacht, dass ich nur zwei Schleifen brauche. Aber was mache ich dann mit den drei Vektor-Werten der Normalen (und der Distanz)?

Ich bin in der Mathematik nicht fit und würde es sehr nett finden, wenn man mir das mal erklären möchte. :)

Viele Grüße,
treeRunner

jfheins 2. Feb 2011 14:59

AW: Ebenengleichung darstellen (durch X mal Y Punkte)
 
Ich nehme mal an, mit "Normale - Distanz = 0" meinst du die HNF?

Zur Darstellung kommt es wesentlich darauf an, wie es am Ende aussehen soll. Denn eine Ebene ins 2dimensionale projiziert ist sehr langweilig: Entweder wird's eine Ebene oder ein Strich. Und um eine Ebene am PC darzustellen musst du sie irgendwie in 2D projizieren. Es sei denn, du fügst Tiefeninformation z.B. mit einem Farbgradienten hinzu. Dann hast du aber auch "nur" einen linearen Farbverlauf auf dem Bildschirm, also nix besonderes.

Anschaulich machen kann man sich die HNF am besten indem man eine Dimension wegnimmt und eine HNF zur Beschreibung einer Geraden hernimmt.

treeRunner 2. Feb 2011 16:34

AW: Ebenengleichung darstellen (durch X mal Y Punkte)
 
Hey jfheins,

zur Darstellung habe ich ein laufendes OpenGL-Projekt. Ich habe mir auch schon eine steuerbare Kamera eingebaut.

Jep, die HNF.

Ich glaube, ich bin schon "einer" Lösung auf der Spur. Es sollte gehen, wenn man nicht zwei, sondern drei verschachtelte Schleifen nimmt, und man dann von jedem Schleifendurchlauf die Distanz zur Ebene berechnet. Wenn die Distanz in einem gewissen Toleranzbereich liegt (z.B. -1 <= Distanz <= 1), dann liegt der Punkt nah genug, um ihn zu zeichnen. Das versuche ich gerade umzusetzen (mir scheint diese Methode jedoch ziemlich "Brute Force" zu sein).

jfheins 2. Feb 2011 17:06

AW: Ebenengleichung darstellen (durch X mal Y Punkte)
 
Ja, das kommt Brute-Force schon sehr nahe ^^

Vefahren:
Gegeben: Normalenvektor n und Abstand d

1. n mit einem beliebigen Vektor Kreuz-multiplizieren, der kein vielfaches von n ist. Also z.B. (1 0 0) oder wenn n gleich (1 0 0) ist (0 1 0)
nennen wir das Ergebnis a
2. b := n x a (Kreuzprodukt)

Jetzt hast du zwei Vektoren a und b die in der Ebene liegen. Mit der Gleichung

(x y z) = n * d + a*λ_1 + b*λ_2; λ_1 in R, λ_2 in R

werden alle Punkte der Ebene beschrieben.

treeRunner 3. Feb 2011 02:24

AW: Ebenengleichung darstellen (durch X mal Y Punkte)
 
Vielen Dank! Das funktioniert perfekt.

Eine Anmerkung habe ich:
1. a := n x (0,0,1) // ein Vektor in der Ebene
2. b := n x a // ein anderer Vektor in der Ebene

Mit diesen zwei Schritten konnte ich es dann schon zeichnen.

Wofür braucht man jedoch noch Schritt 3? Ich habe mir die Vektoren mit OpenGL zeichnen lassen und der Vektor a aus Schritt Nr. 3 ist der Vektor a aus Schritt Nr. 1, nur dass er invertiert ist.

Viele Grüße,
treeRunner

jfheins 3. Feb 2011 08:54

AW: Ebenengleichung darstellen (durch X mal Y Punkte)
 
Zitat:

Zitat von treeRunner (Beitrag 1079236)
Vielen Dank! Das funktioniert perfekt.
Wofür braucht man jedoch noch Schritt 3? Ich habe mir die Vektoren mit OpenGL zeichnen lassen und der Vektor a aus Schritt Nr. 3 ist der Vektor a aus Schritt Nr. 1, nur dass er invertiert ist.

Viele Grüße,
treeRunner

Schön dass es geht :-)

Du hast, Recht, Schritt 3 war überflüssig. Habe meinen Post angepasst.


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:10 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz