125 votos

¿Por qué es $\cos (90)=-0.4$ en WebGL?

Soy un artista gráfico que está completamente fuera de mi alcance en este sitio.

Sin embargo, estoy experimentando con WebGL (software 3D para navegadores de internet) e intentando animar una pelota que rebota.

Al parecer, podemos usar la trigonometría para crear curvas suaves y agradables.

Desafortunadamente, simplemente no puedo ver por qué.

Puedo aceptar este diagrama:

triángulos y círculo

Sin embargo, realizar algunos cálculos simplemente no tiene sentido para mí:

Establezcamos $\alpha$ en 45 (alrededor de donde parece estar en el diagrama) y encontremos el valor del coseno, lo que nos da la línea verde. $$\cos(45) = 0.5$$

Bastante bien. $\cos(\alpha)$ / la línea verde es de $0.5$ unidades.

Pero ahora es donde todo se desmorona. Habría pensado que si establecemos $\alpha$ en $90$, $\cos$ se convertiría en $0$. ¿Ves por qué pienso esto? Mira el diagrama, ¿no es razonable pensar así? Similarmente, $\cos(0)$ habría dicho que debería ser igual a $1$ (el doble de $\cos(45)$)

Aunque $\cos(0)$ es igual a $1$, esto no cuadra: $$ cos(90) = -0.4$$

Simplemente no entiendo ese $0.4$. ¿Podría alguien explicarlo? Eso simplemente no tiene sentido para mí. Nada.

Estoy usando la calculadora de Google y quiero enfatizar que no he tocado las matemáticas en unos $6$ años (¡desde que salí de la escuela!) así que por favor, muchas ejemplos y palabras para explicarlo!

43 votos

$\cos 45° = \frac{1}{\sqrt{2}} \approx 0.707\dotsc$. Pero $\cos 45 \approx 0.52532$, las funciones trigonométricas toman sus argumentos en radianes en todos los lenguajes de programación que conozco.

36 votos

Okay chicos, sé que es divertido tener preguntas que empiezan con "Soy un artista gráfico...", pero no creo que una simple pregunta de trigonometría realmente necesite seis votos positivos.

52 votos

@Jack, los votos son independientes. ¿Crees que si alguien llega y le gusta la pregunta, debería abstenerse de votar en ella solo porque muchas otras personas ya lo han hecho?

117voto

Halfgaar Puntos 2866

La función coseno toma radianes como argumento en la mayoría de los lenguajes computacionales.

De hecho, $\cos 45^{\circ} = \sqrt{0.5}$, y $\cos 90^{\circ} = 0$. Sin embargo, en matemáticas, por varias razones, no nos gusta trabajar con grados. Trabajamos con radianes, donde $2\pi\ \textrm{radianes} = 360^{\circ}$.

De hecho, $\cos 90\ \textrm{radianes} \approx -0.44807$ y $\cos 45\ \textrm{radianes} \approx 0.525$.

90 radianes serían aproximadamente 5156 grados, ¡o alrededor de 14.3 vueltas alrededor del círculo!

9 votos

Vaya, mis dedos estaban por todos lados en el teclado en este caso.

4 votos

Entonces, si "rotáramos en sentido horario" a través de todos los radianes, comenzaríamos en cos(0Pi) y terminaríamos en cos(2Pi)? ¿Lo cual, por supuesto, es lo mismo, ¿pero entiendes lo que quiero decir?

0 votos

Sí, Starkers..

41voto

Incnis Mrsi Puntos 487

Su problema está con las unidades. Como matemáticos, generalmente medimos los ángulos en radianes no en grados. La conversión es $$ x\text{ grados}=\frac{x}{180}\pi\text{ radianes} $$ La mayoría del software generalmente toma el argumento de las funciones trigonométricas como radianes. Así que $\cos(45^\circ)$ se calcula como $$ \cos(45^\circ)=\cos\left(\frac{45}{180}\pi\right)=\cos\left(\frac{\pi}{4}\right)=\frac{1}{\sqrt 2} $$ Tienes razón en que $\cos(90^\circ)=0$, pero cuando introduces $\cos(90)$ en una calculadora, la calculadora lee $90$ en radianes, no en grados. Lo que debes introducir es $$ \cos(90^\circ)=\cos\left(\frac{90}{180}\pi\right)=\cos\left(\frac{\pi}{2}\right) $$ lo cual devolverá como resultado $0$.

Como evidencia, escribe cos(90) en google (aquí google interpreta 90 en radianes, no grados). Compara escribiendo cos(90 grados) en google.

Para resumir, si quieres encontrar el valor de $\cos(x^\circ)$, escribe $$ \cos\left(\frac{x}{180}\pi\right) $$ en tu calculadora.

2 votos

Pregunta extra: Al intentar con un número aleatorio como 63.948, la calculadora de Google me dice que $\cos(63.948)$ y $\cos(63.948^\circ)$ son el mismo número (hasta ciertos efectos de redondeo) - ¿cómo es eso?

3 votos

@HagenvonEitzen ¿Para mí? Bueno $63.948^\circ\approx 1.116\operatorname{rad}\approx 63.948-20\pi\operatorname{rad}$

6 votos

@HagenvonEitzen: En realidad, hay un número infinito de tales coincidencias. Son los puntos donde cos(x)=cos(x/180)

26voto

NoAnswer Puntos 277

Su pregunta escrita podría ser: ¿Podría alguien explicar cos a un idiota por favor? No responderé a esto, ya que no estaría ayudando.

La pregunta respondida es más bien: ¿Por qué cos no se comporta como espero? Tampoco responderé a esto, ya que ya está respondido suficientemente. Y probablemente sea un duplicado...

Sin embargo, quiero responder a su pregunta prevista, al menos como anticiparía. Para esto me concentraré en esta parte de su pregunta:

Sin embargo, estoy incursionando en WebGL (software 3D para navegadores de internet) e intentando animar una pelota rebotante.

Aparentemente podemos usar trigonometría para crear curvas suaves y agradables.

Anticipo que su verdadera pregunta podría ser algo así: ¿Cómo obtengo un camino agradable para animar una pelota rebotante?

La respuesta es: No con funciones trigonométricas ya que te ayudan con movimiento circular, por ejemplo, una pelota atada a un cordel girando alrededor de un punto fijo. Deberías intentar un camino parabólico. La función y = x² es el ejemplo más fácil de una parábola. Pero probablemente querrás establecer un punto de partida, cambiarlo y estirarlo.

Entonces, en lugar de una función explícita para cada punto en el camino, podrías usar un proceso iterativo simple:

Tener una posición inicial (x,y), una velocidad inicial (m,n) y algún tipo de gravedad (g, ~10m/s² se verá natural pero eso es algo para avanzados). Para cada iteración actualizas tu posición de esta manera:

x := x + m
y := y + n

y tu velocidad:

n := n - g

Para hacer rebotar la pelota, inviertes la velocidad cuando golpea un obstáculo, por ejemplo, al rebotar desde el suelo en el nivel b:

if (y < b) then n := -n

Esto proporcionará un comportamiento bastante básico y necesitará algunos ajustes y extensiones, especialmente para movimiento natural, bordes afilados de obstáculos, altura de rebote decreciente, etc.

Nota que uso := para resolver el problema de que x = x + m requeriría que m = 0 sea correcto en un contexto matemático. El "operador" := está destinado como una redefinición para evitarle un índice de iteración o parámetro, es decir, x_i o x(i).

0 votos

La trigonometría se puede utilizar para calcular la forma de la parábola.

0 votos

Prueba si (y < b) después de calcular y pero antes de renderizarlo en y. Cuando y < b no solo recalcular n sino también y antes de renderizar. De lo contrario, la pelota se caerá a través del piso (b) antes de rebotar.

0 votos

@CandiedOrange: En math.stackexchange tienes razón. Sin embargo, en la práctica, para intervalos de tiempo suficientemente pequeños y/o velocidades bajas, casi no hay diferencia. De todos modos, querrías intervalos de tiempo pequeños para una animación suave. Sin bastante esfuerzo adicional, puedes elegir si la pelota se hunde ligeramente en el suelo o rebota antes de tocarlo. Elige tu veneno o ve más allá y introduce intervalos de tiempo variables y una detección de colisiones que los admita. Oh, si estás haciendo esto último, también puedes comenzar con la integración en el tiempo. Pero el OP tenía problemas con el coseno...

15voto

chaiwalla Puntos 1132

Hay dos unidades comunes de medición de ángulos: grados, con $360$ grados formando un círculo completo, y radianes, con $2\pi$ radianes formando un círculo completo.

Los calculadores generalmente pueden cambiarse de un "modo angular" a otro. Tu cálculo de $\cos(90)$ proviene de usar un calculador en modo radianes, mientras que tu ángulo está en grados. (Estás perfectamente correcto de que el coseno de $90$ grados es $0$.)

12voto

Tudisco Puntos 101

Has cometido múltiples errores en tu pregunta.

  1. Vamos a establecer a 45 (aproximadamente donde parece estar en el diagrama) y encontrar el valor del coseno, lo que nos dará la línea verde.

    cos(45) = 0.5

    Bastante bien. cos() / la línea verde es de 0.5 unidades.

    La línea verde no es de 0.5 unidades.

    La línea verde, la línea roja y los ejes $x$ e $y$ forman un cuadrado cuya diagonal es de 1 unidad. Por el Teorema de Pitágoras,

    $$ \begin{array}{} (\cos \alpha)^2 &+\quad (\sin \alpha)^2 &= 1^2 \\ (\cos \alpha)^2 &+\quad (\cos \alpha)^2 &= 1 \tag{longitud verde = longitud roja}\\ \end{array}\\ \cos \alpha = \cos 45^\circ = \frac{1}{\sqrt 2} \approx 0.707 $$

    Por lo tanto, la longitud de la línea verde es aproximadamente 0.707.

  2. De manera similar, cos(0) yo habría dicho que debería ser igual a 1 (el doble que cos(45) )

    Aunque es cierto que $\cos 0 = 1$, no hay justificación para "el doble que cos(45)".

  3. cos(90) = -0.4

    No entiendo eso. ¿0.4? ¿Podría alguien explicarlo? Eso simplemente no tiene sentido para mí. Nada.

    Estoy utilizando la calculadora de Google

    La Calculadora de Google utiliza radianes como la unidad predeterminada para los ángulos. La conversión entre unidades es: $360^\circ = 2\pi\ \textrm{radianes}$. Por lo tanto, la Calculadora de Google interpretó tu solicitud como

    $$ \cos 90 = \cos \left(90 \cdot \frac{360^\circ}{2\pi}\right) \approx \cos 5156.62^\circ $$

    Para obtener el resultado que deseas, debes cambiar a modo Grado antes de escribir c90=

    Modo de Grado en la Calculadora de Google

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X