Abstand Punkt - Ebene in Normalenform
-
Moin
Es gibt im Netz ziemlich viele Lösung für die Distanz von einem Punkt zu einer Ebene zu finden, allerdings setzen die immer bestimmte Ebenenformen vorraus.
Ich möchte aus Berechnungszeitgründen aber keine Umformung in meinem Programm vornehmen.Kann man die Distanz von einem Punkt zu einer Ebene welche in Stützpunkt + Normalenvektor gegeben ist berechnen?
Bzw. so einfach wie irgend möglich, denn eine Umformung in eine andere Form und das Problem dort zu lösen ist keine Lösung die ich akzeptieren möchteGruß
Chris
-
meist ist die Ebene in Hessescher Normalform gegeben, also np+d=0.
Doch das ist ja gerade das was du braucht, wenn du von Normalvektor und Stützstelle sprichst, denn dann ist deine Ebene ja genauso definiert mit d=-np mit p=Stückstelle und n=Normale.
Schließlich kennst du n und d, somit kannst du jeden beliebigen Punkt p einsetzen und bekommst die Distanz dist=n*p+d
-
Ich hoffe, ich habe richtig gerechnet; ich habe es nicht gründlich geprüft:
(punktvektor + d * normalenvektor - stützpunkt).normalenvektor = 0
wobei . das Skalarprodukt ist. Damit folgt
d * normalenvektor² + punktvektor.normalenvektor - stützvektor.normalenvektor = 0
Ich nehme mal an, dass der Normalenvektor normiert ist, dann ist
d = stützvektor.normalenvektor - punktvektor.normalenvektor
Damit ist der Betrag von d der Abstand. Aus dem Vorzeichen von d könntest du noch schließen, auf welcher Seite der Punkt liegt.Stützvektor.normalenvektor kannst du allgemein vorausberechnen, sofern es immer die gleiche Ebene ist. Bleiben drei Multiplikationen und ein paar Additionen, ich denke, das sollte recht optimal sein.
-
hab kurz in die HNF eingesetzt, komme aufs gleiche.
s=Stückvektor, n=Normale mit |n|=1, p=irgendein Punkt
abs(n*(p-s))=dist
-
abs(<n,(p-s)>)=dist
Danke für diese Perfekte Lösung!Supereffizient