เมื่อฉันทำงานกับคณิตศาสตร์ใน JS ฉันต้องการให้ฟังก์ชันตรีโกณมิติใช้ค่าองศาแทนค่าเรเดียน ฉันจะทำอย่างไร
เมื่อฉันทำงานกับคณิตศาสตร์ใน JS ฉันต้องการให้ฟังก์ชันตรีโกณมิติใช้ค่าองศาแทนค่าเรเดียน ฉันจะทำอย่างไร
คำตอบ:
คุณสามารถใช้ฟังก์ชันเช่นนี้เพื่อทำการแปลง:
function toDegrees (angle) {
return angle * (180 / Math.PI);
}
โปรดทราบว่าฟังก์ชั่นชอบsin
, cos
และอื่น ๆไม่ได้กลับมุมที่พวกเขาใช้มุมเป็น input สำหรับฉันแล้วดูเหมือนว่าจะมีประโยชน์มากกว่าสำหรับคุณที่มีฟังก์ชันที่แปลงอินพุตองศาเป็นเรเดียนเช่นนี้:
function toRadians (angle) {
return angle * (Math.PI / 180);
}
tan(toRadians(45))
ซึ่งคุณสามารถใช้เพื่อทำสิ่งที่ชอบ
คูณอินพุตโดยMath.PI/180
เพื่อแปลงจากองศาเป็นเรเดียนก่อนที่จะเรียกฟังก์ชันตรีโกณมิติของระบบ
คุณยังสามารถกำหนดฟังก์ชันของคุณเอง:
function sinDegrees(angleDegrees) {
return Math.sin(angleDegrees*Math.PI/180);
};
และอื่น ๆ
sinDegrees
เพื่อหลีกเลี่ยงความสับสน
sind
สั้น ๆ โดยส่วนตัวแล้วฉันเก็บมันไว้sin
เพราะฉันรู้ว่าsin
ตอนนั้นจะเป็นองศาและMath.sin
เป็นเรเดียน แต่นั่นอยู่บนหัวของฉันเอง
ฉันสร้าง Math-Object ที่ขี้เกียจของตัวเองสำหรับปริญญา (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);
หรือ,
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
atan()
,atan2()
,acos()
,asin()
กลับมุม