Rotation eines Körpers |
09.02.2006, 09:04 | Top Gun | Auf diesen Beitrag antworten » |
Rotation eines Körpers Ich habe mir ein einfaches Programm geschrieben, welches mir eine dreiseitige Pyramide (ABCD) zeichnet. Dazu benutze ich die Matrix: 1|0 0|1 0|-1/2 Nun soll die Pyramide gedreht werden. Hierbei definiere ich eine einfache Achse (g) parallel zur Y-Achse bei x=5 (hier nur als Beispiel da im Programm eine größere Zahl verwendet werden muss). Der Einfacheit halber liegt D (Spitze der Pyramide) auf g. Mein Problem jetzt ist es den Körper rotieren zu lassen, wobei ich auf das Problem gestoßen bin, dass die Punkte den selben Abstand bei behalten müssen, da sich der Körper ansonsten verformt. Um den Abstand eines Punktes zu einer geraden zu bestimmen, fälle ich normalerweise das Lot, aber wie mache ich das rechnerisch? Leider ist mir aber auch schleierhaft wie ich weiter mache wenn ich den Abstand bestimmt habe... Mein Kollege meinte, es würde gehen in dem man die Matrix verändert, jedoch haben all meine Versuch nichts ergeben... |
||
09.02.2006, 22:56 | quarague | Auf diesen Beitrag antworten » |
der allgemeine Lösungansatz sieht etwa so aus: sei (x,y,z) ein Punkt in IR³, dieser soll um eine Gerade, die parallel zur Y-Achse liegt und durch den Punkt (a,0,b) geht, um den Winkel t gedreht werden. => Der Punkt rotiert in der x-z Ebene. Sei r der Abstand zur Rotationsachse, also r²=(x-a)²+(z-b)² Dann hat der gedrehte Punkt die Koordinaten: (r*cos(t), y, r*sin(t)) wenn du nicht parallel zu einer der Koordinatenachsen drehst werden die Formel ein bisschen komplizierter aber das Prinzip ist das Gleiche. |
||
10.02.2006, 09:58 | Top Gun | Auf diesen Beitrag antworten » |
Also ich habe ja nochmal ne Nacht drüber geschlafen und da sind mir ein paar Fehler eingefallen bzw ein Paar Ideen gekommen... 1. Wie du bemerkt hast ist die Achse g nicht nur auf X sondern auch auf Z verschoben. 2. Bin ich mir etwas unsicher geworden ob ich meine Achsen in meinen Überlegungen richtig benannt habe... Ich benenne gegen den Uhrzeigersinn?! Also die Achse waagerecht nach links und rechts ist X, die Achse senkrecht ist Y, die Achse waagerecht nach vorne und hinten ist Z?! (Nach deinem Post jedoch glaube ich das ich es richtig gemacht habe...) Danke erstmal für die tolle Antwort, das hat mir mächtig weiter geholfen. Wenn ich nun um die X Achse drehen würde müsste ich die Formel so angleichen?! Achse g geht durch den Punkt (0,a,b) r²=(y-a)²+(z-b)² Und wenn ich um die Z Achse drehe, wäre das doch genauso?! Aber bei der Berechnung des gedrehten Punktes, wann muss ich cos und wann sin benutzen? Ist das für jede Achse festgelegt? Oder geht es danach wie ich drehen will? Weiterhin würde mich interessieren wie die Formel auszusehen hat wenn ich nicht um eine Achse drehen will... EDIT: Ich habe das mal ausprobiert doch scheint es nicht zu klappen... Ich habe dann in Excel die Punkte zu den Rotationswinkeln berechnen lassen und irgendwas stimmt da nicht: Winkel x y z 1 3,82051424 10 5,95009840 2 -2,94260250 10 6,42970377 3 -7,00030408 10 0,99786915 4 -4,62195837 10 -5,35140176 5 2,00579455 10 -6,78061857 6 6,78942921 10 -1,97576594 7 5,33089396 10 4,64559679 8 -1,02884061 10 6,99581925 9 -6,44266387 10 2,91411776 10 -5,93313168 10 -3,84681017 11 0,03129441 10 -7,07099856 12 5,96694857 10 -3,79414349 13 6,41661773 10 2,97102961 14 0,96687814 10 7,00465179 15 -5,37180475 10 4,59822941 16 -6,77167513 10 -2,03578388 17 -1,94569862 10 -6,79810686 18 4,66914422 10 -5,31028175 19 6,99119740 10 1,05979191 20 2,88557593 10 6,45549778 21 -3,87303074 10 5,91604876 22 -7,07079081 10 -0,06258821 23 -3,76769842 10 -5,98368186 24 2,99939853 10 -6,40340601 25 7,00886230 10 -0,93586820 PS: ich weiß sieht hier scheiße aus, doch glaub ich kann man da durchsteigen und sehen was ich meine, bei fragen kann ich dann gerne die Exceltabelle vorlegen. EDIT II: Bei einem Rotationswinkel von 0 müsste ich doch eigentlich meine eigentlichen Punkte herausbekommen, das geht auch schief... |
|
Verwandte Themen
Die Beliebtesten » |
|
Die Größten » |
Die Neuesten » |
|