【问题标题】:Rotation around the origin绕原点旋转
【发布时间】:2015-07-29 01:23:02
【问题描述】:

我正在尝试围绕原点旋转一个点,但我不确定我到底做错了什么,我使用的是 PresentationCore 中内置的 System.Windows.Media.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; 是:10; z:0;

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

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

【问题讨论】:

    标签: c# matrix 3d rotation quaternions


    【解决方案1】:

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

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

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

    【讨论】:

    • 看来我当时可能白担心了。如果恰好是这样,我将进行更多测试并将其标记为答案
    • 实际上四舍五入解释了第三个分量,但为什么 Y 是 -10 而不是 10,度数是否假定为逆时针?
    • 这就是我的假设。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-08-30
    • 2018-08-03
    • 1970-01-01
    • 2014-12-31
    • 2021-11-07
    • 2015-04-11
    • 2015-12-23
    相关资源
    最近更新 更多