如何使用度数而不是弧度来获得sin,cos和tan?

0x4*_*2D2 94 javascript math

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

Pet*_*son 199

您可以使用这样的函数进行转换:

function toDegrees (angle) {
  return angle * (180 / Math.PI);
}
Run Code Online (Sandbox Code Playgroud)

请注意,像sin,cos等等函数不返回角度,它们将角度视为输入.在我看来,拥有一个将度数输入转换为弧度的函数会更有用,如下所示:

function toRadians (angle) {
  return angle * (Math.PI / 180);
}
Run Code Online (Sandbox Code Playgroud)

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


Nie*_*sol 26

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

您还可以定义自己的功能:

function sinDegrees(angleDegrees) {
    return Math.sin(angleDegrees*Math.PI/180);
};
Run Code Online (Sandbox Code Playgroud)

等等.

  • -1:sin()不返回角度.它的输入参数是一个角度. (5认同)
  • 应该将其真正命名为“ sinDegrees”,以避免混淆 (2认同)
  • 那个……那个离我而去。我知道。我当然知道。如果我没有,我就不会制作具有三角函数的无数游戏......但出于某种原因,我有点完全忘记了=/ (2认同)
  • `e-17` 告诉你它是 `0.00000000000000006123...` (2认同)

Dan*_*ick 14

我为学位(MathD)创建了自己的小懒人Math-Object,希望它有所帮助:

//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)));
   }
};
Run Code Online (Sandbox Code Playgroud)


小智 6

我喜欢更通用的函数式方法:

/**
* 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);
Run Code Online (Sandbox Code Playgroud)

或者,

function dTrig(trigFunc, angle) {
  return trigFunc(angle * Math.PI / 180);
}
Run Code Online (Sandbox Code Playgroud)

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

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

dTrig(Math.tan, 180);
  // -> 0
Run Code Online (Sandbox Code Playgroud)

希望这可以帮助!