Autor |
Beitrag |
Harald Rafetseder (Equinox)
| Veröffentlicht am Mittwoch, den 13. September, 2000 - 11:19: |
|
Hallo. Ich habe folgendes Problem: Gegeben ist eine Gerade in 3D durch Punkt und Richtungsvektor. Ausserdem ist auch noch ein Punkt gegeben, der in der gleichen Ebene wie die Gerade liegt, sowie Anfangs- und Drehwinkel. Gebraucht wird das Ganze für eine Extrusion einer Fläche im 3D-Raum. Nun meine Frage: Wie drehe ich einen beliebigen Punkt um diese (ebenfalls beliebige) Achse, und wie finde ich dem Mittelpunkt der Drehung ? |
H.R.Moser,megamath.
| Veröffentlicht am Donnerstag, den 14. September, 2000 - 09:17: |
|
Hi Harald, Um Drehungen im Raum um eine Achse rechnerisch ausführen zu können, verwenden wir ein wirksames Verfahren, das von Arthur Cayley (1821 - 18 95) stammt. Die Cayleyschen Formeln gestatten es, die (3,3)-Matrix A einer Drehung aus einem Vektor in der Drehachse a und dem Drehwinkel omega zu ermitteln. Wir geben die Elemente aik von A einzeln an ; anschliessend zeigen wir das Verfahren an numerischen Beispielen.. Vorausgesetzt wird, dass die Drehachse durch den Nullpunkt O des orthonormierten Koordinatensystems geht und der Drehwinkel omega von 180° verschieden ist. Einen Richtungsvektor von a normieren wir so, dass sein Betrag mit dem Tangens des halben Drehwinkels übereinstimmt (!). Die Koordinaten dieses so normierten Vektors seien mit a1, a2, a3 bezeichnet. Es gilt also wurzel (a1 ^ 2 + a2 ^ 2 + a3 ^ 2) = [ tan ( omega / 2 ) ] In jedem Element der Drehmatrix A steht als Nenner der Term N = 1 + a1 ^ 2 + a2 ^ 2 + a3 ^ 2 Die neun Elemente von A sind: a11 = (1 + a1^ 2 - a2 ^ 2 - a3 ^ 2 ) / N a12 = 2 * ( a1 * a2 - a3 ) / N a13 = 2 * ( a1 * a3 + a2 ) / N a21 = 2 * ( a1 * a2 + a3) / N a22 = ( 1 - a1 ^ 2 + a2 ^ 2 - a3 ^ 2 ) / N a23 = 2 * ( a2 * a3 - a1 ) / N a31 = 2 * ( a1 * a3 - a2 ) / N a32 = 2 * ( a2 * a3 + a1 ) / N a33 = ( 1 - a1 ^ 2 - a2 ^ 2 + a3 ^ 2 ) / N 1.Beispiel Achse durch O Rotation um die Achse mit Richtungsvektor {1,1;1} , Drehwinkel omega = 120° Der Vektor hat den Betrag wurzel(3); dieser Wert stimmt mit tan [omega / 2] = tan (60°) überein. Der Vektor mit a1 = a2 = a3 = 1 ist somit schon richtig normiert. Man erhält nach leichter Rechnung gemäss der angegebenen Formeln die Drehmatrix A ( Nenner N = 4 ): Erste Zeile 0 0 1 Zweite Zeile 1 0 0 Dritte Zeile 0 1 0 Die Abbildungsgleichungen dieser Rotation lauten für P(x/y/z) als Originalpunkt und P'(x'/y'/z') als Bildpunkt: x' = z y' = x z' = y Anmerkung Mit Hilfe des folgenden Satzes können wir leicht unser Resultat überprüfen Der Satz lautet : Jede orthogonale Matrix A = [aik] mit det(A) = +1 stellt eine Drehung dar. Den Drehwinkel omega erhält man mit der Formel cos (omega) = ( s - 1 ) / 2 , wobei s die Spur der Matrix darstellt: s = a11 + a22 + a33. Die Rotationsachse hat die Richtung der Eigenvektoren, welche zum Eigenwert lambda = 1 der Matrix gehören. Bekanntlich heisst eine Matrix orthogonal, wenn das skalare Produkt je zweier Zeilenvektoren null und die Beträge aller Zeilenvektoren eins sind Eine Matrix, welche nach Zeilen orthogonal ist , ist eo ipso nach Kolonnen orthogonal. Unabhängig vom Wert s hat eine solche Drehmatrix A stets den Eigenwert 1, wie man sich leicht überzeugen kann. In einer Fortsetzung bringe ich ein Beispiel, welches Deiner Fragestellung etwas näher liegt. Bis dann Mit freundlichen Grüssen H.R.Moser,megamath |
H.R.Moser,megamath.
| Veröffentlicht am Donnerstag, den 14. September, 2000 - 11:39: |
|
Hi Harald, Im zweiten numerischen Beispiel geht die Rotationsachse a nicht mehr durch den Nullpunkt des Koordinatensystems wie Du aus ihrer Parametergleichung erkennst Diese skalaren Gleichungen für a mit t als Parameter sind: x = -2 + t , y = - 1 + t , z = t . Der Drehwinkel omega sei wie im ersten Beispiel 12o°. Ferner ist ein Punkt P(6/0/0) gegeben, dessen Drehbild P' bei Drehung um a mit dem Winkel omega gesucht wird. Bei der Drehung läuft P auf einem Kreis c , dessen Mittelpunkt M und dessen Radius R zu bestimmen sind Ferner soll wiederum für einen allfälligen weiteren Gebrauch die entsprechende Drehmatrix A ermittelt werden Vorbereitung zur Lösung Der Kreis c liegt in der Normalebene durch P zur Achse a Die Gleichung dieser Ebene lautet: x + y + z = 6, wie man leicht feststellt. a schneidet diese Ebene im gesuchten Punkt M. Man findet M , wenn die Koordinaten x , y , z aus der Geradengleichung in die Ebenengleichung eingesetzt werden; aus der Gleichung für t erhält man die Lösung t = 3 und damit M(1 / 2 / 3) Jetzt wählen wir ein neues Koordinatensystem u , v , w , dessen Achsen paarweise parallel zu den alten Koordinatenachsen x , y , z sind. Neuer Nullpunkt ist der Punkt M auf der Achse a.. Damit ist die Voraussetzung erfüllt, dass die Achse durch den Nullpunkt gehen soll Die Transformationsgleichungen lauten: x = u + 1 , y = v + 2 , z = w + 3 und umgekehrt: u = x - 1 , v = y - 2 , w = z - 3. Wir erhalten nun die gleiche Drehmatrix wie im ersten Beispiel, da wiederum {1; 1 ; 1 } der schon richtig normierte Richtungsvektor der Drehachse ist ( Drehwinkel wiederum 120° ) Es gelten daher die Abbildungsgleichung (in den neuen Koordinaten) von früher: u' = w v' = u w' = v Rücktransformation in die alten Koordinaten: x' - 1 = z - 3 , also x' = z - 2 y' - 2 = x - 1 , also y' = x + 1 z ' - 3 = y - 2 , also z' = y + 1 angewendet auf P( 6 / 0 / 0 ) ergibt dies : P' ( - 2 / 7 / 1) als Ergebnis. Kontrolle Wir berechnen mit Hilfe des Skalarproduktes den Winkel phi und die Beträge der Vektoren d = MP = { 5 ; - 2 ; - 3 } und f = MP' = {-3 ; 5 ; - 2 } wir erhalten cos (phi) = [(-15 -10 + 6) / (wurzel(38)) ^ 2 ] = - 1 / 2 , also : phi = 120° , wie es sein muss ! Im Zähler des obigen Bruches steht das Skalarprodukt der Vektoren d und f, im Nenner steht das Produkt ihres Absolutbetrages. Man erkennt den Radius R = wurzel(38), Damit ist die Aufgabe 2 vollständig gelöst. Mit freundlichen Grüßen H.R.Moser,megamath. |
H.R.Moser,megamath.
| Veröffentlicht am Donnerstag, den 14. September, 2000 - 17:46: |
|
Hi Harald, Wenn Du nur einzelne Punkte auf dem Kreis c benötigst, welcher der Punkt P bei der Rotation um die Achse a beschreibt, so kannst Du eine wesentlich einfachere Methode einsetzen, die Verwendung einer Parameterdarstellung des Kreises c. Das geht so: m ={m1;m2;m3}sei der Ortsvektor des Mittelpunktes M , u und v seien zwei Vektoren, welche die Kreisebene aufspannen und folgende Eigenschaften haben: ihr Skalarprodukt ist null, ihre Beträge stimmen beide mit dem Kreisradius R überein. Mit u = {u1;u2;u3} und v = {v1;v2;v3} entsteht die Parametergleichung des Kreises c : x = m1 + u1 * cos (s) + v1 * sin (s) y = m2 + u2 * cos (s) + v2 * sin (s) z = m3 + u3 * cos (s) + v3 * sin (s) Die Variable s ist Parameter ; es gilt 0 < = s < 360° Beispiel Wir übernehmen die Daten von Beispiel 2 aus meinem früheren Beitrag. P(6/0/0) , Mittelpunkt M (1/2/3), daraus berechnet man den Radius R = MP = wurzel (38) n ={1;1;1} ist ein Normalenvektor der Kreisebene ;weiter: Vektor m = {1,2;3} Vektor u = MP ={5;-2-3} Den Vektor v erhalten wir als Vektorprodukt n x u , wobei wir so normieren , dass v den Betrag R = wurzel (38) bekommt. Resultat: v = 1 / wurzel(3) * { -1 ; 8; - 7 } Aus allem entsteht nun die Parameterdarstellung des Kreises x = 1 + 5 * cos (s) - 1 / wurzel(3) * sin (s) y = 2 - 2 * cos (s) + 8 / wurzel(3) * sin (s) z = 3 - 3 * cos (s) - 7 / wurzel(3) * sin (s) Setzt man nun in diesem Gleichungssystem s = 120° ein so erhält man den gedrehten Punkt P': P'(-2 / 7 / 1) wie früher. Bravo ! Mit freundlichen Grüssen H.R.Moser,megamath. |
Harald Rafetseder (Equinox)
| Veröffentlicht am Freitag, den 15. September, 2000 - 12:37: |
|
Das war genau das, was ich suchte ! Danke vielmals. Harald. |
|