2016.02.21
2025.08.24
角度の正規化

はじめに
以下がその変換例で、0~360°の範囲外の角度を0~360°の中に収めています。
変換例
角度 400°→ 40° 角度 720°→ 0° 角度 -50°→ 310°
角度を正規化するメソッド
角度の360°は一回転することなので、0°と360°とは同じ角度となります。よって、与えられた角度がプラス(0も含む)の場合、角度を360°で割った余りを求めることで角度を0~360°の範囲に収めることができます。また、角度がマイナスの場合は、360°で割った余りに360°を足すことで、角度を0~360°の範囲に収めることができます。
例えば、与えられた角度が400°の場合、400=360x1+40と書き直せるので40°となります。-50°場合、-50=360x0-50と書き直せます。さらに-50に360を足して310°となります。
正規化された角度 = 与えられた角度 % 360
正規化された角度 = 与えられた角度 % 360 + 360
Javaソースコード
Degrees.java
001 002 003 004 005 006 007 008 009 010 011 012 013 014 015 016 017 018 019 020 021 022 023 024 025 026 027 028 029 030 031 032 033 034 035
public class Degrees { public static void main( String[] args ) { double deg; // 750° deg = 750.0; System.out.println( deg + "度 → " + getDegree( deg ) + "度" ); // 7200° deg = 7200.0; System.out.println( deg + "度 → " + getDegree( deg ) + "度" ); // -340° deg = -340.0; System.out.println( deg + "度 → " + getDegree( deg ) + "度" ); // -140° deg = -140.0; System.out.println( deg + "度 → " + getDegree( deg ) + "度" ); } // °単位の角度を0~360の範囲に収める private static double getDegree( double deg ) { // 360で割ったあまりを求める deg = deg % 360.0; // マイナスだったら360を足す if ( 0.0 > deg ) deg += 360.0; return deg; } }
コンパイル ソースコードが「ANSI」の場合
C:\talavax\javasample>javac -encoding sjis Degrees.java
コンパイル ソースコードが「UTF-8」の場合
C:\talavax\javasample>javac Degrees.java
実行
C:\talavax\javasample>java Degrees
実行結果
750.0度 → 30.0度 7200.0度 → 0.0度 -340.0度 → 20.0度 -140.0度 → 220.0度
計算された角度が、0~360°に収まっています。
以上です。
角度の正規化に関するコンテンツ
「角度の正規化」に関係があるコンテンツをまとめています。
- 円弧の長さ
- 時計の短針と長針の角度
- テーブルによる色変換 その1
- 正三角形
- 黄金角とは
- グラフの表示
- HSV色空間について
- 内角
- 二等辺三角形
- 数学関数 逆三角関数 acos
- 数学関数 逆三角関数 asin
- 数学関数 逆三角関数 atan
- 数学関数 逆三角関数 atan2
- 数学関数 逆三角関数 atan3
- 数学関数 三角関数 cos
- 角度とラジアンの相互変換
- 回転行列
- 数学関数 三角関数 sin
- 数学関数 三角関数 tan
- tan(タンジェント)
- 三角関数 計算方法
- メソッド
- 象限
- 放射状模様
- 円周上のランダムな座標を求める その1
- 円周上のランダムな座標を求める その2
- 円周上のランダムな座標を求める その3
- 極座標系
- 長方形
- キーボード入力した角度のsin、cosを計算
- 正方形
- 三角関数表の作成 その1
- 三角関数表の作成 その2
- 三角関数表の作成 その3