sin、cos、tanでラジアンの代わりに度を使用するにはどうすればよいですか?


100

JSで数学を使用しているとき、そのトリガー関数でラジアン値の代わりに度数値を使用したいと思います。どうすればいいですか?


19
sin / cos / tanは角度をラジアンで返しません。それらはラジアンで角度をとります。逆関数atan()atan2()acos()asin()リターンが角度。
Jason S

回答:


214

次のような関数を使用して変換を実行できます。

function toDegrees (angle) {
  return angle * (180 / Math.PI);
}

関数が好き。なおsincosなどの角度を返さない彼らは、入力として角度を取ります、。次のように、度の入力をラジアンに変換する関数を用意しておくと便利です。

function toRadians (angle) {
  return angle * (Math.PI / 180);
}

これを使用して、次のようなことができますtan(toRadians(45))


27

Math.PI/180システムトリガー関数を呼び出す前に、入力を乗算して度からラジアンに変換します。

独自の関数を定義することもできます:

function sinDegrees(angleDegrees) {
    return Math.sin(angleDegrees*Math.PI/180);
};

等々。


2
これはsinDegrees、混乱を避けるために実際に名前を付ける必要があります
BlueRaja-Danny Pflughoeft 2012年

そうだね。私はいくつかのサイトがsindそれを短く保つことを呼びかけるのを見ました。それは度とラジアンであるsinことsinがわかっているので、私はそれを個人的に守っていますが、それMath.sinは私自身の頭にあります。
Niet the Dark Absol 2012年

6
-1:sin()は角度を返しません。入力引数は角度です。
Jason S

1
あれ…あの人が私から逃げた。そんなこと知ってる。もちろん私はそれを知っています。トリガー関数を使ってバジリオンゲームを作っていなかったとしたら...でも、なぜか完全に忘れて
しまいました

私は初心者で、trigが苦手です... cosDegとtanDegの方程式がどのように見えるか尋ねてもいいですか?ありがとうございました。
カーマ

14

私は学位(MathD)のために独自の少し怠惰な数学オブジェクトを作成しました。

//helper
/**
 * converts degree to radians
 * @param degree
 * @returns {number}
 */
var toRadians = function (degree) {
    return degree * (Math.PI / 180);
};

/**
 * Converts radian to degree
 * @param radians
 * @returns {number}
 */
var toDegree = function (radians) {
    return radians * (180 / Math.PI);
}

/**
 * Rounds a number mathematical correct to the number of decimals
 * @param number
 * @param decimals (optional, default: 5)
 * @returns {number}
 */
var roundNumber = function(number, decimals) {
    decimals = decimals || 5;
    return Math.round(number * Math.pow(10, decimals)) / Math.pow(10, decimals);
}
//the object
var MathD = {
    sin: function(number){
        return roundNumber(Math.sin(toRadians(number)));
    },
    cos: function(number){
        return roundNumber(Math.cos(toRadians(number)));
    },
    tan: function(number){
        return roundNumber(Math.tan(toRadians(number)));
    },
    asin: function(number){
        return roundNumber(toDegree(Math.asin(number)));
    },
    acos: function(number){
       return roundNumber(toDegree(Math.acos(number)));
   },
   atan: function(number){
       return roundNumber(toDegree(Math.atan(number)));
   }
};

4

私はより一般的な機能的アプローチが好きです:

/**
* converts a trig function taking radians to degrees
* @param {function} trigFunc - eg. Math.cos, Math.sin, etc.
* @param {number} angle - in degrees
* @returns {number}
*/
const dTrig = (trigFunc, angle) => trigFunc(angle * Math.PI / 180);

または、

function dTrig(trigFunc, angle) {
  return trigFunc(angle * Math.PI / 180);
}

これは、任意のラジアン取得関数で使用できます。

dTrig(Math.sin, 90);
  // -> 1

dTrig(Math.tan, 180);
  // -> 0

お役に立てれば!


弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.