Wenn ich in JS mit Mathematik arbeite, möchte ich, dass die Triggerfunktionen Gradwerte anstelle von Bogenmaßwerten verwenden. Wie würde ich das machen?
Wenn ich in JS mit Mathematik arbeite, möchte ich, dass die Triggerfunktionen Gradwerte anstelle von Bogenmaßwerten verwenden. Wie würde ich das machen?
Antworten:
Sie können eine Funktion wie diese verwenden, um die Konvertierung durchzuführen:
function toDegrees (angle) {
return angle * (180 / Math.PI);
}
Beachten Sie, dass Funktionen wie sin
, cos
usw. keine Winkel zurückgeben , sondern Winkel als Eingabe verwenden. Es scheint mir, dass es für Sie nützlicher wäre, eine Funktion zu haben, die eine Grad-Eingabe in Bogenmaß umwandelt, wie folgt:
function toRadians (angle) {
return angle * (Math.PI / 180);
}
mit denen man so etwas machen könnte tan(toRadians(45))
.
Multiplizieren Sie die Eingabe mit Math.PI/180
, um sie von Grad in Bogenmaß umzuwandeln, bevor Sie die Systemtrig-Funktionen aufrufen.
Sie können auch Ihre eigenen Funktionen definieren:
function sinDegrees(angleDegrees) {
return Math.sin(angleDegrees*Math.PI/180);
};
und so weiter.
sinDegrees
, um Verwirrung zu vermeiden
sind
, um es kurz zu halten. Ich persönlich behalte es bei, sin
weil ich weiß, dass sin
das dann in Grad und Math.sin
im Bogenmaß sein wird, aber das liegt auf meinem eigenen Kopf.
Ich habe mein eigenes kleines faules Math-Objekt für den Abschluss (MathD) erstellt, hoffe es hilft:
//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)));
}
};
Ich mag einen allgemeineren funktionalen Ansatz:
/**
* 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);
oder,
function dTrig(trigFunc, angle) {
return trigFunc(angle * Math.PI / 180);
}
die mit jeder Radian-Funktion verwendet werden kann:
dTrig(Math.sin, 90);
// -> 1
dTrig(Math.tan, 180);
// -> 0
Hoffe das hilft!
Erstellen Sie Ihre eigene Konvertierungsfunktion, die die erforderliche Mathematik anwendet, und rufen Sie diese stattdessen auf. http://en.wikipedia.org/wiki/Radian#Conversion_between_radians_and_degrees
atan()
,atan2()
,acos()
,asin()
Rücklaufwinkel.