ゲームのための物理(力学)
■ このスレッドは過去ログ倉庫に格納されています
0001名前は開発中のものです。
02/04/08 17:38ID:dlksSYkA例えば、坂道を転がる球の加速度だったら。
その球の密度が一様ならば、慣性モーメントは(2/5)MR^2なので
dV/dt = 5*g*sinθ/7;
と表せるよとか。
他にも剛体運動、力積とか語ってください。
0463名前は開発中のものです。
03/08/28 14:06ID:1nK5chEYみんなそのことを疑問に思って
ある事に気づいてあっというまに過疎板になっちまったのサ
0464名前は開発中のものです。
03/08/28 20:14ID:FN06msI0もう1年以上経つもんな。
0465名前は開発中のものです。
03/08/28 23:06ID:pGDe5Bpe静止時は最大摩擦力以下の範囲で摩擦力が変化する。
例えば静止している物体に横方向の力がかかっているとき、
力が最大摩擦力以下だと、力と逆向きで同じ力の摩擦力が
発生し、力が最大摩擦力以上になると摩擦力に打ち勝って滑り出す。
0466名前は開発中のものです。
03/08/28 23:42ID:gyVmZ0+N静止状態だとそうですよね。
動いている状態から静止状態に向かう時、特に止まる直前でも
速度vに関係なく摩擦力μNがかかるのであれば、
v > μNtになった時、今までの進行方向とは
逆向きに動いてしまいませんか?
と、これって摩擦に限らず0に収束させる難しさの
問題であるような気がしますが。
0467名前は開発中のものです。
03/08/29 00:07ID:hShitT3Sいえいえ、最大摩擦力という言葉のとおり、
その力を最大にするというだけで、それ以下でも良いんですよ。
私が読んだ本にはそういうふうに書いてあったような気が。
0468名前は開発中のものです。
03/08/29 00:41ID:2cvoJ7Giノ
0469名前は開発中のものです。
03/08/29 09:30ID:5ZTmiGoq現実世界は時間を無限に細分化できるからそうはならない。
コンピュータで離散的に処理しようとするからそのような問題が出る。
0470名前は開発中のものです。
03/08/29 12:02ID:5RNu81Emv > μNt ではなくて、v < μNt になった時、でした。
やっぱり条件分けて処理しないとダメなのかな。
0471名前は開発中のものです。
03/08/30 01:33ID:xYGyvQB1また、vとμNは向きが異なるベクトルなわけで
それらをいきなり不等号で比較するのはおかしい
0472名前は開発中のものです。
03/08/31 00:53ID:qHHz5sFS0473名前は開発中のものです。
03/09/07 06:54ID:ya18lJHa高校で習うだろ。高校物理からやり直せ。
0474名前は開発中のものです。
03/09/07 10:46ID:FUt5t16pそんな低いレベルの話は誰もしていないのに……。
0475名前は開発中のものです。
03/09/08 09:14ID:WUy4DKqBしっ!相手にしちゃだめ!
0476名前は開発中のものです。
03/09/08 17:17ID:xqkmCm/Attp://homepage1.nifty.com/kaneko/nfight.htm
人間をマウスで掴んで、ブンブン振り回してるうち、自分がイケナイ本能に
目覚めてしまったんじゃないかという気分になりますた。
しかしコレ、何気に凄いな。各関節の回転角の拘束はどうやってんだ?
0477名前は開発中のものです。
03/09/11 17:10ID:N+AjkSxgなんか場合分けが変だね。場合分けは静止,動摩擦を区別するために
速度vでしないと。1次元ベクトルで考えたときv,fの正方向は同じ向きとすると
F:クーロン摩擦
u0:静止摩擦
u1:動摩擦
N:垂直抗力の大きさ
v:速度
f:系にかかる外力
ってした場合にはクーロン摩擦は
F=-v/|v|*u1*N (at v!=0)
-f/|f|*min(|f|, u0*N) (at v=0)
になるはず。-v/|v|は動いてる方向と逆向きってことね。
で、-f/|f|は外力の向きと逆ってことね。
現実には数値計算してるとv=0にならねーから|v|<=εと|v|>εで場わけしないと
だめだけど。多次元の場合は成分ごとに同様に考えればオケ。
0478名前は開発中のものです。
03/09/13 01:39ID:rFHTq3CMAB法だろうから角度制約するだけだと思われ
0479名前は開発中のものです。
03/09/14 11:55ID:b1qyk8E2う〜ん…それってどうやんの?
計算が2Dの場合、関節が制約を受ける角度以上になったら、
その関節の両サイドの制御点を、移動させるってことで
角度制約できると思うけど、
このやり方を3Dに拡張すっと、軸周りの回転は制御不能で
首とかグルグル回っちゃいそう。
0480名前は開発中のものです。
03/09/18 01:33ID:5XKeL+Huみてもどうにも解りません。これはマトリクスの性質上不可能なんでしょうか?
要はマトリクスで記録されたモーションの補完がしたいんですけど。
Gemsにもあるマトリクス→クォータニオン変換がキーのような気がするんだけども…。ん〜。
0481名前は開発中のものです。
03/09/18 02:01ID:QQmJDwfD0482名前は開発中のものです。
03/09/18 02:44ID:5XKeL+Huいい方法ないかのぉ
0483名前は開発中のものです。
03/09/18 05:27ID:xGLxv92z0484481
03/09/18 22:56ID:wPGb9Ur4ベクトルp=(0, 0, 0), x=(1, 0, 0), y=(0, 1, 0), z=(0, 0, 1)としたとき、
それぞれをマトリクスmでp'=p*m, x'=(x*m)-p', y'=(y*m)-p', z'=(z*m)-p'
とする。まずp'がmの平行移動量になり、次にx', y', z'それぞれの長さが
各軸のスケール値になる。そして'x, 'y, 'zの向きがそのまま座標系の
姿勢を表すから回転が求まる。ただ、スケールが0になる場合は不定に
なりマイナスの場合はベクトルの向きが不正になる場合があるので辻褄
を合わせないといけない。それと姿勢が求まってもキーフレーム間で
半回転以上動く場合はまともに補完できない。
0485名前は開発中のものです。
03/09/19 00:19ID:5A6dILz3>>484
だめだめ。x,y,zにマトリクスをかけた結果は移動量も含んでるやん。拡大成分じゃないべ。
0486名前は開発中のものです。
03/09/19 00:24ID:39nrDM9yだからx'=(x*m)-p'と移動量p'を引いてるやん。
0487藤谷さかな店(自家用)
03/09/21 18:36ID:Mg2aVfjEさて、ちょいと疑問に思うことがあるので皆様にご質問させていただきます。
ある細長い棒のような質量mの物体の端に力Fを加えたとします。
で、この物体はどのような運動をするのでしょうか?
重心は速度vで運動し、物体自体は角速度ωで回転するかと
思いますが、その算出方法はどうなるのでしょうか?
いろいろな本などで一応しらべて見たのですが、
いまいち納得いきません。
--------------------
| |
--------------------
↑
F
自分が調べた結果では、
v = F/m
ω = F×r/I
(r=重心から力Fが加わったところへのベクトル, I:慣性テンソル,×は外積)
で動くようなのですがいまいち納得いきません。
結局質問としては、209の方と同じになってしまうのですが、
物体に加えた力Fはその一部(rと垂直なF成分)が回転運動に
使われ、残りのF成分ではなくFの「すべて」が並進運動に使われるようなのです。
これでは運動量保存の法則がなりたたないのでは?と思い質問してみました。
このようになる理由がわかる方がいましたらご教授お願いします。
0488名前は開発中のものです。
03/09/21 20:37ID:euPHxNVc物体の内部で何か力が働いているとしても、それが外界に対して
何かエネルギー的な影響を及ぼさないのであれば、その力は無い
に等しい。回転はこのような力の一種で、静止している物体と
回転している物体のもつエネルギーは等しいとみなす。
たとえば回転している棒があるとして、その棒のの端に垂直なエネルギー
f1を加えて回転を止めた後、棒の重心にエネルギーf2を加えて移動停止
させた場合、f1とb2は同じ大きさで逆方向のベクトルなのでf1+f2=0となり、
外界から与えたエネルギーベクトルの総和はゼロになる。よって計算上は
何も力を与えていないのと同じことになる。ようするに回転は外界との
力のやりとりには何の影響も及ぼさないので運動量保存側は保たれる。
0489藤谷さかな店(自家用)
03/09/22 00:36ID:fWWIkhLMなるほどー!!
わかりやすい説明ありがうございました。
(1日中これでなやんでてプログラムが進まなかったのが
バカみたいに思えてきました・・・)
もやもやしてたものがやっとすっきり、気分爽快です。
感謝いたしますー。
0490名前は開発中のものです。
03/09/25 15:33ID:ZSsF6BCB倒立振子の安定化制御をやっています(本:倒立振子 MODEL M-1を使ってます)
何かアドバイスください。
困りまくってます。
式は間違いは無く完璧です。
0491名前は開発中のものです。
03/09/25 22:36ID:T0/ll5+H0492名前は開発中のものです。
03/09/26 01:46ID:e/TOAgw8物事に取り組む姿勢を補正したほうがいいんでないの。
0493名前は開発中のものです。
03/09/26 09:29ID:v06oa4h3その補正式もしくは理論キボンヌ
0494名前は開発中のものです。
03/09/27 09:13ID:D+9WV9lYまず質問のしかたが下手。
更に490=493だとしたら、この「バカの壁」は相当厚い。
490の指導教官も大変だな
0495名前は開発中のものです。
03/09/28 03:18ID:9tLkeGUV0496名前は開発中のものです。
03/10/03 02:03ID:TQihsXRB実はわたくしもこの事例について以前からずっと納得できないのです…。
>>488
この説明の範囲内では、確かに納得できます…が
>残りのF成分ではなくFの「すべて」が並進運動に使われる
という前提条件があるからこそ成り立つのではないのでしょうか?
ここで逆に、力が重心移動と回転に分散されたと仮定しても、
先ほどの回転する棒の例で、合っているかのように説明が出来ます。
例えば、棒に加えた力 f1 に対して f1' しか重心の移動に加えられ
ていないと考えた場合。
残り(f1-f1')は回転を止めるのに使われたと考えられます。
次に棒の移動を止める為に必要な力 f2 は f1' 相当となり、
f1 != f2 となります。
どうでしょう?
あたま固くてすんませんが、どうしてもイメージできないんですわ。
0497オレー ◆bJKvyv1OZU
03/10/03 05:04ID:kECaIIBT>>残りのF成分ではなくFの「すべて」が並進運動に使われる
>という前提条件があるからこそ成り立つのではないのでしょうか?
剛体の定義がそうなんだからいいだろ。
でも剛体は実在しないから、イメージわかなくてもしかたねえ
0498名前は開発中のものです。
03/10/03 08:06ID:RGA429eG0499名前は開発中のものです。
03/10/03 10:54ID:Kk4Pevyr回転力というのは「釣り合った力」だから計算上ゼロになるんだよ。
例えば変形しない物体にバネを取り付けて力を加えた場合、物体の
内部に力が作用しているけどその力は何の作用も及ぼさない、つまり
バネ力とそれに対する抗力が釣り合っているからプラスマイナスゼロ
で全く無視できる存在になる。回転もこれと同じで、内部的に釣り合
っているから計算上無視できる。
0500アンケートにご協力を
03/10/03 21:04ID:3lHDYtcWいます。
ねらいはタイピングができない&プログラム初心者を的にしています。
内容的にどのようなものかといいますと,プログラムのサンプルプログラム
を打ったり、穴空きにしたプログラムの問題を作りそれをタイピング
させ高得点を狙うような感じです
そこでアンケートにご協力を
1:プログラムの学習ができるタイピングソフトが合った場合使い
たいですか?
2:この案は面白いとおもいますか
3:どのようなものでもいいので意見を
0501名前は開発中のものです。
03/10/03 21:06ID:ZsoWCRRYそれなら、力が加わる前の運動量=0でしょう。
で、力が加わって動き出したから運動量≠0になる。
だから運動量なんて保存されてませんが?
0502名前は開発中のものです。
03/10/03 22:40ID:y9xq2yAc出来次第では使ってみたいと思う。
あと、ム板やPCゲ板のフリーソフトスレなどでも聞いてみたら?
0503名前は開発中のものです。
03/10/03 23:18ID:Kk4Pevyrある静止した物体があり、質量重心pから距離rだけ離れた点q0に、p->q0
ベクトルに対して直角な力f0を与え、同時にやはりpから距離rだけ離れ
た点q1=p+(p-q0)にf0と同じ大きさで逆方向のベクトルf1を加えたとする。
その結果、重心は移動せず回転運動だけ発生することになる。ここまでは
直感的に正しいと思うだろう。ところが加えた力ベクトルの合計はf0+f1=0
なのでゼロである。つまり計算上は何も力を加えていないのと同じ。
0504名前は開発中のものです。
03/10/03 23:22ID:Kk4Pevyrようなものを考える。この物体は外から見ると回転していないように見える
し、おそらく外部から力を加えた場合にも回転していない物体と同じように
振舞うだろう。このような内部が回転しているものと普通の回転体の違い
は見た目だけであり、ようするに見た目に惑わされているだけだ。
0505501
03/10/03 23:53ID:ZsoWCRRY僕は487じゃないけど、
偶力を与えるなんて書いてないからね・・・>>487には。
運動量は保存されてないでしょ、って言いたかっただけ。
0506名前は開発中のものです。
03/10/06 01:50ID:zuHmG/z5ftp://ftp.jp.scene.org/pub/scene/parties/2003/assembly03/game/rekkaturvat_-_truck_dismount__win32__by_taat_2003.zip
0507名前は開発中のものです。
03/10/06 02:57ID:mkWAtpuv触れると裁判沙汰に巻き込まれそうな予感。
0508名前は開発中のものです。
03/10/06 08:04ID:OsV2fuGpなんだこれ。すげー。
つーか、おもしろすぎ。
506の中身は衝突実験テストみたいな物理ゲーム。
0509名前は開発中のものです。
03/10/06 20:05ID:XFqKySo6シュミレーションのような感じのリアルなジャンプをさせたいんだけど、うまくいかん。
0510名前は開発中のものです。
03/10/06 20:32ID:fKgRlmwaこんなスレが。
http://pc2.2ch.net/test/read.cgi/gamedev/1017528573/
マリオの操作性を再現するのは結構難しいみたい。
0511509
03/10/06 20:37ID:XFqKySo6マリオでの話ではなく、普通の地球上でのジャンプについて聞いているのですが。
マリオのようなっていうのは、あんな感じの2D横スクロールゲームということです。
説明が変でスマソ
0512名前は開発中のものです。
03/10/06 20:38ID:NDdtx+dO0513509
03/10/06 20:42ID:XFqKySo6それがよく分からないんだけど、どういうプログラムを書いたらいいんですか?
0514名前は開発中のものです。
03/10/06 20:44ID:zuHmG/z5微分の総計で求める方法なのに長ったらしい名前
つけてんじゃねぇよ!
0515509
03/10/06 20:53ID:XFqKySo6オイラー法難しい
0516509
03/10/06 21:02ID:XFqKySo60517名前は開発中のものです。
03/10/06 21:13ID:zuHmG/z5だと思うが。
0518509
03/10/06 21:34ID:XFqKySo6何それ
0519名前は開発中のものです。
03/10/06 22:15ID:iGJQupNHここは厨房か工房のスレだな。
ジャンプといえば、スト2は、ジャンプの高さから幅まで一定だから、
いったんジャンプするともう止まらない。
逆に、マリオやイース3は、ボタンを離したとこから落下する。
作るときは、Y=X^2で、適当に作って、速すぎたりしたら適当に2で割ったりしてたな。
最初のジャンプパワーを4.0として、最初に上昇する値は、
Y+= junpupower * junpupower;
そんで、ジャンプボタンがまだ押されてたら、
if( jumpkey )junpupower -= 0.1;
で、またYに二乗したのを加算。
これだと落下しはじめたら、ずっと落下するから、
0520名前は開発中のものです。
03/10/06 23:46ID:bI0uzMN7とりあえず物理の参考書一冊でも買って来い。
0521名前は開発中のものです。
03/10/06 23:51ID:khpF5HLX妙にハマるゲームだなw 何だか俺、危ねー趣味に目覚めたりして
0522506
03/10/07 00:41ID:xB1NWWHKこんなのもアルヨ
0523名前は開発中のものです。
03/10/07 00:53ID:2cAs2HD2人が偶然トラックの下敷きになったときに
ブシブシいって5万点ぐらいいったぞ。
0524名前は開発中のものです。
03/10/07 03:18ID:abKYocK90525名前は開発中のものです。
03/10/07 10:14ID:H4eE2IcP変位の加算だけで処理するのが定石だと思うが?
0526名前は開発中のものです。
03/10/07 10:19ID:KtKxfB79ジャンプした瞬間の上昇速度がv[m/s]であるとき、dt[秒]後の速度v'は
v'=v-(9.8*dt)である。例えばこの速度計算を1/60秒ごとに行い、速度v
で逐次移動させればいい。但し、表示とスケールを合わせないと駄目よ。
例):
float y = 0.0; // 初期位置(単位[m])
float v = 10.0; // 初速度(単位[m/s])
float dt = 1.0/60.0; // タイムステップ(単位[sec])
while(true) { // 1/60秒ごとに実行されるループ
v = v - (9.8 * dt); // 速度を変化させる
x = x + v * dt; // 速度vで移動する
// 表示などをする
}
0527名前は開発中のものです。
03/10/07 10:23ID:KtKxfB79x = x + v * dt; // 速度vで移動する
↓
y = y + (v * dt); // 速度vで移動する
0528名前は開発中のものです。
03/10/07 10:52ID:p6c2joeI相変わらず首がちぎれそうになると一気に高得点行くのね
0529名前は開発中のものです。
03/10/07 10:53ID:p6c2joeI0530名前は開発中のものです。
03/10/07 13:35ID:gogaGoTFウホッ。イイ由喜憲・・・
彼の提唱した正弦跳躍法は今もみんなの心の中で生きていた
0531名前は開発中のものです。
03/10/07 13:43ID:rcr7nbJc着地までの距離と最高点、速度が楽に決定できるのが結構でかいな。
物理の式のまんまでやると何がどうなってんのかわからないときがある。
0532名前は開発中のものです。
03/10/07 14:37ID:Cnth6wj50533名前は開発中のものです。
03/10/07 14:44ID:xB1NWWHK0534名前は開発中のものです。
03/10/07 16:45ID:YYVLqTmDマジで?始めて知った。
今度やってみよ。
0535名前は開発中のものです。
03/10/08 03:45ID:atHkY7uW>由喜憲
思い出しちゃったよ。コイツ有名なの?
「ナナメに移動する時はプレゼンハムアルゴリズムを使え」
アホかー!
0536名前は開発中のものです。
03/10/08 08:40ID:LqO0sj7M一部の好事家にとってはshi3zと同等レベルの知名度。
能力的にも同等レベルの駄目度。
0537名前は開発中のものです。
03/10/08 10:44ID:BY+2Qb0Jマジ面白いわ >>506の方がやり込み度高いな
0538名前は開発中のものです。
03/10/09 02:10ID:PQBkgIyN>山崎由喜憲
ベクトルも知らないでデモ作っちゃうんだからある意味すごい。
0539名前は開発中のものです。
03/10/15 11:06ID:FG7XkK0D0540名前は開発中のものです。
03/10/22 23:20ID:VEu5wcsq0541名前は開発中のものです。
03/10/23 01:01ID:8ew0aGzzhttp://www.pixar.com/companyinfo/research/pbm2001/
日本には多分ない。
0542名前は開発中のものです。
03/10/23 23:31ID:NGvztx/Fhttp://dxsimulation.at.infoseek.co.jp/index.htm
0543名前は開発中のものです。
03/10/24 08:36ID:piA4riPRこれにはよく逆行列とか固有ベクトルとか
出てきますよね?だけど、実際にこれがどういうふうに使われるのかがわからなくて
すごく疑問なんですけど誰かわかりやすく教えてくれませんか?
ゲームのポリゴンとかの計算とかで行列がよく出てくるとか聞いたんで
その辺の例を出しつつわかりやすく教えてくださるとうれしいです
0544543
03/10/24 09:56ID:piA4riPR0545名前は開発中のものです。
03/10/24 10:05ID:NkQA5COaなんで何に使うかもしらずに勉強してんの?
使い始めると一瞬で壁にぶつかるのでそんときに覚えればOKじゃない?
544にどこまで知識があるのかわかんねぇから説明のしようがないな。
逆行列使えなきゃ光源計算も満足にできねぇからそれ以上進めねぇし、
壁に当たったら当たったでわかりやすい解説があるから大丈夫じゃないの?
0546名前は開発中のものです。
03/10/24 10:15ID:cEKK5S8I0547名前は開発中のものです。
03/10/24 10:27ID:NkQA5COaそれは時代遅れじゃないかね。
0548名前は開発中のものです。
03/10/24 10:56ID:VwcX0tTV0549名前は開発中のものです。
03/10/24 21:28ID:mivmAeIK赤い線だけで3Dを表現するって事?
0550名前は開発中のものです。
03/10/24 21:44ID:OylrvD170551名前は開発中のものです。
03/10/24 22:04ID:6r870BJr違う。緑の線だ。
0552名前は開発中のものです。
03/10/28 23:53ID:eC4KD5scおそらく式が間違っているのでしょう・・・。
ところで拘束力のベクトルの長さを最小にするって
どういう条件式になるんでしょう?
0553552
03/10/30 21:11ID:0zlvyoHkま、なんとかやってます。
0554名前は開発中のものです。
03/10/31 04:00ID:YmA4El9x0555名前は開発中のものです。
03/10/31 11:16ID:u1mbu8n20556名前は開発中のものです。
03/11/05 09:06ID:UK6b8HRtXiから次のXi+1を求めたいのですが
求める計算でXi+1/2の傾きを使っているのです。
でも、実際はXiのところの傾きしか分かってなくて、
Xi+1/2のところの傾きなんて分からないので・・・
どうやって計算するのでしょうか?
参考にしたところ
ttp://www.titan2.cee.yamanashi.ac.jp/Lecture/Num/00num12/sld009.htm
0557名前は開発中のものです。
03/11/05 12:03ID:Q5PqphOnネットだけじゃなくて本買って調べたらわかるよ。
図書館でもいいし。
0558名前は開発中のものです。
03/11/05 23:04ID:Oucscy9yhttp://game3.2ch.net/test/read.cgi/mmosaloon/1067704391/
0559名前は開発中のものです。
03/11/05 23:25ID:VfJSFCZ21次微分の解析解(ていうか微分方程式)から計算できるのでは ?
解析解を持ってないってことなら, そもそも問題が違うと思うんだけど.
0560名前は開発中のものです。
03/11/06 01:15ID:nXksNLjc書いてあることそのままなんだけど、
Xi+1/2の傾きというのは、( Xi + h/2, Yi + dX/dY * h/2 )という点の傾きのこと。
仮想的に前進した点の傾きを求めることで高次の微分量を計算し、
結果的に4次の精度で近似ができるの。
大学1年辺りの線形代数で出てくるテイラー展開が判ると、
4次の精度というのががどうやって決まるかが判る。
でも、ゲームだったら公式をそのまま使うだけでいいと思う。
0561名前は開発中のものです。
03/11/07 07:48ID:bfdhhpDW0562sage
03/11/07 12:43ID:khVU0c1e剛体の動きを再現したくてこのような質問をしました。
次の時間での位置を求めるのに、ルンゲクッタ法を使おうと思ったのですが
実際プログラムを書こうとすると、556みたいな疑問が出てきたのです。
色々と調べてみて、
速度と加速度が分かってる場合は、テイラー展開(2次?)で
Xi+1 = Xi + v * t + 0.5 * a * t * t
で、計算できることがわかったのでこれでやってみようと思います。
(高校の物理で出てきた式ですね^^;)
加速度の変化量も1ステップ前との差分で求めたものが使えるなら
上の式に付け加えて、
Xi+1 = Xi + v * t + (1 / 2) * a * t * t + (1 / 6) * b * t * t * t;
(bは加速度の変化量)
でも、できそうみたいなのでこっちの方も試してみたいです。
レスありがとうございました。
■ このスレッドは過去ログ倉庫に格納されています