Funciones Trigonométricas en JavaScript: sin(), cos() y tan()
Aprende a calcular senos, cosenos y tangentes con las funciones trigonométricas Math.sin(), Math.cos() y Math.tan(), incluyendo sus funciones inversas.
TL;DR - Resumen rápido
- Math.sin(π/2) = 1, Math.cos(0) = 1: usan radianes, rango siempre [-1, 1]
- Math.tan(π/2) → ±Infinity: tiene asíntotas en π/2 + kπ, no acotada como sin/cos
- Math.asin(2) → NaN: funciones inversas solo aceptan [-1, 1], retornan radianes
- Conversión crucial: 90° = Math.PI/2 rad, 180° = Math.PI rad, 360° = 2*Math.PI rad
- Math.atan2(y, x) mejor que Math.atan(y/x): retorna ángulo correcto en [-π, π] con cuadrante
Introducción a las Funciones Trigonométricas
Las funciones trigonométricas de JavaScript (Math.sin, Math.cos, Math.tan, y sus inversas) son herramientas fundamentales para trabajar con ángulos y ondas. Estas funciones aceptan ángulos en radianes y retornan valores entre -1 y 1. Son esenciales en gráficos por computadora, animaciones, física simulada, procesamiento de señales y muchas otras aplicaciones.
Es importante entender que JavaScript usa radianes, no grados. Un círculo completo (360°) equivale a 2π radianes. Esta convención es estándar en matemáticas y ciencias de la computación, aunque puede ser confusa para desarrolladores acostumbrados a trabajar con grados.
- Todas las funciones trigonométricas usan radianes como unidad de ángulo
- Los valores de retorno están siempre en el rango [-1, 1]
- Existen funciones inversas: asin (arcoseno), acos (arcocoseno), atan (arctangente)
- Para convertir de grados a radianes usa: radianes = grados × Math.PI / 180
- Las funciones son periódicas: sin y cos tienen período 2π, tan tiene período π
Historia de las Funciones Trigonométricas
Las funciones trigonométricas de JavaScript existen desde ES1 (ECMAScript 1997). Están basadas en las funciones matemáticas estándar del mismo nombre que se han usado por siglos. La implementación en los motores JavaScript modernos está altamente optimizada y proporciona resultados con precisión de punto flotante de 64 bits.
Ángulos y Radianes
La conversión entre grados y radianes es fundamental para usar las funciones trigonométricas en JavaScript. Un círculo completo (360°) equivale exactamente a 2π radianes, lo que significa que 180° = π radianes. Esta relación es constante y se deriva de la definición de radián.
Conversión entre Grados y Radianes
Para convertir de grados a radianes, multiplicas por Math.PI/180. Para convertir de radianes a grados, multiplicas por 180/Math.PI. Esta conversión es necesaria porque las funciones trigonométricas de JavaScript solo aceptan radianes.
El ejemplo muestra cómo convertir entre grados y radianes. Note que 90° = π/2 radianes, 180° = π radianes y 360° = 2π radianes. Estas conversiones son exactas y fundamentales para cualquier cálculo trigonométrico.
¿Por Qué Radianes?
Los radianes son preferidos en matemáticas porque simplifican muchas fórmulas. Por ejemplo, la longitud de un arco de círculo es simplemente s = rθ (donde θ está en radianes). Si usáramos grados, necesitaríamos factores de conversión adicionales en cada fórmula. Además, los radianes son naturales en cálculo: la derivada de sin(x) es cos(x) sin necesidad de factores de conversión.
Math.sin(): Seno
Math.sin(x) retorna el seno de un ángulo x en radianes. El seno representa la coordenada y en el círculo unitario para un ángulo dado. Esta función es fundamental para trabajar con ondas senoidales, movimiento circular y cualquier cálculo que involucre proyecciones verticales.
Sintaxis Básica de sin()
Math.sin() acepta un único argumento numérico que representa un ángulo en radianes y retorna un valor entre -1 y 1. La función es continua y periódica con período 2π, lo que significa que sin(θ) = sin(θ + 2π) para cualquier θ.
El ejemplo muestra cómo Math.sin() se comporta con diferentes ángulos. Note que sin(0) = 0, sin(π/2) = 1 y sin(π) = 0. Estos valores corresponden a las coordenadas y en el círculo unitario para ángulos de 0°, 90° y 180° respectivamente.
Casos de Uso Prácticos de sin()
El seno es esencial en muchas aplicaciones prácticas. Desde animaciones y gráficos hasta procesamiento de señales y física simulada, Math.sin() es una herramienta fundamental para modelar fenómenos oscilatorios y movimiento circular.
Estos ejemplos demuestran aplicaciones prácticas de Math.sin(). La generación de ondas senoidales es fundamental en procesamiento de audio y gráficos, mientras que el movimiento circular es esencial en animaciones y juegos.
Math.cos(): Coseno
Math.cos(x) retorna el coseno de un ángulo x en radianes. El coseno representa la coordenada x en el círculo unitario para un ángulo dado. Esta función es complementaria al seno y es fundamental para proyecciones horizontales, cálculos de distancia y transformaciones de coordenadas.
Sintaxis Básica de cos()
Math.cos() acepta un único argumento numérico que representa un ángulo en radianes y retorna un valor entre -1 y 1. Al igual que Math.sin(), Math.cos() es continua y periódica con período 2π, y satisface la identidad fundamental cos²(θ) + sin²(θ) = 1.
El ejemplo muestra cómo Math.cos() se comporta con diferentes ángulos. Note que cos(0) = 1, cos(π/2) = 0 y cos(π) = -1. Estos valores corresponden a las coordenadas x en el círculo unitario, complementando los valores de Math.sin().
Casos de Uso Prácticos de cos()
El coseno es fundamental en transformaciones de coordenadas, cálculos de distancia y proyecciones. Combinado con Math.sin(), permite trabajar con sistemas de coordenadas polares y cartesianas, y es esencial en gráficos 2D y 3D.
Estos ejemplos demuestran aplicaciones prácticas de Math.cos(). La conversión entre coordenadas polares y cartesianas es fundamental en gráficos y navegación, mientras que el cálculo de distancia euclidiana usa tanto sin() como cos().
Identidad Pitagórica: sin² + cos² = 1
La identidad sin²(θ) + cos²(θ) = 1 es fundamental en trigonometría. Esta propiedad garantiza que cualquier punto en el círculo unitario tenga distancia 1 desde el origen. Es útil para normalizar vectores y verificar cálculos trigonométricos.
Math.tan(): Tangente
Math.tan(x) retorna la tangente de un ángulo x en radianes, que es el cociente entre el seno y el coseno: tan(x) = sin(x)/cos(x). Esta función es fundamental en geometría, especialmente para calcular pendientes, ángulos de elevación y transformaciones de coordenadas.
Sintaxis Básica de tan()
Math.tan() acepta un único argumento numérico que representa un ángulo en radianes y retorna la tangente de ese ángulo. La función tiene asíntotas verticales en π/2 + kπ (donde k es un entero) donde tiende hacia infinito, y es periódica con período π.
El ejemplo muestra cómo Math.tan() se comporta con diferentes ángulos. Note que tan(0) = 0, tan(π/4) = 1 y tan(π/2) tiende hacia infinito. Las asíntotas ocurren cuando el coseno es cero (en π/2 + kπ).
Casos de Uso Prácticos de tan()
La tangente es esencial para calcular pendientes, ángulos de elevación y transformaciones de coordenadas. Es fundamental en gráficos, física simulada, navegación y cualquier aplicación que requiera cálculos angulares.
Estos ejemplos demuestran aplicaciones prácticas de Math.tan(). El cálculo de pendiente es fundamental en gráficos y análisis de datos, mientras que la conversión entre coordenadas polares y cartesianas es esencial en muchas aplicaciones.
Advertencia: Asíntotas de tan()
Math.tan() tiene asíntotas verticales en π/2 + kπ donde el valor tiende hacia ±∞. En π/2 + kπ, la función retorna Infinity. Debes manejar estos casos especialmente si estás calculando pendientes o ángulos de elevación.
Funciones Inversas: asin, acos, atan
Las funciones trigonométricas inversas permiten encontrar el ángulo original dado el valor de una función trigonométrica. Math.asin() retorna el arcoseno, Math.acos() el arcocoseno y Math.atan() la arctangente. Estas funciones son esenciales para conversión de coordenadas, cálculos de ángulos y muchas aplicaciones geométricas.
- <strong>Math.asin(x):</strong> arcoseno, dominio [-1, 1], rango [-π/2, π/2], retorna ángulo vertical
- <strong>Math.acos(x):</strong> arcocoseno, dominio [-1, 1], rango [0, π], retorna ángulo de rotación
- <strong>Math.atan(x):</strong> arctangente, dominio (-∞, ∞), rango (-π/2, π/2), retorna ángulo de pendiente
- <strong>Math.atan2(y, x):</strong> arctangente de dos argumentos, rango [-π, π], maneja cuadrantes correctamente
- Valores fuera de dominio retornan NaN (asin/acos con |x| > 1), siempre verifica entrada
Math.asin(): Arcoseno
Math.asin(x) retorna el arcoseno (ángulo cuyo seno es x) en radianes. El resultado está en el rango [-π/2, π/2] y representa el ángulo correspondiente a una coordenada y dada. Esta función es la inversa de Math.sin().
El ejemplo muestra cómo Math.asin() se comporta con diferentes valores. Note que asin(1) = π/2 (90°) y asin(-1) = -π/2 (-90°). Los valores fuera del rango [-1, 1] retornan NaN.
Math.acos(): Arcocoseno
Math.acos(x) retorna el arcocoseno (ángulo cuyo coseno es x) en radianes. El resultado está en el rango [0, π] y representa el ángulo correspondiente a una coordenada x dada. Esta función es la inversa de Math.cos().
El ejemplo muestra cómo Math.acos() se comporta con diferentes valores. Note que acos(1) = 0 (0°) y acos(-1) = π (180°). Los valores fuera del rango [-1, 1] retornan NaN.
Math.atan(): Arctangente
Math.atan(x) retorna la arctangente (ángulo cuya tangente es x) en radianes. El resultado está en el rango (-π/2, π/2) y representa el ángulo correspondiente a una pendiente dada. Esta función es la inversa de Math.tan().
El ejemplo muestra cómo Math.atan() se comporta con diferentes valores. Note que atan(0) = 0 (0°), atan(1) = π/4 (45°) y atan(∞) = π/2 (90°). Esta función es especialmente útil para calcular ángulos a partir de pendientes.
Math.atan2(): Ángulo de Dos Puntos
Para calcular el ángulo entre dos puntos (x1, y1) y (x2, y2), usa Math.atan2(y2-y1, x2-x1) en lugar de Math.atan((y2-y1)/(x2-x1)). Math.atan2() retorna el ángulo correcto en el cuadrante adecuado (-π a π), evitando ambigüedades que pueden ocurrir con Math.atan() simple.
Aplicaciones Prácticas
Las funciones trigonométricas tienen numerosas aplicaciones prácticas en desarrollo web. Desde animaciones y gráficos hasta procesamiento de señales y física simulada, estas funciones son fundamentales para modelar fenómenos periódicos y movimiento en espacios multidimensionales.
Animaciones y Movimiento Circular
Las funciones trigonométricas son esenciales para crear animaciones suaves y movimiento circular. Combinando sin() y cos(), puedes crear movimiento circular, oscilaciones y efectos visuales complejos con código conciso y eficiente.
El ejemplo muestra cómo crear movimiento circular y oscilaciones usando funciones trigonométricas. Estas técnicas son fundamentales en animaciones web, juegos y visualizaciones de datos.
Transformaciones de Coordenadas
Las funciones trigonométricas permiten trabajar con diferentes sistemas de coordenadas. Puedes convertir entre coordenadas polares (r, θ) y cartesianas (x, y), y también rotar y transformar puntos en el espacio bidimensional.
Estos ejemplos demuestran cómo usar funciones trigonométricas para transformaciones de coordenadas. La conversión entre polares y cartesianas es fundamental en gráficos y navegación, mientras que la rotación de puntos es esencial en animaciones y transformaciones geométricas.
Resumen: Funciones Trigonométricas en JavaScript
Conceptos principales:
- •Las funciones trigonométricas usan radianes, no grados
- •Math.sin(), Math.cos() y Math.tan() calculan seno, coseno y tangente
- •Las funciones inversas son: Math.asin(), Math.acos() y Math.atan()
- •Para convertir grados a radianes: radianes = grados × Math.PI / 180
- •Las funciones son periódicas: sin y cos con período 2π, tan con período π
Mejores prácticas:
- •Siempre convierte de grados a radianes antes de usar funciones trigonométricas
- •Usa Math.atan2() para calcular el ángulo correcto entre dos puntos
- •Maneja las asíntotas de Math.tan() en π/2 + kπ
- •Combina sin() y cos() para movimiento circular y oscilaciones
- •Usa funciones inversas para convertir de coordenadas cartesianas a polares