問題タブ [physics-engine]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
6 に答える
7211 参照

c++ - C++ 演算子の速度/簡単な計算

私は物理エンジンに取り組んでおり、多くの単純または複雑な数学演算を実行する速度とパフォーマンスへの影響をよりよく理解するのに役立つと感じています。

  1. 物理エンジンの大部分は不要な計算を取り除いていますが、比較チェックが必要ないほど計算が小さいのはどの時点でしょうか?

    • 例: 2 つの線分が交差するかどうかのテスト。簡単な計算に入る前に、それらが互いに近くにあるかどうかを確認する必要がありますか?それとも、余分な操作により、長期的にはプロセスが遅くなりますか?
  2. さまざまな数学的計算にかかる時間

    • 例: (3+8) vs (5x4) vs (log(8)) など
  3. 不等式チェックにはどのくらいの時間がかかりますか?

    • 例: >、<、=
0 投票する
1 に答える
2274 参照

ios - Box2Dで凹多角形を描画し、他の形状との衝突を検出する方法はありますか?

私はBox2D物理エンジンの初心者です。不規則な曲線の画像があるので、ポリゴンを作成しようとしています。しかし、Vertex Helperを使用したRaywenderlichデモチュートリアルを参照すると、ポリゴンを描画していますが、多くの場合、凹多角形が生成され、プロジェクトを実行するとクラッシュします。ポリゴンそれは素晴らしいでしょう。

ヘルプや提案をいただければ幸いです。ありがとう

0 投票する
1 に答える
1365 参照

javascript - GoogleChromeでのammo.jsのパフォーマンス

友人と私はWebGLを使用してゲームを開発しており、いくつかの物理エンジンを探した後、ポートまたは弾丸物理ライブラリであるammo.jsを発見しました。簡単な例を実装したところ、FirefoxやSafariと比較してGoogleChromeのフレームレートがひどいことがすぐにわかりました。私が話しているのは、Chromeが10 FPSになるのに対し、Firefoxはかなり一定の60FPSになるということです。

たくさん調べてみたところ、このブログでChromeのライブラリの問題点を正確に説明していることがわかりました。(tl; dr:ammo.jsは、chromeが推奨しない辞書オブジェクトを使用します)

だから私の質問は:辞書を使わずにこのライブラリの移植版はありますか?そうでない場合は、元のC ++の箇条書きコードを変更して再移植する価値がありますか(または実行可能でさえありますか)?上記のオプションのいずれも不可能な場合、JavaScriptのどの物理エンジンをお勧めしますか?

ここでは選択肢がかなり限られていることは知っていますが、質問する価値があると思います。

ありがとう。

0 投票する
2 に答える
1439 参照

physics-engine - Bullet Physics MultiSphereShape の使用法

  1. Bullet Physics フォーラム、またはライブラリ [JBullet、BulletCS] を移植したか、独自の製品 [Blender、Panda3d] に組み込んだ関連フォーラムのいずれかで、役立つ回答を見つけることができなかったため、ここに投稿しています。 ]。ここで、少なくとも私が適切に質問できれば、有益な回答が得られる可能性が最も高いようです。

  2. サイコロの転がしをシミュレートしたい。私が見つけることができるすべての例は、ボックス形状を使用することに満足しているようです。私はラスベガスではなく、子供向けのゲームに興味があります。少なくとも私のアプリケーションでは、決定的な違いは、サイコロ [6 面かどうかに関係なく、ここでは 6 面に固執しましょう] は尖った角のない「より優しい」丸みを帯びたエッジを持っていることです。

  3. btMultiSphereShape は私にとって完璧なようです。私は、低レベルのプリミティブから複雑な形状を構築する知識を持っていない人であり、Bullet の衝突インテリジェンスに既に組み込まれているものを使用したいと考えている人です。エンジンであり、新しいエキゾチックな動作を設計しようとする人ではありません。

  4. その序文とともに、次の簡潔な例を示していただければ幸いです。

    a. 引数を btMultiSphhereShape コンストラクターに渡す方法。b. btDefaultMaotionState に渡す必要がある変換を構成する方法。c. localInertia の設定方法。

  5. これがほとんどすべてをサポートできるクラスを備えた汎用ライブラリであることは理解していますが、初心者のために、よく考えられたツールキットの非常に優れた属性について議論する代わりに、私にとって最も役立つものは何ですか[そして私は他の多くのユーザーに信じられている]は、これらの主要なプロパティを必要なクラスに提供し、メソッドをこれらの詳細に提供する明確な例です。

    a. 大きさが等しい六面体のサイコロで、丸みを帯びた立方体を一辺約2cmにしましょう。b. 「角」の半径を緩やかな 0.1.cm にしましょう。

  6. では、もう一つお願いを。単純な「落下」から始まるサイコロの動作を観察するために、重力による力のみを考慮して、通常の「床」の例に対する衝突からある種の興味深いタンブリング結果をもたらす変換を提案してください。 ; つまり、丸みを帯びた角で床に衝突する必要があります。

0 投票する
2 に答える
3879 参照

java - 凸多面体の重心

3D 空間の頂点の配列によって定義される凸多角形 (面) の配列によって定義される閉じた凸多面体があります。密度が一様であると仮定して、多面体の重心を見つけようとしています。現時点では、この疑似コードのアルゴリズムで計算しています。

これは基本的に、顔の重心の加重平均を取ります。オンラインで正しいアルゴリズムを見つけることができなかったので、これが正しいと 100% 確信しているわけではありません。誰かが私のアルゴリズムを確認するか、正しいアルゴリズムを参照していただければ幸いです。

ありがとう。


[編集]

ここに、重心を見つけるために使用している実際の Java コードを示します。多面体をピラミッドに分割し、多面体内の任意の点に収束します。ピラミッド重心の加重平均は、次の式に基づいています。

C all =すべてのピラミッドの合計(Cピラミッド* ボリュームピラミッド) /すべてのボリューム

これが(コメント の多いコード)です:

ご不明な点がございましたら、お気軽にお問い合わせください。または、表示されたエラーをご指摘ください。

0 投票する
1 に答える
953 参照

c++ - Bullet Physics でソフト ボディの位置を設定する方法

ソフト ボディの動きを x 軸に固定しようとしています。左右に移動できるようにしたいが、z 軸の同じ​​位置にロックしたい。

x 軸に沿って速度を適用している場合でも、空気抵抗とソフト ボディの動きが原因で、ボディが z 軸に戻ることがあります。

この問題に対処するために、ティック コールバックを使用して、ソフト ボディの z 位置が常に 0 になるようにします。

これが最善の方法ですか。そうであれば、どのように位置を設定しますか。

私は .transform() と .translate() を試しましたが、うまくいきませんでした。

ありがとう。

0 投票する
2 に答える
633 参照

geometry - 正方形から四角形に最適

A、B、C、Dの4点からなる形状があり、その位置だけがわかります。目標は、これらのポイントを変換して、相互に特定の角度とオフセットを持たせることです。

例:A(-1,-1) B(2,-1) C(1,1) D(-2,1)、これは、AB、BC、CD、およびAD間のオフセットがすべて2である完全な正方形(すべての角度90)に変換する必要があります。結果は、反時計回りにわずかに回転した正方形になります。

これを行うための最も効率的な方法は何でしょうか?私はこれを単純なブロックシミュレーションプログラムに使用しています。

0 投票する
1 に答える
626 参照

c++ - 変換行列 (NewtonGameDyanmics/OpenGL) を更新するには?

Newton Physics と OpenGL を使用して回転ボックスをシミュレートしようとしています。これは私が実装したものです。

レンダリング ループ内で、これらのことを行っています。

私の問題は、matrix(box.mat) を使用して立方体 (実際には 8 ポイント) を描画する方法です。行列を使用して更新された頂点を計算するにはどうすればよいですか?