Javascript 如何让sin、cos和tan使用度而不是弧度?

Javascript 如何让sin、cos和tan使用度而不是弧度?,javascript,math,Javascript,Math,当我在JS中使用数学时,我希望它的trig函数使用度值而不是弧度值。我该怎么做?在调用系统触发函数之前,将输入乘以Math.PI/180以将角度转换为弧度 您还可以定义自己的函数: function sinDegrees(angleDegrees) { return Math.sin(angleDegrees*Math.PI/180); }; 依此类推。您可以使用如下函数进行转换: function toDegrees (angle) { return angle * (180 /

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

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

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

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

依此类推。

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

function toDegrees (angle) {
  return angle * (180 / Math.PI);
}
请注意,
sin
cos
等函数不返回角度,它们将角度作为输入。在我看来,拥有一个将度输入转换为弧度的函数对您更有用,如下所示:

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

您可以使用它来执行类似于tan(toRadians(45))的操作创建自己的转换函数,应用所需的数学,然后调用这些函数

我为degree创建了自己的懒惰数学对象(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)));
   }
};

我喜欢更一般的功能性方法:

/**
* 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);
或者

可与任何弧度测量功能一起使用:

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

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

希望这有帮助

这实际上应该命名为
sinDegrees
,以避免混淆。我见过一些网站调用is
sind
来保持简短。我个人将其保留为
sin
,因为我知道
sin
将以度为单位,而
Math.sin
以弧度为单位,但这取决于我自己。-1:sin()不返回角度。它的输入参数是一个角度。。。那个人从我身边逃走了。我知道。我当然知道。如果我没有。。。但出于某种原因,我完全忘记了=/The
e-17
告诉你它是
0.0000000000000000 6123…
sin/cos/tan不返回弧度的角度;它们以弧度表示角度。反向函数包括
atan()
atan2()
acos()
asin()
返回角。虽然这从理论上可以回答问题,但在此处包含答案的基本部分,并提供链接供参考。
dTrig(Math.sin, 90);
  // -> 1

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