绕原点旋转

时间:2015-07-29 01:23:02

标签: c# matrix 3d rotation quaternions

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

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

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

1 个答案:

答案 0 :(得分:0)

(这个答案假设您正在使用并使用逗号(,)的欧洲表示法而不是点(。))

你得到了正确的答案。 2,22044604925031 * 10 ^ -15是一个很小的数字,它几乎为零,但有舍入错误。

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