You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

System.Numerics构建旋转矩阵时符号异常问题咨询

System.Numerics旋转矩阵与标准公式的差异问题

我在使用System.Numerics库,通过CreateFromAxisAngle(Vector3, Single)和CreateRotationY(Single)方法构建旋转矩阵时,遇到了结果不符的问题。

我想要构建一个绕Y轴旋转90°的旋转矩阵,根据Matlab输出以及标准旋转矩阵公式,预期结果应为:

0 0 1 0
 0 1 0 0
-1 0 0 0
 0 0 0 1

但当我执行Matrix4x4.CreateRotationY((float)(Math.PI / 2))或Matrix4x4.CreateFromAxisAngle(new Vector3(0, 1, 0), (float)(Math.PI / 2))时,实际得到的矩阵是:

0 0 -1 0
 0 1  0 0
 1 0  0 0
 0 0  0 1

我可以自行实现旋转矩阵的创建函数,但想搞清楚System.Numerics是否采用了不同的标准,或是我的理解存在疏漏。

以下是CreateRotationY(Single)的实现代码,可以看到它在矩阵(1,3)位置使用了-num2(即-sine值),而按预期应该是sine值:

float num1 = (float) Math.Cos((double) radians);
float num2 = (float) Math.Sin((double) radians);
Matrix4x4 rotationY;
rotationY.M11 = num1;
rotationY.M12 = 0.0f;
rotationY.M13 = -num2;
rotationY.M14 = 0.0f;
rotationY.M21 = 0.0f;
rotationY.M22 = 1f;
rotationY.M23 = 0.0f;
rotationY.M24 = 0.0f;
rotationY.M31 = num2;
rotationY.M32 = 0.0f;
rotationY.M33 = num1;
rotationY.M34 = 0.0f;
rotationY.M41 = 0.0f;
rotationY.M42 = 0.0f;
rotationY.M43 = 0.0f;
rotationY.M44 = 1f;

内容的提问来源于stack exchange,提问作者Gianluca Bardaro

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.04 13:01:55