How can I get sin, cos, and tan to use degrees instead of radians?

后端 未结 5 2128
误落风尘
误落风尘 2020-11-29 00:13

When I\'m working with math in JS I would like its trig functions to use degree values instead of radian values. How would I do that?

相关标签:
5条回答
  • 2020-11-29 00:59

    You can use a function like this to do the conversion:

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

    Note that functions like sin, cos, and so on do not return angles, they take angles as input. It seems to me that it would be more useful to you to have a function that converts a degree input to radians, like this:

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

    which you could use to do something like tan(toRadians(45)).

    0 讨论(0)
  • 2020-11-29 01:11

    I created my own little lazy Math-Object for degree (MathD), hope it helps:

    //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 讨论(0)
  • 2020-11-29 01:14

    Create your own conversion function that applies the needed math, and invoke those instead. http://en.wikipedia.org/wiki/Radian#Conversion_between_radians_and_degrees

    0 讨论(0)
  • 2020-11-29 01:16

    I like a more general functional approach:

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

    or,

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

    which can be used with any radian-taking function:

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

    Hope this helps!

    0 讨论(0)
  • 2020-11-29 01:19

    Multiply the input by Math.PI/180 to convert from degrees to radians before calling the system trig functions.

    You could also define your own functions:

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

    and so on.

    0 讨论(0)
提交回复
热议问题