如何使用4d转子
我试图创建一个4D环境,类似于Miegakure的。如何使用4d转子
我无法理解如何表示旋转。 Miegakure的创造者写了这篇小文章解释他为4d转子做了一个班。 http://marctenbosch.com/news/2011/05/4d-rotations-and-the-4d-equivalent-of-quaternions/
我该如何实现这个类的功能?特别是旋转矢量和其他转子的功能,并获得相反的?
我将不胜感激一些伪代码示例。 非常感谢任何困扰回答的人。
解决围绕任意矢量的旋转会让你疯狂4D。是的,这里有像The Euler–Rodrigues formula for 3D rotations expansion to 4D那样的方程式,但它们都需要求解方程组,它的使用对我们来说实在不太直观,在4D。
我使用平行(3D类似于围绕主轴系转动在)面而不是旋转在4D有他们的6 XY,YZ,ZX,XW,YW,ZW
所以才创建旋转矩阵(类似于3D)。我使用5x5的homogenuous变换矩阵为4D所以旋转看起来是这样的:
xy:
(c , s ,0.0,0.0,0.0)
(-s , c ,0.0,0.0,0.0)
(0.0,0.0,1.0,0.0,0.0)
(0.0,0.0,0.0,1.0,0.0)
(0.0,0.0,0.0,0.0,1.0)
yz:
(1.0,0.0,0.0,0.0,0.0)
(0.0, c , s ,0.0,0.0)
(0.0,-s , c ,0.0,0.0)
(0.0,0.0,0.0,1.0,0.0)
(0.0,0.0,0.0,0.0,1.0)
zx:
(c ,0.0,-s ,0.0,0.0)
(0.0,1.0,0.0,0.0,0.0)
(s ,0.0, c ,0.0,0.0)
(0.0,0.0,0.0,1.0,0.0)
(0.0,0.0,0.0,0.0,1.0)
xw:
(c ,0.0,0.0, s ,0.0)
(0.0,1.0,0.0,0.0,0.0)
(0.0,0.0,1.0,0.0,0.0)
(-s ,0.0,0.0, c ,0.0)
(0.0,0.0,0.0,0.0,1.0)
yw:
(1.0,0.0,0.0,0.0,0.0)
(0.0, c ,0.0,-s ,0.0)
(0.0,0.0,1.0,0.0,0.0)
(0.0, s ,0.0, c ,0.0)
(0.0,0.0,0.0,0.0,1.0)
zw:
(1.0,0.0,0.0,0.0,0.0)
(0.0,1.0,0.0,0.0,0.0)
(0.0,0.0, c ,-s ,0.0)
(0.0,0.0, s , c ,0.0)
(0.0,0.0,0.0,0.0,1.0)
凡c=cos(a),s=sin(a)
和a
是旋转的角度。旋转轴经过坐标系原点(0,0,0,0)
。欲了解更多信息一起来看看这些:
- Understanding 4x4 homogenous transform matrices矿山3D数学
- 4D rendering techniques矿C++ 4D渲染
- Visualising 4D objects in OpenGL旧的质量检查的
- 4D to 3D perspective projection旧的质量检查的
- Four-Space Visualization of 4D Objects这是最全面的东西上我发现的主题阅读它 !!!
任何想法,减号的地方?描述AB(i,j)(其中A,B是XYZW之一)的通用公式的链接会很好。我想知道这些标志是否根据旋转的一些右旋方向来选择。如果是这样,4D中的定义如何? – DolphinDream
@DolphinDream不知道你的意思是由'AB(i,j)'和减号(因为注释表明都是4D向量)?如果你的意思是“矩阵*矢量”,那么你提到的是什么减号?如果'-s = -sin(dangle)'那么是它确定旋转CW/CCW。您可以使用旋转和未旋转矢量的点积符号来确定旋转的方式。如果你正在写**欧拉 - 罗德里格斯公式**,那么就没有直接的方程式,而是需要为运行中的每次旋转求解一个方程组。这就是为什么使用增量式平面旋转更好/更容易实现的原因。 – Spektre
我能够学习后使用转子更多的受拜上此YouTube一系列关于几何代数:https://www.youtube.com/watch?v=PNlgMPzj-7Q&list=PLpzmRsG7u_gqaTo_vEseQ7U8KFvtiJY4K
这真是很好的解释,我把它推荐给任何人想要做这种东西。
如果您已经了解四元数乘法,乘法转子不会有任何不同,而I,J,四元数的K单元是模拟几何代数的基础bivectors:E12,E13,E23
因此,4D中的转子将是(A + B * e12 + C * e13 + D * e14 + E * e23 + F * e24 + G * e34 + H * e1234)。 http://www.euclideanspace.com/maths/algebra/clifford/d4/arithmetic/index.htm
难道他已经提供了实现:
展示如何乘这些单位的表格可以在此页面上找到? – meowgoesthedog
@spug我没有看到任何...这些只是标题,但我懒得挖在那里的档案... – Spektre