LoginSignup
3
4

More than 3 years have passed since last update.

ゲーム開発で使える数学 三角法編

Last updated at Posted at 2020-11-13

三角法の前準備

三角関数に入る前に角の説明をするとともに、
変換や回転などににもよく使われるのでしっかり押さえましょう。

角とは

角は頂点と呼ばれ点で交わる2本の半直線から作られます。
2本の半直線の一方始辺と言い、
もう一方を終辺と言います。
(一般的に角はギリシャ語でα,β,θで表します。)
度とラジアン.png

度とラジアン

X軸の正の向きは減点のまわりを反時計回り。
時計回りが負の向きとなります。
正の角.png負の角.png

度からラジアンの変換

度 × (円周率 ÷ 180)で求まる。
※#define PI 3.14159265359とする

    float Rad = 0.f;
    const float Degrees = 60.f;
    Rad = Degrees * (PI / 180);

ラジアンから度への変換

ラジアン × (180 ÷ 円周率)で求まる。

    const float Rad = 1.0472f;
    float Degrees = 0.f;
    Degrees = Rad * (180 / PI);

※PI = 3.14159265359

三角関数

負の角.png

ピタゴラスの定理

まず初めにcの長さを知りたい場合はピタゴラスの定理を使うと計算できます。
証明済みってことなのですが直角三角形なんかは3つの内角の和は180°(3つのうち1つの90°もう2つの角度の和は90°)というのも証明済みだと言える。
したがってピタゴラスの定理があれば3つのうち2つの長さがわかれば残りの辺の長さも求めることができる。
公式
c²=a²+b²

b=5,a=12だった場合の図のcの長さを求める。

$c=\sqrt{12²+5²} = \sqrt{144+25} =\sqrt{169} =13$
c=13なことがわかる。

float A, B, C;
A = 12.f;
B = 5.f;
C = sqrt(pow(12.f,2.f) + pow(5.f,2.f));

※sqrt(平方根) pow(べき乗)

サイン(sine)コサイン(cosine)タンジェント(tangent)の定義

ここでは角度と角度に接する1辺の長さがわかっていればもう一つの辺がの長さがわかる。
よく使われる角の三角関数の値

α (度) α(ラジアン) sinα cosα tanα
0 0 0 1 0
30 π/6 0.5 0.8660 0.5774
45 π/4 0.7071 0.7071 1
60 π/3 0.8660 0.5 1.7321
90 π/2 1 0
120 2π/3 0.8660 -0.5 -1.7321
180 π 3 -1 0
270 3π/2 -1 0
360 0 3 1 0

表を覚えていると計算がスムーズにできると思うので覚えておきましょう。
それでは表をもとに計算していきましょう。

α=60°,c=50だった場合のa=長さはいくつでしょうか。
$cos60° = \frac{a}{50}$
$50(cos60°) = a$
$50×0.5 = a$
$25 = a$
となります。

float a, Degrees;
Degrees = 60.f * (PI / 180);
a = cos(Degrees)*50;

逆三角関数

アークサイン(asine)アークコサイン(acosine)アークタンジェント(atangent)
を使って計算していきます。
ここでは3辺のうち2辺の長さがわっていれば内角αの角度が求められる。
負の角.png

早速計算していきましょう。
a=1,b=4のときαは何度になるでしょう。
$tanα = \frac{4}{1}$
$tanα = 4$
$a = tan⁻¹(4)$
$a = 76°$

float Red = atan(4.f);
float a = Red * (180.f / PI);
3
4
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
4