2012-03-14 10 views
69

私はJSの数学で作業していますが、trig関数はラジアン値の代わりに度数を使用したいと考えています。どうすればいい?sin、cos、tanにラジアンの代わりに度を使用するにはどうすればよいですか?

+16

sin/cos/tanは角度をラジアンで返しません。彼らはラジアンで角度をとる。逆関数 'atan()'、 'atan2()'、 'acos()'、 'asin()'は角度を返します。 –

答えて

145

あなたは、変換を行うために、このような関数を使用することができます。あなたがtan(toRadians(45))ような何かをするために使用することができ

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

:このようなラジアン程度の入力を、変換機能を持っているあなたに、より有用であろうと私には思えます。

20

結果にを掛けてラジアンから度に変換します。

また、独自の関数を定義することができます。

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

のように。 sinように機能

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

注意、cosを、そしてそうに角度を返さない、彼らは、入力として角度を取る:

+1

混乱を避けるために、これは本当に 'sinDegrees'という名前にしてください。 –

+0

真。私はいくつかのサイトが 'sind'を短くして呼び出すのを見てきました。私は個人的には「罪」を維持しています。なぜなら、「罪」は度で、「Math.sin」はラジアンであることを知っているからです。しかし、それは私自身の頭にあります。 –

+3

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

0

必要な数式を適用して、それらを代わりに呼び出す独自の変換関数を作成します。 http://en.wikipedia.org/wiki/Radian#Conversion_between_radians_and_degrees

+5

であることを示していますが、これは理論的に質問に答えるかもしれませんが[http:// meta。 stackexchange.com/q/8259)ここに回答の重要な部分を含めて、参考のためのリンクを提供してください。 –

11

私はそれが役に立てば幸い、学位のために私自身の小さな怠惰な数学・オブジェクト(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))); 
    } 
}; 
0

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

/** 
* 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 

希望します。

関連する問題