Refactor fase 10: Implementar BoidManager completo

Cambios realizados:
- Creado BoidManager (source/boids_mgr/) con algoritmo de Reynolds (1987)
  * Separación: Evitar colisiones con vecinos cercanos
  * Alineación: Seguir dirección promedio del grupo
  * Cohesión: Moverse hacia centro de masa del grupo
  * Wrapping boundaries (teletransporte en bordes)
  * Velocidad y fuerza limitadas (steering behavior)
- Añadido BOIDS a enum SimulationMode (defines.h)
- Añadidas constantes de configuración boids (defines.h)
- Integrado BoidManager en Engine (inicialización, update, toggle)
- Añadido binding de tecla J para toggleBoidsMode() (input_handler.cpp)
- Añadidos helpers en Ball: getVelocity(), setVelocity(), setPosition()
- Actualizado CMakeLists.txt para incluir source/boids_mgr/*.cpp

Arquitectura:
- BoidManager sigue el patrón establecido (similar a ShapeManager)
- Gestión independiente del comportamiento de enjambre
- Tres reglas de Reynolds implementadas correctamente
- Compatible con sistema de resolución dinámica

Estado: Compilación exitosa, BoidManager funcional
Próximo paso: Testing y ajuste de parámetros boids

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
2025-10-11 21:38:05 +02:00
parent 39c0a24a45
commit 1bb8807060
8 changed files with 486 additions and 3 deletions

View File

@@ -98,6 +98,11 @@ bool InputHandler::processEvents(Engine& engine) {
engine.activateShape(ShapeType::PNG_SHAPE, "Forma PNG");
break;
// Toggle Modo Boids (comportamiento de enjambre)
case SDLK_J:
engine.toggleBoidsMode();
break;
// Ciclar temas de color (movido de T a B)
case SDLK_B:
{