En las secciones de vectores y fuerzas, trabajamos cuidadosamente una estructura orientada a objetos para hacer que algo se moviera en la pantalla, usando el concepto de un vector para representar la posición, velocidad y aceleración accionadas por las fuerzas en el entorno. Podríamos pasarnos directamente de aquí a temas tales como sistemas de partículas, fuerzas de dirección, comportamientos de grupo, etc. Sin embargo, si hiciéramos eso, nos saltaríamos un área importante de las matemáticas que vamos a necesitar: trigonometría, o las matemáticas de triángulos, específicamente triángulos rectángulos.
La trigonometría nos va a dar muchas herramientas. Llegaremos a pensar en ángulos y en velocidad y aceleración angular. La trigonometría nos enseñará acerca de las funciones seno y coseno, que cuando se usan apropiadamente pueden producir un patrón suave de onda que sube y baja. Va a permitirnos calcular fuerzas más complicadas en un entorno que involucra ángulos, tales como un péndulo que oscila o una caja deslizándose por una pendiente.
Así que esta sección está un poco mezclada. Empezaremos con los conceptos básicos de ángulos en ProcessingJS y cubriremos muchos temas de trigonometría, atándolo todo con fuerzas al final. Y tomando este descanso ahora, también aplanaremos el camino para ejemplos más avanzados que requieren trigonometría más adelante en este curso.

Ángulos

Bien. Antes de que podamos hacer cualquiera de estas cosas, tenemos que asegurarnos de que entendemos lo que significa ser un ángulo en ProcessingJS. Si tienes experiencia con ProcessingJS, indudablemente te habrás topado con este asunto al usar la función rotate() para rotar y girar objetos.
El primer asunto es cubrir radianes y grados. Probablemente estás más familiarizado con el concepto de un ángulo en grados. Una rotación completa va de 0 a 360 grados. 90 grados (un ángulo recto) es 1/4 de 360, y se muestra a continuación como dos líneas perpendiculares.
Es bastante intuitivo para nosotros pensar en los ángulos en términos de grados. Por ejemplo, el cuadrado en el siguiente diagrama está rotado 45 grados alrededor de su centro.
Pero algunas veces puede ser mejor especificar nuestros ángulos en radianes. Un radián es una unidad de medida para los ángulos, definido por el cociente de la longitud del arco de un círculo entre el radio del círculo. Un radián es el ángulo para el cual ese cociente es igual a uno (ver el primer diagrama). 180 grados = PI radianes, 360 grados = 2*PI radianes, 90 grados = PI/2 radianes, etc.
La fórmula para convertir de grados a radianes es:
r, a, d, i, a, n, e, s, equals, 2, times, P, I, times, left parenthesis, g, r, a, d, o, s, slash, 360, right parenthesis
Afortunadamente, ProcessingJS hace fácil decidir qué unidad queremos usar, radianes o grados, cuando usamos las funciones que tienen que ver con ángulos, como sin() y atan(). En el entorno de Khan Academy, el valor predeterminado es grados, pero puede cambiarse a radianes así:
angleMode = "radians";
Además, ProcessingJS también proporciona funciones para hacer más fácil cambiar entre las dos unidades. La función radians() automáticamente convertirá los valores de grados a radianes, y las constantes PI y TWO_PI proporcionan un acceso conveniente a estos números comúnmente utilizados (equivalentes a 180 y 360 grados, respectivamente). El siguiente código, por ejemplo, rotará las figuras 60 grados.
angleMode = "radians";
var angle = radians(60);
rotate(angle);
Si no estás familiarizado con cómo se implementa la rotación en ProcessingJS, puedes probar esta lección: Processing - Transformación 2D, pero ten en cuenta que hay algunas diferencias entre Processing y ProcessingJS.
¿Qué es PI?
La constante matemática pi (o π) es un número real definido como el cociente de la circunferencia del círculo (la distancia alrededor del perímetro) entre su diámetro (una recta que pasa por el centro del círculo y cuyos puntos extremos están sobre perímetro). Es aproximadamente igual a 3.14159 y, en ProcessingJS, puede accederse con la variable incorporada PI.

Este curso de "Simulaciones Naturales" es un derivado de "La Naturaleza del Código" por Daniel Shiffman, usado bajo una Licencia Creative Commons Reconocimiento-NoComercial 3.0 Unported.