【发布时间】:2014-06-12 05:39:17
【问题描述】:
或者,也许更好,这是什么意思?
单位应该是什么?
如果我试图模拟与“背景”的摩擦,如下所示:
return this
.velocityDirection
.mult(mu * this.mass * g)
.negate();
我希望将 g 用作 9.80665 m/s^2。在 PhysicsJS 之前它就是这样工作的:
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 中使用牛顿、米每秒平方(等)输入(并且还具有可配置的每米像素比率),我决定创建另一个积分器。
这只是原始(和默认)verlet 集成器的轻微变化。 我在这篇(粗略的)文章Metres, Seconds and Newtons in PhysicsJS
中或多或少地解释了它【问题讨论】:
-
可能只是一个“有效”的值。将像素视为真实世界的单位是很棘手的,尤其是在游戏中。想象一下“1 像素 = 1 英尺”——这个重力常数必须是多少像素/秒²才能在合理的时间内下降一定距离?更容易尝试不同的值,直到它看起来正确:-)
-
@Jongware 哇...我真的不想相信。 =P 以前我自己处理运动并且“使用”通常的单位(至少,相对于彼此)。我只是将 1 米设置为 50 像素,一切正常。但在任何时候我都可以手动调整这种关系。然后我可以用真实的数值模拟真实的力量。正如 Burak Kanber (burakkanber.com/blog/…) 所做的那样……我还没有放弃。 =)
标签: javascript physics physicsjs