JS에서 수학으로 작업 할 때 삼각 함수가 라디안 값 대신 차수 값을 사용하기를 원합니다. 어떻게할까요?
답변
다음과 같은 함수를 사용하여 변환을 수행 할 수 있습니다.
function toDegrees (angle) {
return angle * (180 / Math.PI);
}
sin
, cos
등의 함수는 각도를 반환하지 않으며 각도를 입력으로 사용합니다. 다음과 같이 각도 입력을 라디안으로 변환하는 함수를 갖는 것이 더 유용 할 것 같습니다.
function toRadians (angle) {
return angle * (Math.PI / 180);
}
같은 작업을 수행하는 데 사용할 수 있습니다 tan(toRadians(45))
.
답변
Math.PI/180
시스템 삼각 함수를 호출하기 전에 입력 값을 곱하여 각도에서 라디안으로 변환하십시오.
고유 한 기능을 정의 할 수도 있습니다.
function sinDegrees(angleDegrees) {
return Math.sin(angleDegrees*Math.PI/180);
};
등등.
답변
나는 학위 (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)));
}
};
답변
더 일반적인 기능적 접근 방식을 좋아합니다.
/**
* 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
도움이 되었기를 바랍니다!
답변
필요한 수학을 적용하는 자체 변환 함수를 만들고 대신 호출하십시오. http://en.wikipedia.org/wiki/Radian#Conversion_between_radians_and_degrees