Seno, coseno y tangente permiten convertir ángulos en valores numéricos útiles para posiciones, direcciones, pendientes, ondas y movimiento.
Las tres funciones trigonométricas más usadas en programación son seno, coseno y tangente. Todas reciben un ángulo y devuelven un número.
En JavaScript se calculan con Math.sin, Math.cos y Math.tan. Estas funciones esperan el ángulo en radianes.
Si un programa trabaja con grados, primero debe convertirlos a radianes.
function aRadianes(grados) {
return grados * Math.PI / 180;
}
console.log(aRadianes(90));
console.log(aRadianes(180));
console.log(aRadianes(360));
El seno se asocia con la componente vertical de un punto que gira alrededor de un círculo. Su resultado siempre está entre -1 y 1.
function senoEnGrados(grados) {
const radianes = grados * Math.PI / 180;
return Math.sin(radianes);
}
console.log(senoEnGrados(0));
console.log(senoEnGrados(90));
console.log(senoEnGrados(270));
El coseno se asocia con la componente horizontal de un punto que gira alrededor de un círculo. También devuelve valores entre -1 y 1.
function cosenoEnGrados(grados) {
const radianes = grados * Math.PI / 180;
return Math.cos(radianes);
}
console.log(cosenoEnGrados(0));
console.log(cosenoEnGrados(90));
console.log(cosenoEnGrados(180));
La tangente relaciona el seno con el coseno. Puede interpretarse como una pendiente asociada al ángulo.
A diferencia de seno y coseno, la tangente no está limitada entre -1 y 1. Además, no está definida cuando el coseno vale 0.
function tangenteEnGrados(grados) {
const radianes = grados * Math.PI / 180;
return Math.tan(radianes);
}
console.log(tangenteEnGrados(0));
console.log(tangenteEnGrados(45));
console.log(tangenteEnGrados(60));
Algunos valores aparecen con mucha frecuencia en animación, gráficos y geometría computacional.
| Ángulo | Seno | Coseno | Tangente |
|---|---|---|---|
| 0° | 0 | 1 | 0 |
| 30° | 0.5 | 0.866... | 0.577... |
| 45° | 0.707... | 0.707... | 1 |
| 60° | 0.866... | 0.5 | 1.732... |
| 90° | 1 | 0 | No definida |
Podemos calcular los valores de varios ángulos y redondearlos para mostrarlos de forma legible.
function redondear(valor) {
return Math.round(valor * 1000) / 1000;
}
function trigonometria(grados) {
const radianes = grados * Math.PI / 180;
return {
grados,
seno: redondear(Math.sin(radianes)),
coseno: redondear(Math.cos(radianes)),
tangente: redondear(Math.tan(radianes))
};
}
console.log(trigonometria(0));
console.log(trigonometria(30));
console.log(trigonometria(45));
console.log(trigonometria(60));
Para mover un objeto según un ángulo, se usa el coseno para la velocidad horizontal y el seno para la velocidad vertical.
function direccion(anguloGrados, velocidad) {
const radianes = anguloGrados * Math.PI / 180;
return {
vx: Math.cos(radianes) * velocidad,
vy: Math.sin(radianes) * velocidad
};
}
console.log(direccion(0, 5));
console.log(direccion(45, 5));
console.log(direccion(90, 5));
Con 0° el movimiento va hacia la derecha. Con 90° el movimiento va hacia abajo o hacia arriba según cómo esté definido el eje vertical en el sistema gráfico.
El seno es muy útil para crear movimientos que suben y bajan de manera suave.
function alturaOscilante(tiempo, centro, amplitud, velocidad) {
return centro + Math.sin(tiempo * velocidad) * amplitud;
}
console.log(alturaOscilante(0, 100, 30, 1));
console.log(alturaOscilante(1, 100, 30, 1));
console.log(alturaOscilante(2, 100, 30, 1));
El siguiente banner utiliza Math.sin(tiempo · velocidad) para hacer flotar el texto, mover partículas y generar la onda de fondo. Cada elemento usa una fase diferente para que los movimientos no estén sincronizados.
Ajustá los controles para ver cómo cambia el comportamiento:
alturaOscilante(t, centro, amplitud, velocidad)
→
centro + Math.sin(t · velocidad) · amplitud
La tangente puede usarse para obtener la pendiente de una recta cuando conocemos el ángulo.
function pendienteDesdeAngulo(grados) {
const radianes = grados * Math.PI / 180;
return Math.tan(radianes);
}
console.log(pendienteDesdeAngulo(0));
console.log(pendienteDesdeAngulo(30));
console.log(pendienteDesdeAngulo(45));
Cuando el ángulo se acerca a 90°, la pendiente crece mucho. Por eso conviene tratar ese caso con cuidado.
En cálculos con tangente, los ángulos cercanos a 90° pueden producir valores enormes. Una función puede detectar esa situación antes de usar el resultado.
function tangenteSegura(grados) {
const radianes = grados * Math.PI / 180;
const coseno = Math.cos(radianes);
if (Math.abs(coseno) < 0.000001) {
return "No definida";
}
return Math.sin(radianes) / coseno;
}
console.log(tangenteSegura(45));
console.log(tangenteSegura(90));
Algunos resultados que matemáticamente deberían ser cero pueden aparecer como números muy pequeños debido a la representación interna de los decimales.
const resultado = Math.cos(Math.PI / 2);
console.log(resultado);
console.log(Math.abs(resultado) < 0.000001);
En programación es común comparar con una tolerancia en vez de exigir igualdad exacta.
Seno, coseno y tangente transforman ángulos en valores que un programa puede usar. Con ellas se pueden construir movimientos, calcular direcciones, generar ondas y resolver problemas geométricos de forma compacta.