【Java】三角関数の計算とグラフの表示
このページでは、Javaを使った三角関数の計算とグラフの描画方法について解説します。以下のリンクを使って、各セクションにジャンプできます。
三角関数の基礎知識
三角関数は、角度と比率の関係を扱う数学の分野です。特に重要なのは次の3つの関数です。
- 正弦 (sine): \( \sin \theta \)
- 余弦 (cosine): \( \cos \theta \)
- 正接 (tangent): \( \tan \theta \)
これらは、直角三角形の辺の比率や、単位円上の点の座標として定義されます。
たとえば、単位円を使った定義は次の通りです:
- \( \sin \theta = \frac{\text{y座標}}{\text{半径}} \)
- \( \cos \theta = \frac{\text{x座標}}{\text{半径}} \)
- \( \tan \theta = \frac{\sin \theta}{\cos \theta} \)
Javaでの三角関数の計算
Javaでは、Math
クラスを使用して三角関数を計算できます。以下に主なメソッドを示します。
Math.sin(double angle)
: 角度をラジアンで指定して、正弦を返す。Math.cos(double angle)
: 角度をラジアンで指定して、余弦を返す。Math.tan(double angle)
: 角度をラジアンで指定して、正接を返す。Math.toRadians(double degrees)
: 度をラジアンに変換する。Math.toDegrees(double radians)
: ラジアンを度に変換する。
以下は具体的な例です:
public class TrigonometryExample {
public static void main(String[] args) {
double degrees = 45.0;
double radians = Math.toRadians(degrees);
// 正弦、余弦、正接の計算
double sinValue = Math.sin(radians);
double cosValue = Math.cos(radians);
double tanValue = Math.tan(radians);
System.out.println("角度: " + degrees + " 度");
System.out.println("sin: " + sinValue);
System.out.println("cos: " + cosValue);
System.out.println("tan: " + tanValue);
}
}
上記のコードを実行すると、次のような結果が得られます:
角度: 45.0 度
sin: 0.7071067811865475
cos: 0.7071067811865476
tan: 0.9999999999999999
三角関数のグラフ表示
Javaで三角関数のグラフを描画するには、JavaFX
やSwing
を使用することが一般的です。以下はSwing
を使った例です。
import javax.swing.*;
import java.awt.*;
public class SineGraph extends JPanel {
@Override
protected void paintComponent(Graphics g) {
super.paintComponent(g);
Graphics2D g2d = (Graphics2D) g;
int width = getWidth();
int height = getHeight();
int centerX = width / 2;
int centerY = height / 2;
// グリッドと軸の描画
g2d.drawLine(0, centerY, width, centerY); // X軸
g2d.drawLine(centerX, 0, centerX, height); // Y軸
// sin波の描画
g2d.setColor(Color.RED);
for (int x = -180; x <= 180; x++) {
int xPixel = centerX + x;
int yPixel = centerY - (int) (100 * Math.sin(Math.toRadians(x)));
g2d.fillOval(xPixel, yPixel, 2, 2);
}
}
public static void main(String[] args) {
JFrame frame = new JFrame("Sine Graph");
SineGraph panel = new SineGraph();
frame.add(panel);
frame.setSize(800, 400);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}
}
このプログラムを実行すると、sin関数のグラフが描画されます。
同様の方法で、cos関数やtan関数のグラフも描画可能です。