【Python】角度を0~360度の範囲(度数法)で求める・変換する方法

この記事では、角度を0~360度の範囲に変換する方法や正規化する方法、さらに0~360度の範囲で角度を求める方法について解説しています。

初心者の方でも分かりやすく、Pythonを使った角度の操作に役立つ内容です。

目次から探す

角度の範囲を0~360度に変換する方法

角度を0~360度の範囲に変換する方法はいくつかあります。

ここでは、剰余演算子を使用する方法、mathモジュールfmod関数を使用する方法、そして自作関数を作成する方法について解説します。

方法1: 剰余演算子を使用する

剰余演算子(%)を使用することで、角度を0~360度の範囲に変換することができます。

具体的なコード例を示します。

angle = 450
angle_normalized = angle % 360
print(angle_normalized)

上記のコードでは、angleが450の場合、剰余演算子を使って360で割った余りを求めることで、angle_normalizedに270が格納されます。

方法2: mathモジュールのfmod関数を使用する

mathモジュールfmod関数を使用することでも、角度を0~360度の範囲に変換することができます。

以下にコード例を示します。

import math

angle = 450
angle_normalized = math.fmod(angle, 360)
print(angle_normalized)

fmod関数は、剰余を求める際に負の値に対しても正しく処理することができます。

方法3: 自作関数を作成する

自作関数を作成して、角度を0~360度の範囲に変換する方法もあります。

以下は、自作関数normalize_angleを使用したコード例です。

def normalize_angle(angle):
    while angle < 0:
        angle += 360
    while angle >= 360:
        angle -= 360
    return angle

angle = -90
angle_normalized = normalize_angle(angle)
print(angle_normalized)

この自作関数では、angleが負の値や360以上の値でも正しく0~360度の範囲に変換されます。

角度を0~360度に変換する際に、剰余演算子やmathモジュールfmod関数を使用することで簡単に処理できます。

自作関数を作成する場合は、whileループを使って範囲内に収まるように調整する方法が一般的です。

角度の範囲を0~360度に正規化する方法

方法1: whileループを使用して正規化する

角度を0~360度の範囲に正規化するために、whileループを使用する方法があります。

以下はその手順です。

  1. まず、与えられた角度が0未満の場合、360度を加算して正の値に変換します。
  2. 次に、与えられた角度が360度以上の場合、360度で割った余りを求めて正規化します。
def normalize_angle(angle):
    while angle < 0:
        angle += 360
    return angle % 360

# 例: 角度120度を正規化する
angle = 120
normalized_angle = normalize_angle(angle)
print(normalized_angle)  # 出力: 120

方法2: mathモジュールのfmod関数を使用して正規化する

mathモジュールのfmod関数を使用することで、角度を0~360度の範囲に正規化することができます。

fmod関数は、浮動小数点数の剰余を計算する関数です。

import math

def normalize_angle(angle):
    return math.fmod(angle, 360)

# 例: 角度-90度を正規化する
angle = -90
normalized_angle = normalize_angle(angle)
print(normalized_angle)  # 出力: 270.0

方法3: 自作関数を作成して正規化する

自作関数を作成して角度を0~360度の範囲に正規化する方法もあります。

以下はその例です。

def normalize_angle(angle):
    normalized_angle = angle % 360
    if normalized_angle < 0:
        normalized_angle += 360
    return normalized_angle

# 例: 角度450度を正規化する
angle = 450
normalized_angle = normalize_angle(angle)
print(normalized_angle)  # 出力: 90

角度を正規化することで、計算や表示などで扱いやすくなります。

正規化された角度は0度以上360度未満の値となります。

0~360度の範囲で角度を求める方法

方法1: mathモジュールのatan2関数を使用する

mathモジュールatan2関数を使用すると、与えられた座標のx軸とy軸の角度をラジアンで求めることができます。

この角度は-πからπの範囲で表されますが、0~360度の範囲で表したい場合には、さらに変換が必要です。

import math

# 座標(3, 4)の角度を求める
x = 3
y = 4
angle_rad = math.atan2(y, x)
angle_deg = math.degrees(angle_rad)

# 0~360度の範囲に変換する
angle_deg = (angle_deg + 360) % 360

print(angle_deg)

方法2: 自作関数を作成して求める

自作関数を作成して、与えられた角度を0~360度の範囲に変換することもできます。

以下はその例です。

def normalize_angle(angle):
    normalized_angle = angle % 360
    return normalized_angle

# 角度120度を0~360度の範囲に変換する
angle = 120
normalized_angle = normalize_angle(angle)

print(normalized_angle)

atan2関数は、y座標とx座標を引数に取り、その点が原点からなす角度を返します。

degrees関数を使用することで、ラジアンを度数法に変換することができます。

また、自作関数を使用することで、与えられた角度を0~360度の範囲に正規化することができます。

目次から探す