0

我使用哪个Math.Net函数来围绕另一个 3d 矢量(枢轴点)旋转 3d 矢量?

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

你能建议我用什么函数、方法或类来实现这个吗?

4

1 回答 1

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
于 2014-08-11T00:46:25.590 回答