Hallo,
also, es soll ein vektor sein und kein Punkt ?
Wieso wird dann (* Rotationspunkt *) angegeben, bei
Punkten ist das berechtigt, bei Vektoren voellig sinnlos da
sich ein Vektor nicht aendert wenn er verschoben wird ...
Also bei Achse, Winkel Drehungen muss die Achse normiert sein,
und die Behauptung, bei der Drehung eines 3d Vektors um eine 3d Achse
wuerde der Winkel zwischen original und gedrehten und Vektor der
Rotationswinkel
entsprechen ist schlicht falsch. Das ist nur so, wenn Rotationsachse und
der Vektor
senkrecht aufeinander stehen, was aber
(* Rotationsachse *)
short = {5.336001486622095`, 13.052746537236356`, 0};
(* soll rotiert werden um \[Alpha] *)
long = {16.742036674853523`, 16.50933472268598`, 0};
wohl eher nicht der Fall ist, es ist also nicht verwunderlich, das
VectorAngle[]
nicht den Rotationswinkel ergibt.
Ansonsten sieht
(* Rotationspunkt *)
cen = {9.671186373394189`, 8.981002368495835`, 0};
(* Rotationsachse *)
short = {5.336001486622095`, 13.052746537236356`, 0};
(* soll rotiert werden um \[Alpha] *)
long = {16.742036674853523`, 16.50933472268598`, 0};
rot = RotationTransform[\[Alpha], #/Sqrt[#.#] &[short - cen], cen];
coorRot = rot[{x, y, z}] // FullSimplify;
(* Rotationspunkt *)
rotP = Graphics3D[{PointSize[Large], Point[cen]}];
(* Rotationsachse *)
rotAxis = Graphics3D[Line[{cen, short}]];
(* soll rotiert werden *)
refL = Graphics3D[Line[{cen, long}]];
(* Anschauungsbeispiele *)
rotL1 = Graphics3D[Line[{cen, sol /. \[Alpha] -> 90 Degree}]];
rotL2 = Graphics3D[Line[{cen, sol /. \[Alpha] -> 0 Degree}]];
Show[rotAxis, rotP, refL, rotL1, rotL2]
doch recht gut aus ...
Gruss
Jens
Christian M. Sperber wrote:
Hallo,
ich versuche einen Vector zu drehen. Dafuer wollte ich
'RotationTransform' benutzen, aber funktioniert nicht so wie es
erwartet haette. Der Test VectorAngle ergibt nicht wieder den
Rotationswinkel.
Ich wuerde mich freuen, wenn sich das jemand mal angucken wuerde.
Christian