라디안 대신 각도를 사용하기 위해 sin, cos 및 tan을 어떻게 얻을 수 있습니까?


101

JS에서 수학으로 작업 할 때 삼각 함수가 라디안 값 대신 차수 값을 사용하기를 원합니다. 어떻게할까요?


20
sin / cos / tan은 각도를 라디안으로 반환하지 않습니다. 라디안 단위의 각도를 취합니다. 인버스 함수 atan(), atan2(), acos(), asin()복귀 각도.
제이슨 S

답변:


215

다음과 같은 함수를 사용하여 변환을 수행 할 수 있습니다.

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

sin, cos등의 함수는 각도를 반환하지 않으며 각도를 입력으로 사용합니다. 다음과 같이 각도 입력을 라디안으로 변환하는 함수를 갖는 것이 더 유용 할 것 같습니다.

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

같은 작업을 수행하는 데 사용할 수 있습니다 tan(toRadians(45)).


27

Math.PI/180시스템 삼각 함수를 호출하기 전에 입력 값을 곱하여 각도에서 라디안으로 변환하십시오.

고유 한 기능을 정의 할 수도 있습니다.

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

등등.


2
이것은 정말 이름을 지정해야 sinDegrees혼동을 피하기 위해
BlueRaja - 대니 Pflughoeft을

진실. 일부 사이트 호출은 sind짧게 유지하는 것을 보았습니다 . 나는 그것이 각도와 라디안 단위가 될 것이라는 sin것을 알고 있기 때문에 개인적으로 그것을 유지 하지만 그것은 내 머리에 달려 있습니다. sinMath.sin
Niet the Dark Absol

6
-1 : sin ()은 각도를 반환하지 않습니다. 입력 인수는 각도입니다.
제이슨 S

1
그 ... 저 사람이 나에게서 멀어졌습니다. 알아요. 물론 알아요. 내가하지 않았다면 기능을 삼각와 bazillion 게임을 만든 않았을 것이다 ...하지만 어떤 이유로 나는 좀 완전히 그 = / 잊어
NIET 다크 Absol

나는 멍청하고 trig에 나쁜 ... cosDeg와 tanDeg의 방정식이 어떻게 생겼는지 물어봐도 될까요? 감사합니다.
Kama 2013

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)));
   }
};

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

도움이 되었기를 바랍니다!


당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.