Gleichheit zweier Ebenen, numerische Ungenauigkeit
-
Hallo!
Habe folgendes Problem: Ich muss die GLeichheit von zwei Ebenen untersuchen.
Im mathematischen Sinne sind zwei Ebenen gleich, wenn sie parallel sind und ein Punkt der einen Ebene auf der anderen liegt.
Naja... im PC siehts da ein bisschen anders aus: Meine Ebenen werden durch eine ihre Normale und einen Referenzpunkt bestimmt. Der Test auf Gleichheit ist dann:
-
normalen kollinear? Wird als kollinear angesehen, wenn das Punktprodukt so gut wie eins ist.
-
Referenzpunkt der einen Ebene auf der anderen? Der Punkt liegt drauf, wenn er eine bestimmte Distanz unterschreitet.
Ich find es für mein Problem richtig, dass Ebenen nicht ganz parallel sein müssen (punktprodukt genau 1), da durch Transformationen nun mal Fließkomma-Ungenauigkeiten entstehen. Das Problem, das dabei entsteht, ist jedoch, dass die Distanz des Referenzpunkts zur anderen Ebene von dem Referenzpunkt abhängt.
d.h. abhängig vom Referenzpunkt sind die Ebenen manchmal gleich, manchmal nicht.
Kann man das Problem irgendwie überwältigen? Ich habe dazu leider keine Idee, da ich ja nciht einfach den Referenzpunkt verschieben kann, da ich ihn dann immer auf die Schnittlinie der beiden Ebenen ziehen könnte, wenn die Vektoren nciht vollkommen kollinear sind...
Vielleicht habt ja ihr eine Idee dazuLiebe Grüße, Max
-
-
Such dir einen Würfel oder ähnliches aus in dem du die Ebenen vergleichen willst und dann kannst du die Schnittpunkte der Kanten des Würfels mit den Ebenen vergleichen.
Wenn du die Ebenen im unendlichen Raum vergleichen willst, dann kannst du eigentlich nur die Normalen vergleichen, wenn sie nicht exakt gleich sind, dann schneiden sich die Ebenen irgendwo.
-
Vielen Dank
Das ist ne gute Idee und klappt auch in diesem Anwendungsfall
-
Maxi schrieb:
Habe folgendes Problem: Ich muss die GLeichheit von zwei Ebenen untersuchen.
[...]
Meine Ebenen werden durch eine ihre Normale und einen Referenzpunkt bestimmt.du gibst die Lösung doch praktisch schon an -
wenn $$a+V=a+{n}^{\perp}$$ und $$b+W=b+{m}^{\perp}$$
zwei gegebene Hyperebenen und n und m kollinear sind, dann gilta+V = b + W <=> a-b in V=W <=> <a-b,n>=0
- worin besteht das weitere Problem genau?
-
wie oben in meinem Anfangstext steht: durch numerische Ungenauigkeit beim Transformieren der einen Ebene, sind sie eben nciht exakt gleich, daher kann man nicht auf 0 testen, sondern muss das irgendwie tolerant machen. aber Grohool hat ja schon eine gute Lösung gegeben.
-
wenn man die Schnittpunkte der Kanten "modulo Unschärfe" vergleichen kann, kann man auch gleich <a-b,n> "modulo Unschärfe" auf 0 testen und |<n,m>| "mod Unschärfe" auf 1 - wo ist da der Vorteil?