哪种方法旋转3d矢量

时间:2014-08-10 23:04:15

标签: c# math mathnet

我使用哪个Math.Net函数围绕另一个3d Vector(Pivot Point)旋转3d Vector?

我正在使用C#Library Math.Net,主要是因为我不怕说我在使用复杂的数学概念。有人建议我使用仿射变换,但似乎没有执行此概念/公式的类或方法。此外,矢量类没有Rotate方法,因此不是解决方案。

您能否建议我使用哪种功能,方法或类来实现这一目标?

1 个答案:

答案 0 :(得分:0)

我不了解Math.Net,但通常会构建一个4x4矩阵并将该向量与该矩阵相乘。 如果你想围绕另一个向量旋转,你需要一个以下列方式构建的矩阵: (移动到枢轴点,旋转并移回原点)

伪代码:

matrix = matrix.translation(pivot.x, pivot.y, pivot.z))
matrix *= matrix.rotationAxisAngle(axis, angle))
matrix *= matrix.translation(-pivot.x, -pivot.y, -pivot.z))

现在您可以将矢量与该矩阵相乘:

newVector = yourVector * matrix