問題タブ [physics]
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.
.net - F# は物理アプリケーションに適していますか?
物理は嫌いですが、ソフトウェア開発は好きです。感謝祭が終わって学校に戻ったら、恐ろしいことを終わらせる前に、さらに 2/4 の物理学を履修する予定です。現在、F# 測定単位機能に関する投稿を読んでいますが、F# のような言語を使用したことはありません。好きなことをしながら物理学について学ぶことができるように、アプリケーションを作成するのに適しているでしょうか?
運動学、平面運動、ニュートンの法則、重力、仕事、エネルギー、運動量と衝動、粒子、回転運動学と力学、角運動量、静的平衡、振動運動、波動、音、物理光学、静電気、ガウスの法則、電場と電位、静電容量、抵抗、直流回路、磁場、アンペアの法則、インダクタンス.
私が F# に興味を持った理由は、この言語が提供する測定単位の機能にあります。
flash - Sandy 3D: 物理演算で部屋を作成する
Sandy 3D で部屋の作成を開始するのを手伝ってくれる人がいるかどうか疑問に思っていました。平面を生成できることはわかっていますが、単純な物理演算を実装する方法がわかりません (つまり、プレイヤーは壁を通り抜けることができません)。これを行う簡単な方法はありますか、または WOW (Flash 用の 3D 物理エンジン) のようなものを調べる必要がありますか?
ありがとう、キャメロン
language-agnostic - 角運動量伝達方程式
2つの剛体間の角運動量の伝達を計算する方法について、比較的簡単に実装できる方程式の良い参考文献はありますか?
私はこの種のものをしばらく探していましたが、問題の特にわかりやすい説明は見つかりませんでした。
正確には、この質問は次のようになります。2 つの剛体が摩擦のない (ほぼ) 表面上を移動しています。エアホッケーだと思ってください。2 つの剛体が接触し、離れます。さて、角運動量を考慮しないと、方程式は比較的単純です。問題は、物体間の角運動量の移動で何が起こるかということです。
例として、2 つの物体に角運動量がまったくないと仮定します。彼らは回転していません。それらが斜めの角度で相互作用する場合 (移動ベクトルがそれらの重心の線と一致しない)、明らかにそれらの運動量の一定量が角運動量に変換されます (つまり、それぞれが一定量のスピンを取得します)。そのような方程式は何ですか?
これはおそらく多体剛体システムを使用して計算することで解決できますが、リアルタイムで計算できるように、より最適化された計算を実行したいと考えています。プロジェクトに含めるための方程式、またはこれらの計算のオープンソース実装へのポインタに関するアイデアはありますか? 正確には、シミュレーションの単一の「ティック」内でシミュレートする必要がある相互作用の数のため、これはかなり最適化された計算である必要があります。
編集: わかりました、このトピックに関する正確な情報はあまりないようです。そして、「プログラマーのための物理学」タイプの本は、ちょっと頭がおかしいと思います。アルゴリズムのコード実装は必要ありません。アルゴリズムを理解したい (または少なくとも私のためにスケッチした)。そのようにしてのみ、ニーズに合わせて適切に最適化できます。この種のトピックに関する数学的な参考文献はありますか?
physics - 2Dプラットフォーマーの物理
長い休日の週末だったので、コーディングのバグが再び発生し、遊んでみました。
マリオhttp://gfilter.net/junk/tileengine.jpg
私は基本的なタイルエンジンを作成しましたが、これまでこれを試みたことがないため、スプライトの衝突検出の処理と重力の現実的な物理学の実装に本当に苦労しています。
他のゲームホビーライターの場合、これにアプローチするための最良の方法に関するいくつかのウォークスルーを教えていただけますか?
アップデート:
進捗レポートを共有したいと思いました。
http://www.youtube.com/watch?v=-RKNQ2UiiLY<-ゲームの動作
それはまだ本当にバグがありますが、衝突検出はほとんど機能しています。私は他のいくつかの機能(ブロックをぶつける(バグに気付く)や敵との相互作用など)に取り組み始めました。
マリオはまだ月にいるように歩きます、私はこれらの定数を使用しています、よりリアリズムのためにそれらを微調整するためのアドバイスはありますか?
language-agnostic - バウンシング ボール アプリケーションに重力を適用するにはどうすればよいですか?
マウスをドラッグできるようにするかなり単純な Java アプリケーションを作成しました。マウスのドラッグの長さに基づいて、その方向にボールを発射し、壁に跳ね返ります。
簡単なスクリーンショットを次に示します:
代替テキスト http://img222.imageshack.us/img222/3179/ballbouncemf9.png
画面上の円のそれぞれがボール オブジェクトです。ボールの動きは、x および y ベクトルに分解されます。
これはうまくいきます。すべてのボールが壁から壁へと飛び跳ねます。
しかし、重力の影響を含めることができるようにしたいと決めました。オブジェクトが地球に向かって 9.8m/s で加速することは知っていますが、これがどのようにコードに変換されるかは直接わかりません。yVector が影響を受けることはわかっていますが、これを使った私の実験では、私が望んでいた効果が得られませんでした。
理想的には、このプログラムに重力効果を追加し、ボールが「地面」に落ち着く前に数回バウンドできるようにしたいと考えています。
この跳ねるような弾力のある重力効果を作成するにはどうすればよいですか? 各ステップでボールの速度ベクトルを操作するにはどうすればよいですか? それが「地面」に当たったときに、再び跳ね返ることができるようにするために何をしなければなりませんが、前回よりも少し短くなりますか?
私を正しい方向に向けるために、どんな助けでも大歓迎です。
みんなコメントありがとう!それはすでにうまく機能しています!
私の step() では、人々が提案したように重力定数を yVector に追加しています。これが私の checkCollision() です。
ただし、ボールは引き続き床を滑ったり転がったりします。これは、バウンスごとにベクトルのパーセンテージ (90%) を単純に取得しているためであり、それが真にゼロになることは決してないためだと思います。xVector が特定の絶対値になった場合はゼロに変更する必要があるというチェックを追加する必要がありますか?
graphics - ボール同士の衝突 - 検出と処理
スタック オーバーフロー コミュニティの助けを借りて、かなり基本的でありながら楽しい物理シミュレーターを作成しました。
マウスをクリックしてドラッグすると、ボールが発射されます。それは跳ね返り、最終的に「床」で止まります。
追加したい次の大きな機能は、ボールとボールの衝突です。ボールの動きは、x と y の速度ベクトルに分割されます。重力 (ステップごとに y ベクトルの小さな減少) があり、摩擦 (壁との衝突ごとに両方のベクトルの小さな減少) があります。ボールは正直、驚くほどリアルに動きます。
私の質問には2つの部分があると思います:
- ボール同士の衝突を検出する最良の方法は何ですか?
各ボールを反復処理し、半径が重複しているかどうかを確認するために他のすべてのボールをチェックする O(n^2) ループがありますか? - ボール同士の衝突を処理するには、どの方程式を使用すればよいですか? 物理学 101
2 つのボールの速度 x/y ベクトルにどのように影響しますか? 2 つのボールが飛び出した結果の方向は? これを各ボールにどのように適用しますか?
「壁」の衝突検出とその結果のベクトルの変更の処理は簡単でしたが、ボールとボールの衝突ではさらに複雑になります。壁の場合、適切な x または y ベクトルの負の値を取るだけで、正しい方向に進むことができました。ボールに関しては、そうではないと思います。
いくつかの簡単な説明:簡単にするために、今のところ完全に弾性的な衝突で問題ありません。また、すべてのボールは現在同じ質量ですが、将来変更する可能性があります。
編集:私が有用だと思ったリソース
ベクトルを使用した 2D ボールの物理学: Trigonometry.pdf を使用しない 2 次元の衝突
2D ボールの衝突検出の例:衝突検出の追加
成功!
ボールの衝突検出と応答がうまく機能しています。
関連コード:
衝突検出:
これにより、すべてのボール間の衝突がチェックされますが、冗長なチェックはスキップされます (ボール 1 がボール 2 と衝突するかどうかをチェックする必要がある場合は、ボール 2 がボール 1 と衝突するかどうかをチェックする必要はありません。また、それ自体との衝突のチェックもスキップします)。 )。
次に、私のボール クラスには、collliding() メソッドと resolveCollision() メソッドがあります。
ソース コード:ボール トゥ ボール コライダーの完全なソース。
この基本的な物理シミュレーターを改善する方法について誰か提案があれば教えてください! まだ追加していないことの 1 つは、ボールがよりリアルに転がるように角運動量です。他の提案はありますか?コメントを残す!
vector - イプシロン値を使用して、ゲーム内のボールが動いていないかどうかを判断しますか?
ボールが跳ね回っていて、衝突するたびに速度ベクトルが反発係数によって減少します。
現在、私のボールの CoR は .80 です。そのため、何度もバウンドした後、ボールの速度が途方もなく小さい数値になったため、ボールの回転が「停止」しました。
どの段階で、速度値が単純にゼロと呼ぶのに十分小さいかどうかを確認するのが適切です (そのため、ボールが微小速度に反応して狂ったようにジッタリングすることはありません)。以前にいくつかのフォーラムで、人々がイプシロン定数、いくつかの小さな数を使用してそれに対してチェックすることを読んだことがあります。
イプシロン定数を定義して、次のようにする必要があります。
ボールの速度と位置を更新するたびに? これは一般的に行われていることですか?x と y の Vector クラス セッターにそれを配置することは合理的でしょうか? または、速度を計算しているときに、ベクトル クラスの外で行う必要があります。
また、速度ベクトルに float を使用している場合、妥当なイプシロン値は何でしょうか?
linker - 64 ビット Ubuntu での PhysX リンカーの問題
プロジェクトを 64 ビット マシンの PhysX ライブラリにリンクするのに問題があります。それは完全にうまくコンパイルされます。私は 32 ビット マシンとまったく同じ設定を使用しました (一部のデバッグ フラグを除いて)。これは完全に正常にリンクします。ビルド出力は次のとおりです。
g++ -L/usr/lib/PhysX/v2.8.1 -L/usr/lib -o"PhysXTest" ./main.o -lPhysXLoader -lglut
/usr/bin/ld: -lPhysXLoader の検索時に、互換性のない /usr/lib/libPhysXLoader.so をスキップします
/usr/bin/ld: -lPhysXLoader の検索時に、互換性のない /usr/lib/gcc/x86_64-linux-gnu/4.2.3/../../../../lib/libPhysXLoader.so をスキップします
usr/bin/ld: -lPhysXLoader の検索時に、互換性のない /usr/lib/../lib/libPhysXLoader.so をスキップします
/usr/bin/ld: -lPhysXLoader の検索時に、互換性のない /usr/lib/gcc/x86_64-linux-gnu/4.2.3/../../../libPhysXLoader.so をスキップします
/usr/bin/ld: -lPhysXLoader の検索時に、互換性のない /usr/bin/../lib/libPhysXLoader.so をスキップします
/usr/bin/ld: -lPhysXLoader の検索時に、互換性のない /usr/lib64/libPhysXLoader.so をスキップします
/usr/bin/ld: -lPhysXLoader の検索時に、互換性のない /usr/lib/libPhysXLoader.so をスキップします
/usr/bin/ld: -lPhysXLoader が見つかりません
また、何らかの影響がある場合は、usr/lib へのシンボリック リンクを既に設定しています。誰が何が起こっているのか知っていますか?詳細が必要な場合はお知らせください。いつもありがとうございます。
oop - PhysXNxActorの質問
私の知る限り、PhysX APIを使用して、NxActorを取得する唯一の方法は、createActorメソッドを使用してNxSceneのインスタンスから取得することです。これは本当に私を悩ませています。コードをクリーンに保ちたいのですが、クラスがアクターを作成して参照できるように、このシーンをコンストラクターからコンストラクターに渡す以外に選択肢はないように感じます。あるいは、シーンをグローバル(eek!)にすることもできると思いますが、グローバル変数は良い考えではないと思います。クラスにNxActorDescを保存させる(そしてメッセージパッシングを介してアクターを作成するためにシーンに提供させる)という考えがありましたが、変換をアクターと同期できるように、NxActorへの参照が本当に必要です。
とにかく、他の人がどんな洞察を持っているのか見てみたいです。私はこれを正しい方法で行っていると思いますか(NxSceneをいたるところに渡します)?ちょっと不快な感じがしますが、たぶん私は夢中です。そうでない場合、ModelクラスなどをNxActorとよりエレガントな方法で同期するにはどうすればよいですか?前もって感謝します!
memory - コンパイラ以降
さかのぼって、コンパイラ、プロセッサ、およびメモリがプログラムでどのように動作するかについて詳しく知りたいと思います。私はまた、これらすべてが依存している物理学にも興味があります。良い参考文献や本をいただければ幸いです...