Saltearse al contenido

Unidad 5

Introducción 📜

En esta unidad vas a explorar los sistemas de partículas. Los sistemas de partículas son conjuntos de partículas que interactúan entre sí y con su entorno. Estos sistemas son fundamentales en el mundo del arte y diseño generativo, ya que permiten crear composiciones complejas y dinámicas a partir de reglas simples.

¿Qué aprenderás en esta unidad? 💡

En esta unidad vas a experimentar con aplicaciones interactivas que tendrán las siguientes características:

  • Emitirán partículas que se moverán en el espacio.
  • Las partículas estarán sujetas a fuerzas que las harán cambiar de dirección y velocidad.

Actividad 01

¿En dónde se usan sistemas de partículas?

🎯 Enunciado: te voy a pedir que le des una mirada a este artículo publicado en Medium por la artista Amelia Winger-Bearskin. En el artículo vas a encontrar ejemplos de sistemas de partículas en el arte y la inteligencia artificial. Dale una mirada a los artistas, ejemplos y proyectos que aparecen en el artículo. Tengo que decirte que uno de los artistas que aparece referenciado es Refik Anadol, uno de mis artistas favoritos.

📤 Entrega: selecciona dos proyectos que mencionen en el artículo que te llamen la atención y que te gustaría explorar más. Escribe un breve resumen de cada uno de ellos y comenta por qué te interesan y cómo crees que se pueden conectar con tu perfil profesional o con algún interés personal que tengas.

🚀 Tu solución:

1. Trabajos de Refik Anadol

Resumen: Refik Anadol utiliza sistemas de partículas para crear obras inmersivas en 3D que mezclan arte y tecnología. Sus piezas incluyen partículas que dibujan ciudades, representan océanos y generan texturas abstractas en movimiento. Estas composiciones están impulsadas por motores avanzados de simulación física, logrando un nivel de fluidez y detalle que conecta directamente con la estética digital.

Por qué me interesa: Como alguien con un énfasis en animación y modelado 3D, me inspira cómo Refik Anadol utiliza partículas para contar historias visuales en entornos digitales. Su enfoque en la creación de espacios inmersivos y abstractos podría traducirse a proyectos donde pueda combinar mis habilidades en modelado 3D con simulaciones dinámicas para narrativas visuales que impacten al espectador. Además, la manera en que integra datos en sus obras me da ideas para conectar la animación con conceptos innovadores y modernos.

Profe ya entiedno por que es tu artista favorita, wow. Que man tan teso, to es espectacular.

2. “Mushroom Cloud” de Nancy Baker Cahill

Resumen: Esta obra es una exploración visual que utiliza sistemas de partículas para simular esporas de hongos. Estas esporas forman una red regenerativa en el cielo, basada en el funcionamiento del micelio en la naturaleza. El proyecto muestra cómo los sistemas de partículas pueden simular fenómenos naturales complejos con un propósito narrativo y estético.

Por qué me interesa: La manera en que Nancy Baker Cahill conecta sistemas de partículas con elementos naturales me inspira como animadora 3D. Este proyecto muestra cómo las partículas pueden dar vida a fenómenos orgánicos en simulaciones, algo que podría aplicar para crear entornos vivos y dinámicos en mis propios proyectos. Además, trabajar con conceptos de regeneración y naturaleza podría ser una forma interesante de combinar lo orgánico con lo digital en animaciones narrativas o escenarios que tengan un toque simbólico y visualmente impactante.

Investigación 🔎

En esta fase, repasarás los conceptos de herencia y polimorfismo que aplicarás para crear sistemas de partículas que se comporten y se vean de manera diferente. Adicionalmente, aplicarás fuerzas a las partículas para que se muevan e interactúan con el entorno.

Actividad 02

Revisa y repasa algunos conceptos

🎯 Enunciado: dale una mirada al capítulo sobre sistemas de partículas del texto guía del curso, pero quiero que te concentres en los siguientes conceptos:

✅ 1. Revisa detalladamente el ejemplo 4.2: an Array of Particles.

✅ 2. Analiza el ejemplo 4.4: a System of Systems.

✅ 3. Analiza el ejemplo 4.5: a Particle System with Inheritance and Polymorphism.

✅ 4. Analiza el ejemplo 4.6: a Particle System with Forces.

✅ 5. Analiza el ejemplo 4.7: a Particle System with a Repeller.

🧐🧪✍️ En tu bitácora responde a esta pregunta para cada una de las simulaciones: ¿Cómo se está gestionando la creación y la desaparción de las partículas y cómo se gestiona la memoria en cada una de las simulaciones?

📤 Entrega:

  • Vas a modificar cada una de las simulaciones anteriores incluyen en cada una, al menos un concepto de las unidades anteriores, pero no repitas concepto, la idea es que repases al menos uno de cada unidad.
  • Vas a gestionar la creación y la desaparición de las partículas y la memoria. Explica cómo lo hiciste.
  • Explica qué concepto aplicaste, cómo lo aplicaste y por qué.
  • Incluye un enlace a tu código en el editor de p5.js.
  • Incluye el código fuente de cada una de las simulaciones.
  • Captura de pantallas de cada una de las simulaciones con las imágenes que más te gusten como resultado de la ejecución de cada una de las simulaciones.

🚀 Tu solución:

Sistema de particulas ❇️

Un sistema de partículas es una colección de muchas, muchas partículas diminutas que juntas representan un objeto borroso. Durante un período de tiempo, las partículas se generan en un sistema, se mueven y cambian desde dentro del sistema, y mueren desde el sistema.

La matriz JavaScript, una estructura de datos que almacena una lista arbitrariamente larga de valores. En JavaScript, un array es en realidad un objeto creado a partir de la clase, por lo que viene con muchos métodos incorporados. Estos métodos proporcionan toda la funcionalidad que necesito para mantener una lista de objetos, incluida la adición de partículas, la eliminación de partículas o la manipulación de las mismas.

Example 4.2: An Array of Particles

Creación y la desaparición de las partículas

  • Creación: Cada fotograma (draw()), se crea una nueva partícula y se añade al array particles. La posición inicial de la partícula está en el centro superior del lienzo (width / 2, 20).
  • Desaparición: Se revisa el array de partículas desde el final hacia el principio con un bucle inverso. Si una partícula cumple la condición isDead() (es decir, su lifespan es menor que 0), se elimina del array usando - -splice(). Esto asegura que el array no crezca indefinidamente y que se libere memoria al eliminar partículas “muertas”.

Gestión de la memoria Al eliminar partículas “muertas” con splice(), se evita que el array acumule objetos innecesarios. Esto es fundamental para que la simulación sea eficiente y no ralentice el sistema por un exceso de partículas en memoria.

Concepto aplicado:

Se implementó el uso de aceleración hacia un punto específico (el mouse) como fuerza adicional. Este concepto proviene de la física básica: las partículas sienten una atracción hacia un objetivo, similar a la gravedad en un campo gravitatorio.

  • Justificación: La aceleración hacia un punto permite agregar interactividad a la simulación, haciendo que las partículas respondan al movimiento del mouse.

Simulación 1

Image

Example 4.4: A System of Systems

Creación de partículas: Cada emisor (clase Emitter) tiene su propio sistema de partículas (array particles), y se generan nuevas partículas con el método addParticle(). Este método se llama en cada iteración del draw().

Desaparición de partículas: Cada partícula tiene una propiedad lifespan que disminuye en cada ciclo hasta llegar a 0. Una vez que lifespan es menor que 0, el método isDead() devuelve true. Luego, en el método run() del emisor, las partículas muertas se eliminan del array particles mediante splice().

Gestión de memoria:

  • La eliminación de partículas muertas reduce la carga de memoria, evitando que el sistema mantenga objetos innecesarios.
  • El array emitters se actualiza dinámicamente al agregar nuevos emisores, pero no elimina ninguno durante la simulación.

Conceptos aplicados 🧷

  1. Velocidad inicial suavizada con lerp: Uso de interpolación lineal (lerp) para controlar la generación de velocidades iniciales.
  • Cómo se aplicó: Se genera una velocidad inicial para las partículas que varía dentro de un rango, pero de manera más controlada y progresiva que si se usara simplemente random(-1, 1).
  • Por qué se usó: Esto permite que las partículas tengan movimientos iniciales más suaves, lo que crea una estética más fluida y natural.
  1. Fuerza de atracción dinámica: Aplicación de fuerzas mediante vectores y oscilación dinámica.
  • Cómo se aplicó: Se crea un punto de atracción (attractor) que oscila horizontalmente con una función seno. Luego, se calcula una fuerza de atracción entre el punto y cada partícula usando la diferencia de vectores (p5.Vector.sub).
  • Por qué se usó: Este movimiento dinámico añade complejidad al sistema, haciendo que las partículas sigan un movimiento fluido e impredecible. Esto imita sistemas naturales como partículas atraídas hacia un imán.
  1. Interpolación de colores (lerpColor): Transición suave entre dos colores basada en la vida de las partículas.
  • Cómo se aplicó: Se generan dos colores base (c1 y c2) y se interpolan linealmente usando lerpColor, dependiendo del porcentaje de vida restante (this.lifespan / 255).
  • Por qué se usó: Esto crea un efecto visual más atractivo y dinámico, donde las partículas cambian de color a medida que se desvanecen.
  1. Acumulación de fuerzas: Uso de aceleración acumulada para definir el movimiento de las partículas, según el modelo de Motion 101.
  • Cómo se aplicó: Se suman todas las fuerzas a la aceleración, y esta a su vez modifica la velocidad y posición. Cada paso reinicia la aceleración con this.acceleration.mult(0) para evitar acumulaciones no deseadas.
  • Por qué se usó: Este modelo garantiza que las partículas tengan movimientos realistas que respeten las leyes físicas básicas.
  1. Movimiento oscilatorio (función seno): Uso de funciones trigonométricas para crear oscilaciones en el movimiento.
  • Cómo se aplicó:Se usa la función sin con un desplazamiento (timeOffset) para mover el punto de atracción de manera ondulatoria en el eje X.
  • Por qué se usó: Este comportamiento ondulante añade un patrón visual interesante y dinámico, evitando movimientos estáticos y predecibles.

Simulación 2

Image

Example 4.5: Un sistema de partículas con herencia y polimorfismo

Creación: En el método addParticle() de la clase Emitter, se genera aleatoriamente un nuevo objeto de la clase Particle o Confetti. Estos objetos son agregados al array this.particles. Esto asegura que constantemente se creen partículas mientras se ejecute el sistema.

Actualización: En el método run(), cada partícula del array se actualiza llamando a sus métodos update() y show(). Las partículas aplican fuerzas, cambian su posición y reducen su valor lifespan (duración de vida).

Desaparición y limpieza: Si la vida útil de una partícula (lifespan) llega a 0, se considera “muerta”. Esto se verifica en el método isDead() de cada partícula. En el método run() del emisor, las partículas muertas son eliminadas del array this.particles usando splice(). Esto garantiza que la memoria no se sature con objetos inactivos.

Conceptos aplicados 🧷

  1. Ruido Perlin: Se usó para generar movimientos suaves y orgánicos en las partículas, evitando cambios bruscos. Cada partícula tiene un desplazamiento único que afecta su trayectoria.
  • Cómo se aplicó: direcciones de movimiento suavizadas usando un ángulo derivado del ruido. Esto dio fluidez a las trayectorias.
  • Por qué se usó:Para suavidad y naturalidad en el movimiento.(Aunque para mi esta super brusco)
  1. Lévy Flight: Introdujimos pasos cortos frecuentes y ocasionales pasos largos, simulando comportamientos naturales impredecibles.
  • Cómo se aplicó: Calculamos tamaños de paso variables con una distribución inversa, limitándolos para evitar saltos extremos.
  • Por qué se usó: Para variedad visual e impredecibilidad controlada.
  1. Gravedad: Se añadió una fuerza constante hacia abajo para anclar las partículas al entorno.
  • Cómo se aplicó: Añadimos una fuerza constante hacia abajo para un comportamiento más realista.
  • Por qué se usó: Para anclar las partículas al “mundo físico” y evitar movimientos incoherentes.

Simulación 3

Image

Example 4.6: Un sistema de partículas con fuerzas

Creación:

  • Las partículas son creadas dentro del método addParticle() de la clase Emitter.
  • Cada vez que addParticle() es llamado en el draw(), una nueva instancia de la clase Particle se genera y se agrega al arreglo this.particles.

Desaparición y limpieza:

  • Cada partícula tiene una propiedad lifespan, que disminuye con cada frame (this.lifespan -= 2.0 en el método update() de la clase Particle).
  • Cuando el valor de lifespan llega a cero (this.lifespan < 0.0), el método isDead() retorna true.
  • En el método run() del emisor, se verifica si alguna partícula está “muerta”. Si lo está, se elimina del arreglo this.particles usando el método splice().

Conceptos aplicados 🧷

  1. Caminatas aleatorias: Las partículas realizan movimientos impredecibles utilizando el ruido Perlin.
  • Cómo se aplicó: Se usó la función noise() para generar ángulos de movimiento suaves y pseudoaleatorios.
  • Por qué se usó: Para dar un movimiento orgánico y fluido a las partículas, aportando estética y naturalidad.
  1. Rebotes en los bordes: Las partículas rebotan al llegar a los límites del canvas, invirtiendo su dirección.
  • Cómo se aplicó: Al detectar que una partícula alcanza los bordes, la dirección de su velocidad en ese eje (x o y) se invierte multiplicándola por -1.
  • Por qué se usó: Para mantener las partículas dentro del canvas, haciendo que la interacción con los bordes sea dinámica y visualmente atractiva.

Simulación 4

Image

Exmaple 4.7: Un sistema de partículas con un repelente

Creación:

  • En el método draw(), el sistema de partículas (Emitter) invoca addParticle().
  • Este método agrega una nueva instancia de la clase Particle a la lista de partículas (this.particles).
  • Cada nueva partícula se posiciona en el origen (this.origin) del Emitter, definido al momento de su creación.

Desaparición y limpieza:

  • En cada frame, las partículas se actualizan mediante particle.update():
  • Se reduce su lifespan en 2 unidades por frame.
  • Si lifespan cae por debajo de 0, la partícula es considerada “muerta”.
  • En el método run() del Emitter, se revisa cada partícula con particle.isDead():
    • Si devuelve true, esa partícula se elimina de la lista con this.particles.splice(i, 1).

Gestión de memoria:

  • Las partículas se almacenan en el array this.particles del Emitter.
  • Cada vez que una partícula “muere”, se elimina del array con splice(), liberando esa referencia de memoria.
  • Esto garantiza que no se acumulen partículas innecesarias en el sistema, optimizando el uso de memoria.

Conceptos aplicados 🧷

  1. Distribución Normal: Genera partículas con posiciones aleatorias basadas en una campana de Gauss.
  • Cómo se usó: Se aplicó con randomGaussian() para posicionar partículas cerca del emisor.
  • Por qué: Simula patrones naturales más realistas.
  1. Fricción: Una fuerza que reduce la velocidad de las partículas.
  • Cómo se usó: Se calculó un vector opuesto a la dirección del movimiento con un coeficiente de fricción.
  • Por qué: Evita que las partículas se muevan infinitamente rápido, haciéndolo más realista.

Simulación 5

Image

Aplicación 🛠

En esta fase, aplicarás los conceptos que aprendiste en las fases anteriores para resolver un problema de diseño en el que puedas aplicar los conceptos de herencia y polimorfismo con partículas.

Actividad 03

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:

  • Debes utilizar los conceptos de herencia y polimorfismo que revisaste en la fase de investigación.
  • Debes utilizar al menos un concepto de cada una de las unidades anteriores: 4 conceptos.
  • Debes definir cómo vas a gestionar el tiempo de vida de las partículas y la memoria.
  • 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.
  • Qué concepto de cada unidad aplicaste, cómo lo aplicaste y por qué.
  • Una captura de pantalla con una imagen de tu obra.

🚀 Tu solución:

Mandala interactivo

Conceptos Aplicados ⛸️

  1. Unidad 1: Aleatoriedad.
  • La posición inicial de las partículas (this.pos) se asigna usando random(width) y random(height), lo cual introduce un elemento aleatorio en su colocación.

this.pos = createVector(random(width), random(height));

  1. Unidad 2: Vectores y Motion 101.
  • Vectores: Las partículas utilizan vectores (createVector) para manejar posición, velocidad, aceleración y dirección. Por ejemplo:
this.pos = createVector(random(width), random(height));
this.target = createVector(x, y);
this.vel = p5.Vector.random2D();
this.acc = createVector();
  • Las fuerzas aplicadas (como el efecto de agua) también se calculan con vectores, lo que da vida a las partículas de manera dinámica.
  • Motion 101: Se sigue el marco de Motion 101 al trabajar con las tres fases del movimiento:
    • Acumulación de fuerzas (en applyWaterForce() y la atracción hacia el target).
    • Actualización de la aceleración, velocidad y posición.
    • Atenuación de la velocidad con this.vel.mult(0.95) para simular resistencia al movimiento.
  1. Unidad 3: Fuerzas acumulativas, leyes de Newton, resistencia.
  • Fuerzas acumulativas: La aceleración de las partículas (this.acc) acumula las fuerzas que se aplican, como la atracción al target y el efecto repelente del mouse
this.acc.add(force);
this.acc.add(repelForce);
  • Leyes de Newton:
    • Las partículas siguen las leyes de Newton en su movimiento:
    • La fuerza neta (aceleración) cambia la velocidad.
    • La velocidad cambia la posición:
this.vel.add(this.acc);
this.pos.add(this.vel);
Fricción/resistencia:
  • La resistencia al movimiento se simula reduciendo la velocidad en cada frame: this.vel.mult(0.95);
  1. Unidad 5: Sistema de partículas.

Creación y actualización: Las partículas se crean a partir de una imagen (Emitter.createParticles()) y luego se actualizan frame por frame (Emitter.update()).

Interacción: Las partículas interactúan entre sí y con el entorno (el mouse), usando fuerzas dinámicas como el efecto de agua.

Destrucción: Las partículas desaparecen cuando su vida útil llega a cero:

if (particle.isDead()) {
this.particles.splice(i, 1);
}

Aplicación

Image

Consolidación y metacognición 🤔

En esta fase, consolidarás lo aprendido en la unidad y reflexionarás sobre tu proceso de aprendizaje.

Actividad 04

Consolidación de lo aprendido

🎯 Enunciado: en esta actividad vas a revisar y sintetizar lo aprendido en la unidad.

⚠️ IMPORTANTE: te ruego que no uses chatGPT para resolver esta actividad. La idea es que hagas un ejercicio de reflexión y consolidación de lo aprendido.

✅ 1. ¿Cómo se gestiona la creación y la desaparición de las partículas y cómo se gestiona la memoria?

✅ 2. ¿Cómo se aplica el marco de movimiento motion 101 en los sistemas de partículas que analizaste en la actividad anterior?

✅ 3. ¿Cómo se aplican fuerzas externas a los sistemas de partículas que trabajaste en la unidad? ¿Qué fuerzas se aplicaron y cómo están modeladas?

✅ 4. ¿Cómo se aplicaste los conceptos de herencia y polimorfismo en los sistemas de partículas que trabajaste en la unidad?

📤 Entrega: responde a las preguntas del enunciado en tu bitácora.

🚀 Tu solución:

1. ¿Cómo se gestiona la creación y la desaparición de las partículas y cómo se gestiona la memoria?

  • Cuando inicializo el Emitter, se crean todas las partículas basándome en los colores y la estructura de la imagen. Las partículas se guardan en un arreglo para poder manejarlas fácilmente.
  • Por otro lado, las partículas desaparecen cuando su propiedad lifespan llega a cero. Uso splice() para eliminarlas del arreglo, así no ocupan memoria innecesariamente. Esto mantiene el programa eficiente porque no dejo que se acumulen partículas que ya no están activas.

2. ¿Cómo se aplica el marco de movimiento Motion 101 en los sistemas de partículas que analizaste en la actividad anterior?

  • Motion 101 siempre esta aplicado, usé el concepto de aceleración y fuerza acumulativa.
  • Cada partícula tiene una posición, una velocidad, y una aceleración. La aceleración se acumula cuando aplico fuerzas, como cuando las partículas se mueven hacia su objetivo (su posición original en la imagen) o cuando les aplico la fuerza del “efecto agua” alrededor del mouse.
  • El movimiento es suave y fluido porque uso vectores para calcular la dirección y magnitud de las fuerzas, además de amortiguar la velocidad con un multiplicador para simular resistencia.
  • Este proceso le da vida a las partículas y hace que se muevan de una manera suave, como si estuvieran siguiendo un camino lógico en lugar de ir por ahí de forma caótica.

3. ¿Cómo se aplican fuerzas externas a los sistemas de partículas que trabajaste en la unidad? ¿Qué fuerzas se aplicaron y cómo están modeladas?

Añadí dos tipos de fuerzas externas:

  • Atracción hacia un objetivo(La imagen): Cada partícula siente una fuerza hacia su posición original en la imagen.
  • Queria experimentar como cuando uno toca el agua y es ese movimiento del agua que se llama Repulsión: Cuando muevo el mouse, las partículas cercanas sienten una fuerza de repulsión y calcula la magnitud de la fuerza. Si la distancia entre la partícula y el mouse es pequeña, el valor de la división será grande(Se movera del todo). Si la distancia es grande, el valor de la división será pequeño (fNos e mueve ya que esta lejos).
  • Ambas fuerzas están modeladas con vectores, y Motion 101 se encarga de que todo fluya de manera natural.

4. ¿Cómo aplicaste los conceptos de herencia y polimorfismo en los sistemas de partículas que trabajaste en la unidad?

  • No usé herencia al principio por que no sabia que hacer, pero luego decidí crear la clase Confetti(Usada de la unidad anterior) que hereda de Particle. Esto me permitió reutilizar todo el comportamiento básico de las partículas, como el movimiento y la vida útil, y personalizar solo lo que necesitaba, que fue el cambio de color.
  • Gracias a la herencia, puedo tratar a todas las partículas de la misma forma. Cuando recorro el arreglo, no importa si son del tipo Particle o Confetti, ya que ambas tienen los mismos métodos (update y show). Así, las partículas normales y el confetti funcionan juntas sin complicaciones.

Actividad 05

Autoevaluación

🎯 Enunciado: evalúa tu propio proceso y detecta áreas de mejora. Responde las siguientes preguntas en un texto breve (mínimo 5 líneas por pregunta):

✅ 1. En lo que llevas de la carrera has utilizado la programación orientada a objetos en varios proyectos. Tal vez usaste el concepto de polimorfismo sin entender completamente qué significa. Luego de realizar esta unidad ¿Consideras que entiendes mejor este concepto? ¿Por qué si o por qué no?

✅ 2. ¿Qué partes de esta unidad te resultaron más fáciles? ¿Por qué?

✅ 3. ¿Qué parte te pareció más difícil o te tomó más tiempo? ¿Cómo la resolviste?

✅ 4. Si pudieras repetir esta unidad, ¿Qué harías diferente para mejorar tu comprensión de los conceptos?

✅ 5. ¿Crees que lo que aprendiste en esta unidad te servirá en futuros proyectos? ¿Por qué si o por qué no?

✅ 6. ¿Qué parte de esta unidad te gustaría profundizar más? ¿Por qué?

✅ 7. ¿Qué concepto de esta unidad se podría aplicar a tu área de interés profesional? ¿Por qué?

📤 Entrega: responde de maneara reflexiva y con autocrítica a las preguntas planteadas en el enunciado.

🚀 Tu solución:

1. ¿Consideras que entiendes mejor el concepto de polimorfismo?

  • La utilizams muchas veces en lo que fue scripting y POO, pero la verdad nunca lo comprendí. Lo hacia todo chat ya que me aburria mucha la clase
  • Y ahora sí entiendo, porque ahora puedo usar una clase base para crear otras que compartan lo básico, pero que cada una haga cosas específicas. Me quedó claro al usar Particle y crear Confetti, y ver que ambas podían funcionar juntas sin problemas, ademas reutilizo muhco codigo, para que escribir 2 veces lo mismo.

2. ¿Qué partes de esta unidad te resultaron más fáciles?

Lo más fácil fue entender cómo las partículas se mueven hacia sus objetivos, porque es algo visual y se entiende rápido al verlo en acción. Además, ya había trabajado con fuerzas antes, así que esa parte fluyó bien.

3. ¿Qué parte te pareció más difícil o te tomó más tiempo?

Lo más complicado fue entender cómo aplicar bien el polimorfismo y herencia. Al principio me costó, pero lo resolví viendo ejemplos y creando la clase Confetti. Practicar con el código me ayudó mucho.

4. Si pudieras repetir esta unidad, ¿qué harías diferente?

Tomarme con mas tiempo las actividades y no pensar en entregar, me aburri un poco con tanto ejercicio de la actividad 2 pero me parecian muy interesantes pero sabía que no podía llevar mucho tiempo.

  • Pero me encanto esta unidad de particulas

5. ¿Crees que lo que aprendiste en esta unidad te servirá en futuros proyectos?

Sí, porque la idea de reutilizar código y hacer que diferentes objetos trabajen juntos es útil para cualquier proyecto. Además, ahora sé cómo organizar mejor las cosas con clases.

6. ¿Qué parte de esta unidad te gustaría profundizar más?

Me gustaría aprender más sobre cómo modelar diferentes tipos de fuerzas, como atracción o fricción, porque siento que eso puede hacer que los sistemas sean más realistas y creativos.

7. ¿Qué concepto de esta unidad se podría aplicar a tu área de interés profesional?

Los sistemas de partículas y el manejo de fuerzas son clave para animación, que son parte de lo que quiero hacer. Ayudan a crear efectos visuales como explosiones, agua o incluso detalles pequeños que hacen que un proyecto se vea mejor.

Actividad 06

Feedback

🎯 Enunciado: ¿Me ayudas a mejorar esta unidad? Responde a las siguientes preguntas pensando en tus compañeros que tomarán este curso en el futuro.

✅ 1. Sobre la dificultad: ¿La unidad fue demasiado fácil, equilibrada o demasiado difícil? ¿Por qué?

✅ 2. Sobre el ritmo: ¿El tiempo asignado fue adecuado?

✅ 3. Sobre los materiales: ¿Qué tan útil fue la estructura de la unidad? ¿Cómo se podrían mejorar?

✅ 4. Sobre la experiencia de aprendizaje: ¿Qué fue lo mejor de esta unidad? ¿Qué te gustaría que se hiciera diferente?

✅ 5. Propuesta de mejora: si fueras el profesor y tuvieras que mejorar esta unidad para los próximos estudiantes, ¿Qué cambiarías y por qué?

📤 Entrega: ¿Me ayudas con estas preguntas justificando de la manera más precisa posible tus argumentos? De verdad, gracias por tu generosidad y sentido crítico.

🚀 Tu solución:

1. Sobre la dificultad:

La unidad fue equilibrada. No fue demasiado difícil porque los conceptos como las fuerzas ya los habíamos trabajado en otras actividades, pero tampoco fácil porque conceptos como herencia y polimorfismo requieren más práctica para entenderlos bien. Estuvo bien diseñada en ese sentido, pero quizás un ejemplo inicial más guiado ayudaría a empezar con más confianza.

2. Sobre el ritmo:

El tiempo asignado estuvo bien, aunque podría ser mejor si hubiera un poco más de tiempo para experimentar con los conceptos después de entenderlos. A veces se siente que hay que ir rápido y no queda tanto espacio para profundizar.

3. Sobre los materiales:

Me parecio super bien, me gusta la explicación que das en la pagina donde vemos los conceptos por que dan ejemplos de la vida real, como que interactua con uno

4. Sobre la experiencia de aprendizaje:

Lo mejor fue ver cómo los conceptos de las fuerzas y las partículas se juntan para crear algo visual y dinámico. Me gustó mucho poder ver los resultados en tiempo real.

5. Propuesta de mejora:

Profe no se la verdad, o sea se vuleve monotono. Pero uno tambien por el tiempo no le da para profundizar y no es culpa tuya. o Depornto si son muchos temas. pero no se