绕原点旋转

Rotation around the origin

我正在尝试围绕原点旋转一个点,但我不确定我到底做错了什么,我正在使用内置的 System.Windows.Media.PresentationCore 中的 Media3D 命名空间:

var id = Matrix3D.Identity;
id.Rotate(new Quaternion(new Vector3D(1,0,0),90)); // Rotate around the X axis 90 degrees
var pt = new Point3D(0,0,10);
var p2 = id.Transform(pt); // Expect point to be rotated around the X axis 90 degree

p2 的预期值为 x:0; y:10; z:0;

实际值为 x:0; y:-10; z:2,22044604925031E-15

我确定我犯了一个非常基本的错误,但我无法发现它。

(此答案假设您正在使用欧洲逗号 (,) 而不是点 (.))

您的答案是正确的。 2,22044604925031 * 10^-15 是一个很小的数字,几乎为零,但有舍入误差。

它大约等于:0,0000000000000022,对于大多数实际用途来说足够接近 0。