Ketika saya bekerja dengan matematika di JS, saya ingin fungsi trigonometri menggunakan nilai derajat daripada nilai radian. Bagaimana saya melakukannya?
Ketika saya bekerja dengan matematika di JS, saya ingin fungsi trigonometri menggunakan nilai derajat daripada nilai radian. Bagaimana saya melakukannya?
Jawaban:
Anda dapat menggunakan fungsi seperti ini untuk melakukan konversi:
function toDegrees (angle) {
return angle * (180 / Math.PI);
}
Perhatikan bahwa fungsi seperti sin
,, cos
dan seterusnya tidak mengembalikan sudut , mereka mengambil sudut sebagai masukan. Menurut saya, akan lebih berguna bagi Anda untuk memiliki fungsi yang mengubah input derajat menjadi radian, seperti ini:
function toRadians (angle) {
return angle * (Math.PI / 180);
}
yang dapat Anda gunakan untuk melakukan sesuatu seperti tan(toRadians(45))
.
Kalikan masukan dengan Math.PI/180
untuk mengonversi dari derajat ke radian sebelum memanggil fungsi trigonometri sistem.
Anda juga dapat menentukan fungsi Anda sendiri:
function sinDegrees(angleDegrees) {
return Math.sin(angleDegrees*Math.PI/180);
};
dan seterusnya.
sinDegrees
untuk menghindari kebingungan
sind
agar tetap singkat. Saya pribadi menyimpannya sin
karena saya tahu itu sin
akan menjadi derajat dan Math.sin
radian, tapi itu di kepala saya sendiri.
Saya membuat Objek Matematika saya sendiri yang malas untuk gelar (MathD), semoga ini membantu:
//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)));
}
};
Saya menyukai pendekatan fungsional yang lebih umum:
/**
* 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);
atau,
function dTrig(trigFunc, angle) {
return trigFunc(angle * Math.PI / 180);
}
yang dapat digunakan dengan fungsi pengambilan radian:
dTrig(Math.sin, 90);
// -> 1
dTrig(Math.tan, 180);
// -> 0
Semoga ini membantu!
Buat fungsi konversi Anda sendiri yang menerapkan matematika yang dibutuhkan, dan gunakan sebagai gantinya. http://en.wikipedia.org/wiki/Radian#Conversion_between_radians_and_degrees
atan()
,atan2()
,acos()
,asin()
kembali sudut.