Unidad 4
Introducción
En las unidades anteriores has explorado el movimiento con el marco motion 101 manipulando la posición de los elementos gráficos de la simulación. En esta unidad explorarás el movimiento angular u oscilatorio.
¿Qué aprenderás en esta unidad?
En esta fase te mostraré algunos referentes que aplican los conceptos que investigarás y aplicarás en esta unidad.
Actividad 01
Te presente a Memo Akten
Enunciado: en esta actividad te presentaré a Memo Akten, un artista y programador que ha explorado las posibilidades de la inteligencia artificial en la creación de arte. Te voy a presentar una obra de Memo bajo el título sombrilla de Simple Harmonic Motion.
Entrega: escribe un párrafo en el que describas tu impresión sobre la obra de Memo Akten. ¿Qué te pareció? ¿Qué te llamó la atención? ¿Qué te gustó? ¿Qué no te gustó? ¿Qué te gustaría saber más?
Solo para los curiosos: dale una mirada a la obra Superradiance. Te dejo por aquí un video reciente: SUPERRADIANCE. Chapters 1-2. Short (Performance) version. By Memo Akten & Katie Peyton Hofstadter. Youtube.
📝 Actividad pendiente por iniciar
El archivo student.md está vacío
Investigación
Ahora vas a investigar algunos conceptos fundamentales que te servirán para diseñar tu aplicación en la fase que sigue.
Actividad 02
Conceptos fundamentales
Enunciado: analiza las siguientes simulaciones y responde las preguntas.
Te voy a proponer un par de simulaciones para que analices.
Primero mira esta simulación para el manejo de ángulos.
- ¿Qué está pasando en esta simulación? ¿Cuál es la interacción?
- Nota que en cada frame se está trasladando el origen del sistema de coordenadas al centro de la pantalla. ¿Por qué crees que se hace esto?
- Cuál es la relación entre el sistema de coordenadas y la función
rotate()
.
Nota esta parte del código:
line(-50, 0, 50, 0); stroke(0); strokeWeight(2); fill(127); circle(50, 0, 16); circle(-50, 0, 16);
Observa que al dibujar los elementos gráficos parece que se está dibujando en la posición (0, 0)
del sistema de coordenadas. ¿Por qué crees que se hace esto? y ¿Por qué aunque en cada frame se hace lo mismo, los elementos gráficos rotan?
Ahora analiza una simulación que muestra cómo puedes hacer para que los elementos gráficos de la simulación apunten en la dirección del movimiento.
- Identifica el marco motion 101. ¿Qué es lo que se está haciendo en este marco?
Observa detenidamente este fragmento de código de la simulación:
display() { let angle = this.velocity.heading();
stroke(0); strokeWeight(2); fill(127); push(); rectMode(CENTER); translate(this.position.x, this.position.y); rotate(angle); rect(0, 0, 30, 10);
pop(); }
- ¿Qué hace la función
heading()
? - ¿Qué hace la función
push()
ypop()
? Realiza algunos experimentos para entender su funcionamiento. - ¿Qué hace rectMode(CENTER)? Realiza algunos experimentos para entender su funcionamiento.
- ¿Cuál es la relación entre el ángulo de rotación y el vector de velocidad? Trata de dibujar en un papel el vector de velocidad y cómo se relaciona con el ángulo de rotación y la operación de traslación y rotación.
Entrega: reporta la respuesta a las preguntas anteriores.
📝 Actividad pendiente por iniciar
El archivo student.md está vacío
Actividad 03
Practica un poco
Enunciado: ahora es momento de practicar los conceptos anterior. Crea una simulación de un vehículo que puedas conducir por la pantalla utilizando las teclas de flecha: la flecha izquierda acelera el vehículo hacia la izquierda, y la flecha derecha acelera hacia la derecha. El vehículo tendrá forma triangular y debe apuntar en la dirección en la que se está moviendo actualmente.
Entrega:
- Enlace a la simulación en el editor de p5.js.
- Código de la simulación.
- Captura de pantalla de la simulación.
📝 Actividad pendiente por iniciar
El archivo student.md está vacío
Actividad 04
Relación con el marco motion 101
Enunciado: es momento de retomar lo que has aprendido en las unidades previas e integrarlo con los nuevos conceptos de esta unidad. Observa detenidamente la siguiente simulación: Motion 101 con fuerzas
- Identifica motion 101. ¿Qué modificación hay que hacer al motion 101 cuando se quiere agregar fuerzas acumulativas? Trata de recordar por qué es necesario hacer esta modificación.
- Identifica dónde está el Attractor en la simulación. Cambia el color de este.
- Observa que el Attractor tiene dos atributos this.dragging y this.rollover. Estos atributos no se modifican en el código, pero permitirían mover el attractor con el mouse y cambiar su color cuando el mouse está sobre él. ¿Cómo podrías modificar el código para que esto funcione? considera las funciones que ofrece p5.js para interactuar con el mouse.
Entrega: reporta la respuesta a las preguntas anteriores y los resultados de las modificaciones realizadas.
📝 Actividad pendiente por iniciar
El archivo student.md está vacío
Actividad 05
Coordenadas polares
Enunciado: explora otro sistema de coordenadas útil cuando se trabaja con ángulos. Se trata de las coordenadas polares.
Considera esta simulación de coordenadas polares:
- Observa de nuevo esta parte del código ¿Cuál es la relación entre r y theta con las posiciones x y y? Puedes repasar entonces la definición de coordenadas polares y cómo se convierten a coordenadas cartesianas.
function draw() { background(255); // Translate the origin point to the center of the screen translate(width / 2, height / 2); // Convert polar to cartesian let x = r * cos(theta); let y = r * sin(theta); fill(127); stroke(0); strokeWeight(2); line(0, 0, x, y); circle(x, y, 48); theta += 0.02;}
Modifica la función draw()
:
function draw() { background(255); // Translate the origin point to the center of the screen translate(width / 2, height / 2); let v = p5.Vector.fromAngle(theta); fill(127); stroke(0); strokeWeight(2); line(0, 0, x, y); circle(v.x, v.y, 48); theta += 0.02;}
¿Qué ocurre? ¿Por qué?
Ahora realiza esta modificación:
function draw() { background(255); // Translate the origin point to the center of the screen translate(width / 2, height / 2); let v = p5.Vector.fromAngle(theta,r); fill(127); stroke(0); strokeWeight(2); line(0, 0, v.x, v.y); circle(v.x, v.y, 48); theta += 0.02;}
- ¿Qué ocurre aquí? ¿Por qué?
Entrega: la respuesta a las preguntas anteriores.
📝 Actividad pendiente por iniciar
El archivo student.md está vacío
Actividad 06
Funciones sinusoides
Enunciado: repasa la función sinusoide aquí.
- Recuerda estos conceptos: velocidad angular, frecuencia, periodo, amplitud y fase.
- Realiza una simulación en la que puedas modificar estos parámetros y observar cómo se comporta la función sinusoide.
Por ejemplo, te doy ideas, si juego solo con la fase, mira este ejemplo.
Entrega:
- Enlace a la simulación en el editor de p5.js.
- Código de la simulación.
- Captura de pantalla de la simulación.
📝 Actividad pendiente por iniciar
El archivo student.md está vacío
Actividad 07
Repasa conceptos de las unidades anteriores
Enunciado: aplica conceptos de la unidades anteriores tomando como base esta simulación. La idea es que la modifiques incluyendo un concepto de la unidad 1 (aleatoriedad) y la unidad 3 (fuerzas).
Entrega:
- Enlace a la simulación en el editor de p5.js.
- Código de la simulación.
- Captura de pantalla de la simulación.
📝 Actividad pendiente por iniciar
El archivo student.md está vacío
Actividad 08
Ondas
Enunciado: vas a observar este código que simula una onda.
El reto es que hagas que se esta onda se mueva como una ola.
Entrega:
- Enlace a la simulación en el editor de p5.js.
- Código de la simulación.
- Captura de pantalla de la simulación.
📝 Actividad pendiente por iniciar
El archivo student.md está vacío
Actividad 09
Resortes
Enunciado: modifica esta simulación para crear un sistema de dos resortes conectados en serie.
Entrega:
- Enlace a la simulación en el editor de p5.js.
- Código de la simulación.
- Captura de pantalla de la simulación.
📝 Actividad pendiente por iniciar
El archivo student.md está vacío
Actividad 10
Péndulos
Enunciado: modifica esta simulación para crear un sistema de dos péndulos conectados en serie.
Entrega:
- Enlace a la simulación en el editor de p5.js.
- Código de la simulación.
- Captura de pantalla de la simulación.
📝 Actividad pendiente por iniciar
El archivo student.md está vacío
Aplicación
Es momento de aplicar los conceptos aprendidos en la unidad.
Actividad 11
Obra de arte generativa algorítmica interactiva en tiempo real
Enunciado: diseña e implementa una obra de arte generativa algorítmica interactiva en tiempo real en p5.js que cumpla con los siguientes requisitos:
- Selecciona uno de los conceptos con los que experimentaste en la fase de investigación y propón la obra alrededor de este.
- La obra debe ser interactiva en tiempo real. Puedes usar teclado, mouse, música, el micrófono, video, sensor o cualquier otro dispositivo de entrada.
- Documenta el proceso de creación, incluyendo la idea inicial, bocetos, experimentación con el código y el resultado final.
Entrega:
- Enlace a tu obra en el editor de p5.js.
- El código.
- Una captura de pantalla con una imagen de tu obra.
📝 Actividad pendiente por iniciar
El archivo student.md está vacío
Consolidación y metacognición
He venido escuchando que esta es una fase de relleno 😭. Nada
más lejos de la verdad, de verdad. En esta fase del proceso de aprendizaje
es donde miras hacia atrás
y consolidas lo que aprendiste. Adicionalmente,
reflexionas sobre tu proceso de aprendizaje y las posibilidades de aplicar lo
aprendido en otros contextos.
Actividad 12
Consolidación
Enunciado: analiza tu obra de arte generativa respondiendo las siguientes preguntas:
- ¿Qué concepto de oscilación utilizaste como base para tu obra? Describe cómo lo implementaste.
- ¿Cómo funciona la interacción en tu obra? Explica cómo el usuario puede modificar la obra en tiempo real.
- ¿Qué desafíos encontraste durante el proceso de creación? ¿Cómo los superaste?
- ¿Qué aprendiste sobre las oscilaciones y su aplicación en el arte generativo?
Entrega: responde a las preguntas.
📝 Actividad pendiente por iniciar
El archivo student.md está vacío
Actividad 13
Metacognición
Enunciado: reflexiona sobre tu propio proceso de aprendizaje en esta unidad.
- ¿Qué estrategias de aprendizaje utilizaste?
- ¿Qué te funcionó mejor para comprender los conceptos?
- ¿Qué podrías mejorar?
- ¿Cómo te sentiste durante el proceso de aprendizaje?
- ¿Qué te motivó?
- ¿Qué te frustró?
Entrega: respuesta a las preguntas.
📝 Actividad pendiente por iniciar
El archivo student.md está vacío