首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Ammo.js setRotation不匹配getRotation

Ammo.js setRotation不匹配getRotation
EN

Stack Overflow用户
提问于 2022-11-08 00:40:42
回答 1查看 21关注 0票数 0

我正在使用Ammo.js物理库(https://github.com/kripken/ammo.js/)

下面是这个问题的一个例子:

代码语言:javascript
复制
        const a = [-0.0000064798259700182825, -0.0013201627880334854, 0.0000027575993044592906, 0.9999991059303284]
        const t = new Ammo.btTransform();
        t.setIdentity();
        const q = new Ammo.btQuaternion(a[0], a[1], a[2], a[3])
        t.setRotation(q)
        const r = t.getRotation()
        assert(a[0] === r.x()) // fails here as r.x() === -0.000006479827334260335
        assert(a[1] === r.y())
        assert(a[2] === r.z())
        assert(a[3] === r.w())

我本来希望得到与我设定的相同的轮换值,但没有得到。我也尝试过先使四元数正常化,但这不是问题所在。任何建议都将不胜感激!

EN

回答 1

Stack Overflow用户

发布于 2022-11-08 00:57:29

这不是库的问题,而是JavaScript的限制。要在JavaScript中实现任意精度的十进制算法,您应该签出这个答案.不幸的是,这些库中的任何一个都不可能与ammo.js兼容,所以我不会费心在这个答案中包含这些代码示例。

对于特定的库,本期解释了如何使用双精度而不是浮点精度。正如线程解释的那样,您需要修改btScalar.h文件才能打开BT_USE_DOUBLE_PRECISION。作者还提到可能需要对ammo.idl文件进行修改,但没有进一步详细说明。

为了获得进一步的支持,我建议要么在这个问题上接触作者(这个问题在2020年结束),要么创建您自己的问题,要求更详细地说明如何进行必要的更改。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74354519

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档