JS'de matematikle çalışırken, trigonometri fonksiyonlarının radyan değerleri yerine derece değerleri kullanmasını istiyorum. Bunu nasıl yaparım?
JS'de matematikle çalışırken, trigonometri fonksiyonlarının radyan değerleri yerine derece değerleri kullanmasını istiyorum. Bunu nasıl yaparım?
Yanıtlar:
Dönüşümü yapmak için bunun gibi bir işlevi kullanabilirsiniz:
function toDegrees (angle) {
return angle * (180 / Math.PI);
}
Fonksiyonları gibi Not olduğunu sin, cosve benzeri açıları dönmüyor onlar girdi olarak açılar almak. Bana öyle geliyor ki, bir derece girdisini radyana çeviren bir işleve sahip olmak sizin için daha faydalı olacaktır, örneğin:
function toRadians (angle) {
return angle * (Math.PI / 180);
}
gibi bir şey yapmak için kullanabilirsiniz tan(toRadians(45)).
Girdiyi şu şekilde çarpın: Math.PI/180Sistem tetikleme işlevlerini çağırmadan önce dereceden radyana dönüştürmek için ile .
Ayrıca kendi işlevlerinizi de tanımlayabilirsiniz:
function sinDegrees(angleDegrees) {
return Math.sin(angleDegrees*Math.PI/180);
};
ve bunun gibi.
sinDegreeskarışıklığı önlemek için
sindkısa tutmak için gördüm . Ben şahsen tutuyorum sinçünkü bunun sinderece ve Math.sinradyan cinsinden olacağını biliyorum , ama bu kendi kafamda.
Derece için kendi küçük tembel Matematik Nesnemi (MathD) yarattım, umarım yardımcı olur:
//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)));
}
};
Daha genel bir işlevsel yaklaşımı seviyorum:
/**
* 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);
veya,
function dTrig(trigFunc, angle) {
return trigFunc(angle * Math.PI / 180);
}
herhangi bir radyan alma işlevi ile kullanılabilir:
dTrig(Math.sin, 90);
// -> 1
dTrig(Math.tan, 180);
// -> 0
Bu yardımcı olur umarım!
Gerekli matematiği uygulayan kendi dönüştürme işlevinizi oluşturun ve bunun yerine bunları çağırın. http://en.wikipedia.org/wiki/Radian#Conversion_between_radians_and_degrees
atan(),atan2(),acos(),asin()dönüş açıları.