Java Tips | 基本ユーティリティ:Math.tan()

Web APP Java
スポンサーリンク
スポンサーリンク

Math.tan()とは何か

Javaで業務システムを開発していると、角度から傾きや位置を計算したい場面があります。

例えば、

  • グラフ描画
  • 地図システム
  • CADソフト
  • ゲーム開発
  • シミュレーション
  • センサー制御

などです。

そのような場面で利用されるのが Math.tan() です。

Math.tan(角度)
Java

このメソッドは「正接(タンジェント)」を計算します。

Math.sin()が正弦、Math.cos()が余弦だったのに対して、Math.tan()は正接を求めるためのメソッドです。

まずは正接(tan)を理解しよう

初心者にとって正接は少しイメージしづらいかもしれません。

まずは、

「角度から傾きを求めるための値」

と考えてください。

直角三角形では、


tan(角度)
=
高さ ÷ 底辺

という関係があります。

例えば、


高さ 5

底辺 5

なら、


tan = 5 ÷ 5 = 1

になります。

つまりtanは「どれくらい傾いているか」を表現する値です。

Math.tan()の基本構文

基本構文は非常にシンプルです。

Math.tan(値)

ただし、Math.sin()やMath.cos()と同様に重要な注意点があります。

引数は、


度数法(90度など)

ではなく、


ラジアン

で指定します。

ラジアンとは何か

三角関数を利用する場合の共通知識です。

度数法ラジアン
0°0
45°π/4
90°π/2
180°π
360°2π

実務では、

Math.toRadians()
Java

で変換することがほとんどです。

ステップバイステップで利用してみよう

ステップ1:角度を準備する

// 45度
double degree = 45;
Java

ステップ2:ラジアンへ変換する

/*
 * 度数法→ラジアン
 */
double radian =
        Math.toRadians(
                degree
        );
Java

ステップ3:Math.tan()を実行する

/*
 * tan計算
 */
double result =
        Math.tan(radian);
Java

ステップ4:結果を確認する

System.out.println(result);
Java

実行結果

0.9999999999999999

理論上は1です。

誤差の影響でわずかにズレています。

よく使われる角度を覚えよう

角度tan値
0°0
30°0.577…
45°1.0
60°1.732…
90°∞に近づく

実務で三角関数を利用する際によく登場する値です。

0度の場合

/*
 * tan(0°)
 */
double result =
        Math.tan(
                Math.toRadians(0)
        );

System.out.println(result);
Java

実行結果

0.0

傾きがない状態です。

45度の場合

/*
 * tan(45°)
 */
double result =
        Math.tan(
                Math.toRadians(45)
        );

System.out.println(result);
Java

実行結果

1.0

高さと底辺が同じ長さになります。

60度の場合

/*
 * tan(60°)
 */
double result =
        Math.tan(
                Math.toRadians(60)
        );

System.out.println(result);
Java

実行結果

1.7320508075688767

急な傾きになります。

最重要:90度付近は注意が必要

Math.tan()で最も重要な注意点です。

理論上、


tan(90°)

は無限大になります。

実際に実行すると、

/*
 * tan(90°)
 */
double result =
        Math.tan(
                Math.toRadians(90)
        );

System.out.println(result);
Java

非常に大きな値になります。


1.633123935319537E16

実務では90度付近を扱う場合は注意が必要です。

なぜ90度で問題が発生するのか

tanは次の式で表現できます。


tan(x)
=
sin(x)
÷
cos(x)

そして、


cos(90°)
=
0

になります。

つまり、


1 ÷ 0

に近い状態になるため、非常に大きな値になります。

Math.sin()・Math.cos()との関係

実はtanはsinとcosから求められます。

/*
 * 角度
 */
double angle =
        Math.toRadians(45);

/*
 * tan計算
 */
double tan =
        Math.sin(angle)
        /
        Math.cos(angle);

System.out.println(tan);
Java

結果はMath.tan()と同じになります。

つまり、


tan = sin ÷ cos

です。

実務でよくある利用例① 傾き計算

/*
 * 角度
 */
double degree = 30;

/*
 * 傾き
 */
double slope =
        Math.tan(
                Math.toRadians(
                        degree
                )
        );

System.out.println(slope);
Java

グラフ描画で利用されます。

実務でよくある利用例② 高さの計算

/*
 * 底辺
 */
double width = 100;

/*
 * 角度
 */
double degree = 45;

/*
 * 高さ
 */
double height =
        width *
        Math.tan(
                Math.toRadians(
                        degree
                )
        );

System.out.println(height);
Java

測量やシミュレーションで利用されます。

実務でよくある利用例③ CAD・設計システム

/*
 * 角度
 */
double angle = 20;

/*
 * 傾斜計算
 */
double incline =
        Math.tan(
                Math.toRadians(
                        angle
                )
        );
Java

設計支援システムで利用されることがあります。

実務でよくある利用例④ ゲーム開発

/*
 * 発射角
 */
double degree = 60;

/*
 * 軌道計算補助
 */
double direction =
        Math.tan(
                Math.toRadians(
                        degree
                )
        );
Java

ゲームや物理シミュレーションで登場します。

Math.atan()との関係

Math.atan()は逆正接です。

Math.tan()

/*
 * tan
 */
double value =
        Math.tan(
                Math.toRadians(45)
        );
Java

結果

1.0

Math.atan()

/*
 * atan
 */
double angle =
        Math.toDegrees(
                Math.atan(1)
        );

System.out.println(angle);
Java

実行結果

45.0

元の角度に戻ります。

浮動小数点誤差に注意しよう

Math.tan()もdouble型で計算されます。

そのため、


Math.tan(
    Math.toRadians(45)
)
Java

の結果は、


1.0

ではなく、


0.9999999999999999

になることがあります。

実務では許容誤差を考慮することが重要です。

実務で使えるテンプレート集

基本テンプレート

/*
 * tan計算
 */
double result =
        Math.tan(radian);
Java

度数法テンプレート

/*
 * 角度指定
 */
double result =
        Math.tan(
                Math.toRadians(
                        degree
                )
        );
Java

傾き計算テンプレート

/*
 * 傾き
 */
double slope =
        Math.tan(
                Math.toRadians(
                        angle
                )
        );
Java

高さ計算テンプレート

/*
 * 高さ取得
 */
double height =
        width *
        Math.tan(
                Math.toRadians(
                        angle
                )
        );
Java

情報セキュリティの観点から見る重要性

Math.tan()自体はセキュリティ機能ではありません。

しかし、

  • シミュレーション
  • IoTシステム
  • センサー制御
  • データ分析
  • 計測システム

などでは利用されることがあります。

特に物理計算や位置計算を扱うシステムでは重要な数学関数のひとつです。

初心者が覚えておくべき重要ポイント

  • 正接(tan)を計算するメソッドである
  • 引数はラジアンで指定する
  • 度数法の場合はMath.toRadians()を利用する
  • 戻り値はdouble型である
  • tan = sin ÷ cos の関係がある
  • 傾き計算で利用される
  • 90度付近は特に注意が必要である

まとめ

Math.tan()は、正接(タンジェント)を計算するためのJava標準メソッドです。

  • 三角関数のtanを計算できる
  • 引数はラジアンで指定する
  • 戻り値はdouble型である
  • 傾きや高さの計算で活躍する
  • Math.sin()やMath.cos()と密接な関係がある
  • 90度付近では非常に大きな値になるため注意が必要である
  • Java開発者が知っておきたい数学系ユーティリティである

特に実務では、シミュレーション、CADシステム、ゲーム開発、地図システム、センサー制御などでMath.tan()が活躍します。最初は難しく感じるかもしれませんが、「角度から傾きを求める関数」と理解するとイメージしやすくなります。また、Math.sin()やMath.cos()とあわせて学習することで、三角関数の理解がより深まり、実践的なプログラムを作れるようになるでしょう。

タイトルとURLをコピーしました