11

または、おそらく、それはどういう意味ですか?

単位は何ですか?

次のように、「背景」に対する摩擦をシミュレートしようとしている場合:

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で説明しています

4

3 に答える 3

6

単位は、距離はピクセル、時間はミリ秒です。

したがって、加速度は0.0004ピクセル/ミリ秒/ミリ秒です

メーターを使用することは、さまざまな理由で意味がありません。1 インチあたりのピクセル数は、デバイスによって異なります。また、変換を行ったとしても、9.8 m/s/s の加速度は非常に速いように見えます。通常、コンピューター シミュレーションでは、遠くから見ているように見えるようにする必要があるためです。画面上のメーターをシミュレーションのメーターに対応させます。

于 2014-05-17T16:25:23.600 に答える
5

どうやら私はまだ投稿にコメントできないようです。コンバージョンを行うためのヒントを求めたので、ジャスパーの回答のフォローアップを次に示します。

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 は 1 メートルの長さが 41 ピクセルの世界をシミュレートしています。「180 センチメートルの人は 50 ピクセルの高さ」という例を使用すると、次のスケールに変換されます。

50px / 0.180m ~= 278px/m

これを 9.8 m/s^2 の加速度で px/ms^2 に戻すと、次のようになります。

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

したがって、身長 180 cm の人の身長が 50 ピクセルの世界をシミュレートする0.00272には、PhysicsJS の y 加速度パラメーターを使用します。

于 2014-06-06T19:51:41.510 に答える
0

PhysicsJS の基本的な使い方- 動作から

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

重力の仕組みを制御できますが、単位の参照は提供されていないようです。

于 2014-05-16T21:25:16.900 に答える