使用四元数:我该怎么办?(没有数学)
我是游戏开发人员,没有学习数学。所以我只想使用四元数作为工具。为了能够进行3D旋转,有必要使用四元数(或矩阵,但在本问题中,我们先保留四元数)。我认为对于许多开发人员来说,使用它们很重要。这就是为什么我想分享我的知识并希望填补我的空缺。现在.... 据我了解: 四元数可以描述两件事: 3d对象的当前方向。 对象可以执行的旋转变换。(rotationChange) 您可以使用四元数: 乘法: 四元数endOrientation =四元数旋转Change *四元数currentOrientation; 因此,例如:我的3D对象向左旋转90°-我乘的旋转就是向右旋转180°,最后我的3D对象90°向右旋转。 四元数rotationChange =四元数endRotation * Quaternion.Inverse(startRotation); 这样,您将获得一个rotationChange,可以将其应用于另一个方向。 Vector3 endPostion =四元数rotationChange * Vector3 currentPosition; 因此,例如:我的3D对象位于位置(0,0,0)上,并且我乘以的旋转是向右旋转180°,我的端点类似于(0,-50,0)。在四元数内部有一个轴-以及围绕该轴的旋转。您围绕该轴Y度旋转点。 Vector3 rotationOffsetVector =四元数rotationChange * Vector3 currentOffsetVector; 例如:我的开始方向显示为UP-(0,1,0),我乘以的旋转方向是向右旋转180°,我的结束方向显示为向下。(0,-1,0) 混合(Lerp和Slerp): 四元数currentOrientation =四元数.Slerp(startOrientation,endOrientation,插值器) 如果插值器为1:currentOrientation = endOrientation 如果插值器为0:currentOrientation = startOrientation Slerp插值更精确,而Lerp插值更高效。 我的问题: 我到目前为止所解释的一切都正确吗? 四元数可以做到这一点吗?(不可以) 您还能对他们做什么? 两个四元数之间的点积和叉积有什么好处? 编辑: 更新了问题并提供了一些答案