如何获得正弦,余弦和棕褐色以度而不是弧度?


101

当我在JS中使用数学时,我希望其Trig函数使用度值而不是弧度值。我该怎么做?


19
sin / cos / tan不返回弧度角;他们以弧度表示角度。逆功能atan()atan2()acos()asin()回报角度。
杰森S

Answers:


215

您可以使用如下函数进行转换:

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

需要注意的是功能,如sincos不回的角度,他们采取的角度作为输入。在我看来,拥有一个将度数输入转换为弧度的函数对您来说会更有用,例如:

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

您可以用来做类似的事情tan(toRadians(45))


27

Math.PI/180在调用系统trig函数之前,将输入乘以将度数转换为弧度。

您还可以定义自己的函数:

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()不返回角度。它的输入参数是一个角度。
詹森S

1
那...那个离我远去的人。我知道。我当然知道 如果没有的话,我不会制作出具有Trig功能的游戏,但是……出于某种原因,我还是完全忘记了= /
Niet the Dark Absol 2012年

我是菜鸟,对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

希望这可以帮助!


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.