【Java】三角関数の計算
以下の見出しから、各セクションにジャンプできます:
基本的な三角関数の使用
Javaでは、三角関数の計算に Math
クラスを使用します。Math
クラスには、以下のようなメソッドが用意されています:
Math.sin(double a)
: サイン値を返す。Math.cos(double a)
: コサイン値を返す。Math.tan(double a)
: タンジェント値を返す。
これらのメソッドは、引数をラジアン単位で受け取ります。例を示します:
public class TrigonometryExample {
public static void main(String[] args) {
double angle = Math.PI / 6; // 30度をラジアンで表現
System.out.println("sin(30°): " + Math.sin(angle));
System.out.println("cos(30°): " + Math.cos(angle));
System.out.println("tan(30°): " + Math.tan(angle));
}
}
実行結果は以下のようになります:
sin(30°): 0.5 cos(30°): 0.8660254037844386 tan(30°): 0.5773502691896257
度とラジアンの変換
三角関数の計算ではラジアンが必要ですが、日常的には度(°)を使用することが多いです。Math
クラスには、ラジアンと度を相互に変換するためのメソッドも用意されています:
Math.toRadians(double deg)
: 度をラジアンに変換。Math.toDegrees(double rad)
: ラジアンを度に変換。
以下に例を示します:
public class AngleConversionExample {
public static void main(String[] args) {
double degrees = 45.0;
double radians = Math.toRadians(degrees);
System.out.println(degrees + "° はラジアンで: " + radians);
double backToDegrees = Math.toDegrees(radians);
System.out.println(radians + " ラジアンは度で: " + backToDegrees);
}
}
実行結果:
45.0° はラジアンで: 0.7853981633974483 0.7853981633974483 ラジアンは度で: 45.0
三角関数の応用例
三角関数は、ゲーム開発やグラフィックス処理、シミュレーションなど多くの場面で利用されます。ここでは、いくつかの応用例を紹介します。
2次元座標での回転
回転行列を使用して、2次元平面上の点を回転させる例を示します:
public class RotationExample {
public static void main(String[] args) {
double x = 1.0, y = 0.0; // 点 (1, 0)
double angle = Math.toRadians(90); // 90度回転
double rotatedX = x * Math.cos(angle) - y * Math.sin(angle);
double rotatedY = x * Math.sin(angle) + y * Math.cos(angle);
System.out.println("回転後の座標: (" + rotatedX + ", " + rotatedY + ")");
}
}
実行結果:
回転後の座標: (6.123233995736766E-17, 1.0)
(数値誤差のため、6.123233995736766E-17
は 0 とみなして問題ありません。)
振り子のシミュレーション
振り子の運動を簡単にシミュレートする例です:
public class PendulumExample {
public static void main(String[] args) {
double length = 2.0; // 振り子の長さ (メートル)
double gravity = 9.8; // 重力加速度 (m/s²)
double angle = Math.toRadians(30); // 振り子の角度
double period = 2 * Math.PI * Math.sqrt(length / gravity);
System.out.println("振り子の周期: " + period + " 秒");
double height = length * (1 - Math.cos(angle));
System.out.println("振り子の高さ: " + height + " メートル");
}
}
逆三角関数の使用
逆三角関数は、角度を求める際に使用します。JavaのMath
クラスには以下のメソッドがあります:
Math.asin(double a)
: アークサイン。Math.acos(double a)
: アークコサイン。Math.atan(double a)
: アークタンジェント。Math.atan2(double y, double x)
: 点 (x, y) のアークタンジェント。
例を示します:
public class InverseTrigExample {
public static void main(String[] args) {
double value = 0.5;
System.out.println("asin(0.5): " + Math.toDegrees(Math.asin(value)) + "°");
System.out.println("acos(0.5): " + Math.toDegrees(Math.acos(value)) + "°");
System.out.println("atan(1): " + Math.toDegrees(Math.atan(1)) + "°");
}
}
双曲線関数の使用
Javaでは双曲線関数もサポートされています:
Math.sinh(double a)
: 双曲線サイン。Math.cosh(double a)
: 双曲線コサイン。Math.tanh(double a)
: 双曲線タンジェント。
使用例:
public class HyperbolicExample {
public static void main(String[] args) {
double value = 1.0;
System.out.println("sinh(1): " + Math.sinh(value));
System.out.println("cosh(1): " + Math.cosh(value));
System.out.println("tanh(1): " + Math.tanh(value));
}
}