首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么PhysicsJS中的重力加速度是0.0004?

为什么PhysicsJS中的重力加速度是0.0004?
EN

Stack Overflow用户
提问于 2014-05-16 21:04:02
回答 3查看 911关注 0票数 11

或者,也许更好,这意味着什么?

单位应该是什么?

如果我试图在“背景”下模拟摩擦,就像这样:

代码语言:javascript
复制
return this
    .velocityDirection
    .mult(mu * this.mass * g)
    .negate();

我希望使用g作为9.80665米/秒^2。在PhysicsJS之前,它是这样工作的:

代码语言:javascript
复制
var
    frictionForce;
    frictionForce = vec2.create();
    vec2.scale(
        frictionForce,
        vec2.negate(
            frictionForce,
            this.velocityDirection
        ),
        mu * this.mass * g
    );
return frictionForce;

在我的线性代数中使用glMatrix。

我考虑的是以公斤为单位的质量和以牛顿(等等)为单位的力,但在PhysicsJS中,它似乎不是那样工作的。(例如:如果我有一个半径为1的圆体,它是1什么?因为当我不得不将这个值用于其他东西时,以及当我将它“转换”为屏幕上的像素时,它会产生不同的效果。

现在我在使用一个物理库,我觉得我错过了一些物理.

我希望有人能指出正确的方向,以更好地理解它。我现在正在学习API文档,并且学到了很多东西,但我没有找到我想要的答案。

更新

我收到了一个非常直截了当的答复。这只是为了让有兴趣的人知道我当时做了什么..。

多亏了Jasper和dandelany,我才明白了一些PhysicsJS是如何工作得更好的。为了实现我的“梦想”--在PhysicsJS中使用以牛顿、秒平方(etc)表示的输入(并且还有可配置的像素/米比),我决定创建另一个积分器。

这只是最初的(和默认的) verlet积分器的一个细微的变化。我或多或少地在这篇(粗糙的) 米、秒和牛顿( PhysicsJS )文章中解释了它。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-05-17 16:25:23

单位是距离的像素,时间的毫秒。

加速度是0.0004像素/毫秒/毫秒

由于种种原因,使用计量器是没有意义的。每英寸像素数随设备的不同而变化。而且,即使你进行了转换,9.8米/秒/秒的加速速度看起来也是非常快的,因为通常计算机模拟都想从远处看它。所以你不希望屏幕上的仪表与模拟中的米相对应。

票数 6
EN

Stack Overflow用户

发布于 2014-06-06 19:51:41

显然,我还不能对帖子发表评论,所以以下是贾斯珀回答的后续内容,因为你问了一些关于转换的建议:

Jasper将单位设为0.0004 px/ms/ms (或px/ms^2)。知道单位使得这个转换非常简单的使用单位取消。首先,我们将这个数字转换为px/s^2:

0.0004 px/ms^2 * 1000 ms/s * 1000 ms/s = 400 px/s^2

既然我们知道地球上的重力是~9.8 m/s^2,这就意味着默认值模拟的尺度是:

400 px/s^2 * (1/9.8) s^2/m ~= 41 px/m

因此,在默认设置下,PhysicsJS模拟的是一个米长为41像素的世界。如果我们使用您的例子“180厘米的人有50像素高”,那么我们将转换为以下的比例:

50px / 0.180m ~= 278px/m

将其转换回px/ms^2,加速度为9.8米/秒^2,您将得到:

278 px/m * 9.8 m/s^2 * (1/1000) s/ms * (1/1000) s/ms ~= 0.00272 px/ms^2

因此,为了模拟一个180厘米的人身高为50‘d的世界,您可以使用0.00272作为PhysicsJS y-加速度参数。

票数 5
EN

Stack Overflow用户

发布于 2014-05-16 21:25:16

来自PhysicsJS基本用法 -行为

代码语言:javascript
复制
// add some gravity
var gravity = Physics.behavior('constant-acceleration', {
    acc: { x : 0, y: 0.0004 } // this is the default
});

你可以控制重力是如何工作的,但它似乎不能提供一个单位参考。

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

https://stackoverflow.com/questions/23704514

复制
相关文章

相似问题

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