2012-03-14 5 views

Respuesta

145

Se puede utilizar una función como esta para hacer la conversión:

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

Nota que funciona como sin, cos, y así sucesivamente no regresan ángulos, toman como entrada ángulos. Me parece que sería más útil para que usted tenga una función que convierte una entrada de grados a radianes, así:

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

que se podría utilizar para hacer algo como tan(toRadians(45)).

20

Multiplique el resultado por 180/Math.PI para convertir de radianes a grados.

También puede definir sus propias funciones:

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

y así sucesivamente.

+1

Esto realmente debería llamarse 'sinDegrees' para evitar confusiones –

+0

True. He visto algunos sitios llamar es 'sind' para mantenerlo corto. Yo personalmente lo guardo como 'pecado 'porque sé que' sin' estará entonces en grados y 'Math.sin' en radianes, pero eso está en mi propia cabeza. –

+3

-1: sin() no devuelve un ángulo. Su argumento de entrada es un ángulo. –

0

Crea tu propia función de conversión que aplique las matemáticas necesarias e invocalas en su lugar. http://en.wikipedia.org/wiki/Radian#Conversion_between_radians_and_degrees

+5

Si bien esto teóricamente puede responder a la pregunta, [sería preferible] (http: // meta. stackexchange.com/q/8259) para incluir aquí las partes esenciales de la respuesta y proporcionar el enlace para referencia. –

11

he creado mi propio pequeño perezoso Math-Objeto de grado (MathD), creo que sirve:

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

me gusta un enfoque funcional más general:

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

o,

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

que se puede utilizar con cualquier función radian-taking:

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

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

Hope this helps!

Cuestiones relacionadas