119 votes

Comment puis-je obtenir que sin, cos et tan utilisent des degrés au lieu de radians ?

Lorsque je travaille avec des mathématiques dans JS, j'aimerais que ses fonctions trigonométriques utilisent des valeurs en degrés au lieu de valeurs en radians. Comment ferais-je ça ?

245voto

Peter Olson Points 30452

Vous pouvez utiliser une fonction comme celle-ci pour effectuer la conversion :

 function toDegrees (angle) {
  return angle * (180 / Math.PI);
}

Notez que des fonctions telles que sin , cos , etc. ne renvoient pas angles , elles prennent des angles en entrée. Il me semble qu'il vous serait plus utile d'avoir une fonction qui convertit une entrée de degré en radians, comme ceci :

 function toRadians (angle) {
  return angle * (Math.PI / 180);
}

que vous pouvez utiliser pour faire quelque chose comme tan(toRadians(45)) .

31voto

Niet the Dark Absol Points 154811

Multipliez l'entrée par Math.PI/180 pour convertir les degrés en radians avant d'appeler les fonctions de trig du système.

Vous pouvez également définir vos propres fonctions :

 function sinDegrees(angleDegrees) {
    return Math.sin(angleDegrees*Math.PI/180);
};

etc.

14voto

Daniel Budick Points 1270

J'ai créé mon propre petit objet mathématique paresseux pour le diplôme (MathD), j'espère que cela aide:

 //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)));
   }
};

6voto

David Nishikawa Points 51

J'aime une approche fonctionnelle plus générale :

 /**
* 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);

ou alors,

 function dTrig(trigFunc, angle) {
  return trigFunc(angle * Math.PI / 180);
}

qui peut être utilisé avec n'importe quelle fonction de prise de radian :

 dTrig(Math.sin, 90);
  // -> 1

dTrig(Math.tan, 180);
  // -> 0

J'espère que cela t'aides!

0voto

MLProgrammer-CiM Points 1080

Créez votre propre fonction de conversion qui applique les calculs nécessaires et invoquez-les à la place.http://en.wikipedia.org/wiki/Radian#Conversion_between_radians_and_degrees

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X