在我的3D世界实现中,我使用方向向量(单位向量)来决定我的3D对象的方向。
每个3D对象都有自己的方向向量,默认情况下,方向向量的方向为V3(1,0,0),V3(0,0,0)为Origin。
这就是我如何应用方向性旋转-矩阵"D“(矩阵"A”是用来旋转三维物体围绕其方向向量作为一个轴,这似乎工作得很好)
Model3D model = actor.model;
// Loops through all the edges in the model
for (int i = 0; i < model.edges.length; i++) {
M3 D = direc
对于给定的动画,每个关节的三维坐标集和相应的全局旋转四元数Q(X, Y, Z, W)在右手坐标(Y-up,X-左,Z-前进)- pic。我想改变轴X是一致的统一(Y-上,X-右,Z-前进).
📷
对于坐标,它是obvoius:X' = -X,并按预期工作。
对于四元数分配中的轮调,我从其他来源探索了不同的选项:
X, -Y, -Z, W
-X, Y, Z, W
-X, Y, Z, -W
那么,翻转X轴背后的数学,以及我如何实现这个转换呢?
我们知道,表示为三维齐次坐标的任何二维点(x, y) 都是(x, y, 1)形式的,它是投影平面P^2.的点。
如果我对三维点使用相同的概念,(x, y, z)表示为四维同质坐标,它的形式是(x, y, z, 1).
我的问题是,(x, y, z, 1)可以是三维投影空间的点吗?
我的第二个问题总是齐次坐标是射影空间的点吗?
注- P^2是一种投影平面,它包含\mathbb{R^2}( P^2中的\mathbb{R^2}点可表示为(x, y, 1) )和理想点的投影平面,其形式为(x, y, 0),称为无穷远点。
我需要计算一个三维物体面对任意三维点的两个角度(偏航和俯仰)。这些旋转被称为“欧拉”旋转,仅仅是因为在第一次旋转之后(比如Z,根据下面的图片)Y轴也和物体一起旋转。
这是我正在使用的代码,但它不能完全工作。当物体在地面上(Y = 0)正确旋转以面对点时,当我在Y中向上移动点时,旋转看起来就不正确了。
// x, y, z represent a fractional value between -[1] and [1]
// a "unit vector" of the point I need to rotate towards
yaw = Math.atan2( y, x