Hallo,
in R^3 habe ich eine bestimmte Anzahl n von Ebenen, die sich in einem Punkt x schneiden. Nun möchte ich alle Ebenen um einen Abstand a verschieben, d.h. die Normalenvektoren der Ebenen bleiben gleich, jedoch ändert sich der Schnittpunkt zu x’.
Ich könnte jetzt die ganzen Schnittgeraden der Ebenen und dann daraus den Schnittpunkt ausrechnen. Mir erscheint dieser Weg jedoch ziemlich ineffizient. Gibt es vielleicht eine effiziente Formel, mit der ich x’ abhängig von a berechnen kann?
Hier eine kleine Veranschaulichung: http://img1.myimg.de/17b2.gif
Mux
Hallo,
in R^3 habe ich eine bestimmte Anzahl n von Ebenen, die sich
in einem Punkt x schneiden. Nun möchte ich alle Ebenen um
einen Abstand a verschieben, d.h. die Normalenvektoren der
Ebenen bleiben gleich, jedoch ändert sich der Schnittpunkt zu
x’.
Mit x’ = x + a
Wenn du alle Ebenen verschiebst, bewegt sich der Schnittpunkt mit.
Grüße,
Moritz
a ist aber ein Vektor, sondern ein Skalar
Hallo Moritz,
a ist doch kein Vektor, sondern nur ein Abstand - also eine reele Zahl ohne Richtung. Du siehst es auch in der Zeichnung: wenn a ein Vektor wäre, müsste er mit der Normalen einer Ebene zusammenfallen - aber mit welcher bitte?
[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]
Hallo,
a ist doch kein Vektor, sondern nur ein Abstand - also eine
reele Zahl ohne Richtung.
Aber du verschiebst doch die Ebenen um einen Vektor (nennen wir ihn v) mit |v| = a. Und dann verschiebt sich eben auch der Schnittpunkt um v…
wenn a ein Vektor wäre, müsste er mit der Normalen einer Ebene
zusammenfallen - aber mit welcher bitte?
Wieso? Es gibt doch auch Vektoren, die nicht mit Normalen der eingezeicheten Ebenen zusammenfallen…
Vielleicht wäre es hilfreich, wenn du etwas weiter ausholst wozu du das brauchst, vielleicht verstehe ich dich dann besser…
Grüße,
Moritz
Hi Moritz,
Jede Ebene wird um den Abstand a in Richtung ihres Normalenvektors verschoben - damit ist sichergestellt, dass nach dem Verschieben ALLE Ebenen den gleichen Abstand a von ihrer vorigen Position haben.
So wie ich a definiert habe (siehe Skizze) gibt es KEINEN Vektor v mit |v| = a, um den die Ebenen verschoben werden können, sodass sie dann alle im Abstand a von ihrer alten Position liegen.
Der gemeinsame Schnittpunkt x wird dabei in Richtung v um den Abstand b verschoben. Genau das sind die gesuchten Größen, gesucht sind also v und b bzw. x’.
Wozu ich das Brauche?
Ich arbeite an einer Anwendung für OpenGL, die mit Polygonen arbeitet. Die Polygone werden dabei durch Punkte im Raum aufgespannt. Gleichzeitig alle Polygonflächen (~ Ebenen) zu verschieben geht nicht, man kann sie nur einzeln verschieben. Beim Verschieben einer Fläche behält sie ihre Form - dadurch werden alle verbundenen Flächen verzerrt und der Winkel zwischen den Ebenen, in den diese Flächen liegen, ändert sich.
Deshalb muss ich nicht die Ebenen, sondern die Punkte verschieben. Dabei kann ich alle neuen Positionen bestimmen und daraus dann „sofort“ einen neuen Polygon bauen…