我使用哪个Math.Net函数来围绕另一个 3d 矢量(枢轴点)旋转 3d 矢量?
我正在使用 C# Library Math.Net,主要是因为我不怕说我在复杂的数学概念上苦苦挣扎。有人建议我使用仿射变换,但似乎没有执行此概念/公式的类或方法。向量类也没有Rotate
方法,所以这不是解决方案。
你能建议我用什么函数、方法或类来实现这个吗?
我不知道 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