JavaScriptでMath.acos()を使用して逆コサイン(アークコサイン)を計算する方法を解説します。

Math.acos()とは

Math.acos()は、与えられた数値の逆コサイン(アークコサイン)を計算するJavaScriptの組み込み関数です。戻り値は0からπ(ラジアン)の範囲で返されます。

基本的な使い方

const result = Math.acos(0.5);
console.log(result); // 1.0472... (約60度)

引数の制限

Math.acos()の引数は-1から1の範囲内である必要があります。

  • 最小値: -1
  • 最大値: 1

この範囲外の値を引数として与えると、NaN(Not a Number)が返されます。

console.log(Math.acos(-2));  // NaN
console.log(Math.acos(1.5)); // NaN

よくある使用例

度数からラジアンへの変換

function degreesToRadians(degrees) {
    return degrees * (Math.PI / 180);
}

function radiansToDegrees(radians) {
    return radians * (180 / Math.PI);
}

// 逆コサインを度数で取得
const angleInRadians = Math.acos(0.5);
const angleInDegrees = radiansToDegrees(angleInRadians);
console.log(angleInDegrees); // 約60度

三角形の角度計算

// 三角形の2辺の長さから角度を求める
function getAngle(adjacent, hypotenuse) {
    const cosTheta = adjacent / hypotenuse;
    const thetaRadians = Math.acos(cosTheta);
    return radiansToDegrees(thetaRadians);
}

console.log(getAngle(3, 6)); // 約60度

注意点

1. 引数は必ず-1から1の範囲内にする

2. 戻り値はラジアンで返される

3. 度数が必要な場合は変換が必要

エラー対処法

NaNが返される場合

// エラーチェック付きの関数
function safeAcos(value) {
    if (value < -1) return Math.PI; // -1未満の場合は180度
    if (value > 1) return 0;        // 1より大きい場合は0度
    return Math.acos(value);
}

console.log(safeAcos(2));    // 0
console.log(safeAcos(-1.5)); // 3.141592...(π)

精度の問題

JavaScript の浮動小数点数の精度により、計算結果が完全に正確でない場合があります。重要な計算では適切な丸め処理を行うことをお勧めします。

// 小数点以下3桁に丸める
const result = Math.round(Math.acos(0.5) * 1000) / 1000;

まとめ

Math.acos()は三角関数の計算に欠かせない関数です。以下の点に注意して使用しましょう:

  • 引数は-1から1の範囲内
  • 戻り値はラジアン
  • 必要に応じて度数への変換を行う
  • エラー処理を適切に実装する

これらの注意点を守ることで、正確な逆コサインの計算が可能になります。