Cuando estoy trabajando con matemáticas en JS, me gustaría que sus funciones trigonométricas usen valores de grados en lugar de radios. ¿Como podría hacerlo?¿Cómo puedo obtener sin, cos y tan para usar grados en lugar de radianes?
Respuesta
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))
.
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.
Esto realmente debería llamarse 'sinDegrees' para evitar confusiones –
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. –
-1: sin() no devuelve un ángulo. Su argumento de entrada es un ángulo. –
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
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. –
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)));
}
};
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!
- 1. cos de grados que no coinciden con los cos de radianes equivalentes
- 2. ¿Por qué OpenGL usa grados en lugar de radianes?
- 3. Convertir grados a radianes en ruby
- 4. Convierte latitud/longitud en grados/radianes?
- 5. ¿Cuál es el método para convertir radianes a grados?
- 6. ¿Por qué std :: sin() y std :: cos() son más lentos que sin() y cos()? código
- 7. Velocidad de las funciones cos() y sin() en sombreadores GLSL?
- 8. Fast Sin/Cos utilizando una matriz de traducción calculada previamente
- 9. ¿Cómo puedo obtener authlogic para usar la sesión de Rails en lugar de su propia cookie?
- 10. ¿Cómo puedo obtener VS2010 para usar el compilador 3.0 C# en lugar de 4.0?
- 11. ¿Cómo puedo establecer el eje y en radianes en un diagrama de Python?
- 12. ¿Qué puedo usar en lugar de eval()?
- 13. ¿Cómo puedo hacer que la función php cos devuelva el valor correcto?
- 14. tan() en Java devolviendo un valor extraño
- 15. ¿Puedo usar SafeHandle en lugar de IntPtr?
- 16. ¿Puedo obtener el formato de moneda estándar para usar un signo negativo en lugar de paréntesis?
- 17. ¿Puedo usar CoffeeScript en lugar de JS para node.js?
- 18. ¿Puedo usar CGAffineTransformMakeRotation para rotar una vista de más de 360 grados?
- 19. ¿Cómo puedo obtener socket connect() sin bloqueo?
- 20. ¿Cómo puedo obtener Ninject 2 para usar el constructor sin parámetros para LINQ to SQL DataContext?
- 21. ¿Cómo puedo obtener awk para imprimir sin espacio en blanco?
- 22. CATransform3DRotate rotate para 360 grados
- 23. ¿Qué tan seguro es usar enlaces `// domain.com /` (sin esquema)?
- 24. ¿Cómo puedo assert() sin usar abort()?
- 25. ¿Puedo obtener un comportamiento polimórfico sin usar funciones virtuales?
- 26. ¿Cómo puedo girar un UIImageView en 20 grados?
- 27. (¿Cómo puedo usar ServerSocket para escuchar UDP en lugar de tráfico TCP?
- 28. Cómo puedo usar el connectionString del sitio web actual para log4Net en lugar de configurar
- 29. ¿Cómo sé cuál es el mejor lugar para usar 'usar'?
- 30. ¿Puedo usar imprimir en Raphael sin Cufon?
sin/cos/tan no devuelve ángulos en radianes; toman ángulos en radianes. Las funciones inversas 'atan()', 'atan2()', 'acos()', 'asin()' ángulos de retorno. –