Game Physics 2015 – 7

斜面をすべる運動

重さと質量

質量($m$)は、そのものが持っている本質的な重さで向きはありません。物理での 重さ(w)は、重力加速度 ($g$)と、質量($m$)から、次のように計算します。

$重さ = 質量 \times 重力加速度$
$w = m \times g$

斜面方向の重力

重力が斜面方向にかかるので、そちらの向きの重力($F_g$)を計算します。

$斜面方向の重力 = 重さ \times \sin \theta$
$F_g = w \times \sin \theta$

垂直抗力

机などにものを置いたときには、重力がかかっているはずなのに落ちてきません。これは、 垂直抗力(Nomal Force)という力が重力と逆向きの上方向に働いていて、釣り合っているいるからです。
斜面に垂直になりますので、垂直抗力($F_n$)は、次のように計算できます。

$垂直抗力 = 重さ \times \cos \theta$
$F_n = w \times \cos \theta$

摩擦力

斜面を滑る時に実際には摩擦力が働きます。ここでは、運動摩擦のみを考えます。
運動摩擦係数を$\mu_k$すると、運動摩擦力は次のように計算できます。

$摩擦力 = 摩擦係数 \times 垂直抗力$
$F_k = \mu_k \times N$

合力

2つ以上の力を合わせた力を 合力といいます。
ここでは、斜面方向の重力と摩擦のみを扱った合力($F$)を計算します。

$合力 = 斜面方向の重力 + 摩擦力$
$F = F_g + F_k$

加速度

ニュートンの第2法則から、力から加速度($a$)を計算できます。

$加速力 = 合力 / 質量$
$a = F / m$

水平、垂直方向の加速度

ここでは、水平と垂直方向に考えて物体を移動しますので、水平方向の加速度($a_x$)と垂直方向の加速度($a_y$)に分解します。

$水平方向の加速力 = 加速度 \times \cos \theta$
$a_x = a \times \cos \theta$
$垂直方向の加速力 = 加速度 \times \sin \theta$
$a_y = a \times \sin \theta$

実際のプログラム

定数の定義

重力加速度と$\pi$の値を定義しておきます。

斜面を滑る物体の構造体

物体の属性を表すものをまとめておきます。

物理系さんに必要なグローバル変数

斜面の状態での初期化

物体の移動

ここででは、1フレームの時間を deltaTimeとして取得できている前提とします。

Digiprove sealCopyright secured by Digiprove © 2015

コメントを残す

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください