四元数旋转
几何画板及绘图内容加载中,请稍等……
这个范例演示了四元数在旋转中的应用。核心数学概念包括四元数和旋转。通过使用GeoGebra命令如TextField、Line、Rotate等,可以构造四元数到旋转的转换。适合高中及以上学生或数学爱好者学习四元数和旋转变换。
GeoGebra 命令及参数
Textfield(A) → InputBox1Textfield(angle1) → InputBox2Textfield(B) → InputBox3Textfield(angle2) → InputBox4Textfield(P) → InputBox5q2m(Q1) → M1q2m(Q2) → M2q2m(Qp) → Mpm2q((M2 * M1)) → Qtm2q(((q2m[Qt] * Mp) * q2m[qconj[Qt]])) → Qp'Line((0, 0), B) → gLine((0, 0), A) → fRotate(P, angle1, f) → RIf(0 < t < 1, Rotate[P, (t * angle1), f], If[1 < t < 2, Rotate[R, ((t - 1) * angle2), g]]) → SCircle(g, R) → cCircle(f, P) → dCircle(Line[(0, 0, 0), (Element[Qt, 2, 1], Element[Qt, 3, 1], Element[Qt, 4, 1])], P) → eLine((0, 0, 0), (Element[Qt, 2, 1], Element[Qt, 3, 1], Element[Qt, 4, 1])) → hCylinder(P + (0, 0, 0.4), P - (0, 0, 0.4), 0.3) → l, l_2, l_3, l_4Sphere(P + (0, 0, 0.75), 0.4) → jCylinder(P + (0, -0.2, 0.35), P + (0.2, -0.75, 1), 0.15) → m, m_5, m_6, m_7Cylinder(P + (0, -0.1, -0.35), P + (0, -0.5, -1.2), 0.2) → k, p, q, nCylinder(P + (0, 0.1, -0.35), P + (0, 0.5, -1.2), 0.2) → o, r, s, uCylinder(P + (0, 0.2, 0.35), P + (0.7, 0.6, 0.45), 0.15) → m_4, m_2, m_3, m_4Rotate(k, angle1, f) → k'Rotate(l, angle1, f) → l'Rotate(m, angle1, f) → m'Rotate(m_4, angle1, f) → vRotate(o, angle1, f) → o'Rotate(j, angle1, f) → j'Rotate(k, (t * angle1), f) → k'_1Rotate(l, (t * angle1), f) → l'_1Rotate(m, (t * angle1), f) → m'_1Rotate(m_4, (t * angle1), f) → wRotate(o, (t * angle1), f) → o'_1Rotate(j, (t * angle1), f) → j'_1Rotate(k', ((t - 1) * angle2), g) → k''Rotate(l', ((t - 1) * angle2), g) → l''Rotate(m', ((t - 1) * angle2), g) → m''Rotate(o', ((t - 1) * angle2), g) → o''Rotate(v, ((t - 1) * angle2), g) → v'Rotate(j', ((t - 1) * angle2), g) → j''Rotate(k', angle2, g) → k''_1Rotate(l', angle2, g) → l''_1Rotate(m', angle2, g) → m''_1Rotate(o', angle2, g) → o''_1Rotate(v, angle2, g) → v'_1Rotate(j', angle2, g) → j''_1Rotate(l, (t / 2 * angle3), h) → l'_2Rotate(k, (t / 2 * angle3), h) → k'_2Rotate(m, (t / 2 * angle3), h) → m'_2Rotate(m_4, (t / 2 * angle3), h) → a_1Rotate(o, (t / 2 * angle3), h) → o'_2Rotate(j, (t / 2 * angle3), h) → j'_2