ruby:rbcanvas-gravity
差分
このページの2つのバージョン間の差分を表示します。
両方とも前のリビジョン前のリビジョン | |||
ruby:rbcanvas-gravity [2025/05/24 02:53] – [rbCanvas プログラム] you | ruby:rbcanvas-gravity [2025/06/14 05:57] (現在) – [rbCanvas プログラム] yuki | ||
---|---|---|---|
行 68: | 行 68: | ||
def ay(x, y) return - MU * y / r(x, y) ** 3 end | def ay(x, y) return - MU * y / r(x, y) ** 3 end | ||
- | # ku, kv, kx, ky の計算 | + | # kvx, kvy, kx, ky の計算 |
- | def calc_k(u, v, x, y, du, dv, dx, dy) | + | def calc_k(vx, vy, x, y, dvx, dvy, dx, dy) |
return ax(x + dx, y + dy) * $dt, | return ax(x + dx, y + dy) * $dt, | ||
ay(x + dx, y + dy) * $dt, | ay(x + dx, y + dy) * $dt, | ||
- | (u + du) * $dt, | + | (vx + dvx) * $dt, |
- | (v + dv) * $dt | + | (vy + dvy) * $dt |
end | end | ||
- | # ルンゲ=クッタ法で $dt 後の (x,y) と (u,v) を求める | + | # ルンゲ=クッタ法で $dt 後の (x,y) と (vx,vy) を求める |
- | def next_step(u, v, x, y) | + | def next_step(vx, vy, x, y) |
- | | + | |
- | | + | |
- | | + | |
- | | + | |
- | | + | |
- | | + | |
- | return | + | return |
- | v + (kv1 + 2 * kv2 + 2 * kv3 + kv4) / 6.0, | + | vy + (kvy1 + 2 * kvy2 + 2 * kvy3 + kvy4) / 6.0, |
- | x + (kx1 + 2 * kx2 + 2 * kx3 + kx4) / 6.0, | + | |
- | y + (ky1 + 2 * ky2 + 2 * ky3 + ky4) / 6.0 | + | |
end | end | ||
行 176: | 行 176: | ||
# 地球に衝突ならストップ | # 地球に衝突ならストップ | ||
if r(x, y) < RE | if r(x, y) < RE | ||
- | flight =false | + | flight = false |
end | end | ||
end | end |
ruby/rbcanvas-gravity.txt · 最終更新: 2025/06/14 05:57 by yuki