C#で物理シミュレーションをしようと考えています。粒子が飛び交う様子をシミュレートし、StartやStopが可能で、粒子のパラメータなどを逐一変更できるようなものにする予定です。
で、シミュレートする部分は大体できたのですが、どのようにして画面に描画するかで悩んでいます。
C#でテトリスを作ったことがあるのですが、Threadで描画(this.Invalidate()の呼び出し)と計算(テトリミノの落下)を無限ループさせるという、かなり強引な手段で作り上げてしまいました。ループの時間間隔の調整はThread.Sleep()で、無限ループの停止、開始は外部からそのThreadをSuspend、Resumeさせることで行っていました。
こんな設計ではどこかでガタがくると思います。C#ではこういう場合、どのようにプログラムするのでしょうか?
できることなら、ひな形となるようなコードを拝見したいのですが…
一例として、添付画像のようなプログラムをどのように実装するか、教えていただけますでしょうか。
No.1ベストアンサー
- 回答日時:
こんなんでどうでしょう?
http://www.codeproject.com/Articles/19687/Fun-Wi …
これはサンプルとして重力やらフライバイやらをシミュレートした結果を描画させています
一通りのことは出来ていますので、ちょっと弄って改造するくらいなら簡単かと思います。
※ただし、ソースはCodeProjectにメンバー登録してからダウンロードする必要があります
※環境によってはビルドできない可能性あり(バージョン違い等が原因)
※改造して配布や公開する場合はライセンスに注意してください。
ソースを見てみたら、Forms.Timerを使っていました。また、ググッてみたら、自分でいろいろ設定しなくてはなりませんが、Timers.Timerの方が時間の精度が高いそうです。
これでなんとか進めそうです!ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- 物理学 シミュレーション仮説は本当か? 6 2023/06/25 20:26
- その他(自然科学) 科学技術計算の仕事について 2 2023/02/04 18:09
- ノートパソコン Windows10(?).pcを修復できませんでした の無限ループ PC無知で、アドバイスお願い致し 5 2022/06/26 16:24
- その他(プログラミング・Web制作) python OpenPyXLを使って出力結果をエクセルに書き込み 2 2022/06/04 19:46
- HTML・CSS 画像が分割されて切り替わる、ループアニメーションが作りたい 7 2023/05/27 17:12
- 物理学 マルチバース仮説は本当か? 5 2023/07/15 11:33
- Windows 10 Windows Updateが動作しません 7 2022/08/12 16:26
- その他(プログラミング・Web制作) プログラムの勉強のおすすめは 7 2022/12/09 20:09
- Windows 10 windows10のクリーンインストールが完了出来ない 2 2022/06/04 13:33
- その他(プログラミング・Web制作) プログラムの起動、利用について、使用期間を設定する方法 3 2023/08/06 21:03
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
PCで「使用可能な場合はグラフ...
-
TextBoxに文字を書いても表示さ...
-
NVIDIAのシェーダーキャッシュ
-
[VB.net] DataGridViewの列ヘッ...
-
VB6のform Load
-
FlexGridの一部のみ表示を更新...
-
LineToやMoveToにて描画した線...
-
画像を重ねて動かすと重くなり...
-
Pythonによる物理の斜方投射の...
-
C++Builder6の複写で教えて下さい
-
最前面に無理やりフォームを持...
-
ClistBoxでオーナードローがよ...
-
当たり判定
-
【VC2008】色反転破線の書き方
-
GDIからDirectXへの移行
-
GetGlyphOutline() ご利用経験...
-
Form1 Load で実行されない。
-
panelのスクロール表示について
-
MFC FormViewの背景色
-
陰関数のグラフを表示させるには
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VB6,リストボックスの特定行の...
-
[VB.net] DataGridViewの列ヘッ...
-
NVIDIAのシェーダーキャッシュ
-
MFCでOnPaintのタイミング
-
TextBoxに文字を書いても表示さ...
-
word
-
UpdateData( FALSE); による文...
-
VC++プログラムをつかったBMP画...
-
InvalidateRectの使い方について
-
OneNote 2010 文字と描画がずれる
-
StretchBlt関数について
-
C# ラバーバンドの描画を快適に...
-
エクセルでガンチャートを作成...
-
C++にて、塗りつぶされた円を描...
-
VBAにGDI+を参照させる方法
-
GDI+で高速な描画
-
MFC DrawText 背景色とフォント
-
FlexGridの一部のみ表示を更新...
-
MFCのタイマーのつかい方を教え...
-
Labelの文字をスクロールする際...
おすすめ情報