从起点,四元数和移动距离获取xyz坐标

时间:2014-06-26 11:18:39

标签: c# quaternions

在我的情况下,我有一个起始坐标x,y,z,四元数中的方向,我知道移动的距离。

基本上我想在应用变换和向前运动后知道x',y',z'。所以我试图使用四元数在3D中移动一个点。我想这应该只是一个简单的计算,但由于某种原因,我无法轻易找到解决方案。

在之前我将四元数转换为欧拉角并用它们来计算x',y',z'。不幸的是,由于万向节锁,这个解决方案不适合我了。

我在python中找到了一些例子,例如C#中的另一个例子,但我仍然没有得到它们的公式,因为他们正在讨论旋转而不是运动它自己,C#示例只是改变了立方体的中间点,然后随着旋转重绘它。

1 个答案:

答案 0 :(得分:1)

为什么重新发明轮子?这种操作最好通过矩阵来处理 - 而C#甚至支持它。

// PresentationCore.dll 
using System.Windows.Media.Media3D;

Matrix3D matrix = Matrix3D.Identity;
matrix.Translate(new Vector3D(x, y, z));
matrix.Rotate(quaterion);
var newPoint = matrix.Transform(point);