绕原点旋转
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。
我正在尝试围绕原点旋转一个点,但我不确定我到底做错了什么,我正在使用内置的 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。