Khi tôi làm việc với toán học trong JS, tôi muốn các hàm trig của nó sử dụng giá trị độ thay vì giá trị radian. Tôi sẽ làm điều đó như thế nào?
Khi tôi làm việc với toán học trong JS, tôi muốn các hàm trig của nó sử dụng giá trị độ thay vì giá trị radian. Tôi sẽ làm điều đó như thế nào?
Câu trả lời:
Bạn có thể sử dụng một chức năng như thế này để thực hiện chuyển đổi:
function toDegrees (angle) {
return angle * (180 / Math.PI);
}
Lưu ý rằng các hàm như sin
, cos
v.v. không trả về góc , chúng lấy góc làm đầu vào. Đối với tôi, có vẻ như sẽ hữu ích hơn cho bạn nếu có một hàm chuyển đổi đầu vào độ thành radian, như sau:
function toRadians (angle) {
return angle * (Math.PI / 180);
}
mà bạn có thể sử dụng để làm điều gì đó như thế nào tan(toRadians(45))
.
Nhân đầu vào Math.PI/180
với để chuyển đổi từ độ sang radian trước khi gọi các hàm trig của hệ thống.
Bạn cũng có thể xác định các chức năng của riêng mình:
function sinDegrees(angleDegrees) {
return Math.sin(angleDegrees*Math.PI/180);
};
và như thế.
sinDegrees
để tránh nhầm lẫn
sind
để giữ cho nó ngắn gọn. Cá nhân tôi giữ nó sin
vì tôi biết rằng sin
sau đó sẽ tính bằng độ và Math.sin
radian, nhưng đó là do tôi nghĩ.
Tôi đã tạo Math-Object lười biếng của riêng mình cho mức độ (MathD), hy vọng nó sẽ giúp:
//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)));
}
};
Tôi thích một cách tiếp cận chức năng tổng quát hơn:
/**
* 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);
hoặc là,
function dTrig(trigFunc, angle) {
return trigFunc(angle * Math.PI / 180);
}
có thể được sử dụng với bất kỳ hàm lấy radian nào:
dTrig(Math.sin, 90);
// -> 1
dTrig(Math.tan, 180);
// -> 0
Hi vọng điêu nay co ich!
Tạo hàm chuyển đổi của riêng bạn để áp dụng phép toán cần thiết và gọi chúng thay thế. http://en.wikipedia.org/wiki/Radian#Conversion_between_radians_and_degrees
atan()
,atan2()
,acos()
,asin()
trở lại góc.