[過去ログ] 物凄い勢いで誰かが質問に答えるスレ@ゲーム製作技術 (1001レス)
前次1-
抽出解除 レス栞

このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
411
(7): 名前は開発中のものです。 [sage] 02/04/06 08:11 ID:??? AAS
>>410
410(5): 403 [sage] 02/04/06 05:37 ID:??? AAS
いよいよ場違いかもしれませんが
重力定数G、紐の長さL、振れ角Rとしたとき

while(1)
{
 v += -(G/L)*sin(R);
 x += -v*cos(R);
 y += -v*sin(R);
 #Rの更新は省略
}

でかなり近い挙動をするんですが
これは振り子とは違うんでしょうか?

所詮ゲームだからそう見えりゃいいっちゃいいんですが・・・

あ、>390さんがわざわざソース書いてくれたのに
無視してるようでゴメンなさい
Rは水平軸との角度で,vは角速度ですかね?
冲=1.0で省略てな感じかな?

まっとうなのは以下のようになると思います

振子の中心のモーメント M = m g cosθ × L
振子の中心の慣性モーメント I = m L^2
よって角加速度 ωdot = M / I = g cosθ / L
あとは積分

while ( )
{
  ω += 冲 * G * cosθ / L;
  θ += dt * omg;

  x = L * cosθ;
  y = L * sinθ;

  t += 冲;
}
これだと逆三角関数いりませんぜ

>無視してるようでゴメンなさい
オナニーして公開しただけですの気にしないで下さい
412: 411 [sage] 02/04/06 08:16 ID:??? AAS
× θ += dt * omg;
○ θ += dt * ω;
413
(2): 403 [sage] 02/04/06 08:38 ID:??? AAS
>411
えーと、中心点の座標(ax,ay)とおもりの座標(px,py)だけわかっている状態で
振り子運動をさせたいんです

なので現在
function R() {
 var x,y,result;//ローカル変数確保
 x = ax-px;
 y = py-ay;
 result = atan(x/y);
 return result;
}
function L() {
 var x,y,result;//ローカル変数確保
 x = (ax-px)*(ax-px);
 y = (py-ay)*(py-ay);
 result = sqrt(x+y);
 return result;
}
として、>410のコードで動かしてます

それから振り子運動中に外力を加えたりしてるので
時間軸入れるとうまくいくかわからないので省略してます

>411の場合は初回だけ振れ角を出してやればいいのかな?
414
(1): 403 [sage] 02/04/06 08:40 ID:??? AAS
あと>411
ω += 冲 * G * cosθ / L;
なのに
t += 冲;
するのは何故ですか?
417: 411 [sage] 02/04/06 11:44 ID:??? AAS
外力をモーメントであらわせば>>411でいけると思います
LとGによるけど,そんなに冲細かくしなくてもいいと思います.

(ax,ay)と(px,py)からLとθの初期値でるでしょ.角速度も適当に決めればいい
411は(ax,ay)が原点だから,411のx,yに代入する所で(ax,ay)を足してやればイイ
418
(2): 411 [sage] 02/04/06 12:23 ID:??? AAS
でこんな感じ

while ( )
{
  //モーメント
  M = mass * G * cosθ * L;

  //外力Fが重心において回転方向に加わる場合
  M += F * L;

  //(Lを含まないこともあろうとあえてLは約分せず)
  ω += 冲 * M / ( L^2 * mass );
  θ += dt * omg;

  x = ax + L * cosθ;
  y = ay + L * sinθ;
}

と書きながら>>410が今やっと解りました(アフォ
でもやっぱ角速度と角度で管理したほうがよくないですか?
冲=1.0にしてθ=π/2 - R とすればほぼ同じ形になります

で,一つ違う所は,
× v += -(G/L)*sin(R);
○ v += -G*sin(R);
じゃないかな・・・
次元も合うし.冲=1.0で考えると前者のvは角速度ですよ(L=1.0なら別ですが)
419: 411 [sage] 02/04/06 12:38 ID:??? AAS
だんだん自信無くなってきて結局オナニサンプル作っちゃった
WindowsConsole+入力受け付けず
10秒で終了,5.0〜5.2秒間モーメント加えてる
外部リンク[php]:www.pureweb.jp
外部リンク[lzh]:www.pureweb.jp
#あきまさ氏のあぷろだ拝借
420
(1): 403 [sage] 02/04/06 19:30 ID:??? AAS
>418
なるほど・・・
ただ-(G/L)なのは振り子をこぐのに必要なんです

私もあきまさ氏のあぷろだを借りてUPしてみました
外部リンク[swf]:www.pureweb.jp
←キーと→キーが振り子を押す力
↑キーと↓キーでひもの伸び縮み
SPACEキーでおもり切り離し

ブランコをこぐ要領で、まず左右に押して
ある程度勢いがついたら∞を描くようにヒモを伸び縮みさせると
振り幅がどんどん大きくなります

↑の振り子エンジンは>410です
>411とかも試してみたんですが
自分の読解力が無いせいか、何故かうまくいかない

あと丸め誤差のせいなのか
ヒモ長が微妙にずれていく・・・
前次1-
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 0.027s