Añadido modo alternativo de simulación que transforma las pelotas en una esfera 3D rotante proyectada en 2D, inspirado en efectos clásicos de demoscene. ## Características Principales - **Algoritmo Fibonacci Sphere**: Distribución uniforme de puntos en esfera 3D - **Rotación dual**: Matrices de rotación en ejes X e Y simultáneos - **Profundidad Z simulada**: Color modulation según distancia (oscuro=lejos, brillante=cerca) - **Transición suave**: Interpolación de 1.5s desde física a esfera - **Sin sprites adicionales**: Usa SDL_SetTextureColorMod para profundidad - **Performance optimizado**: >60 FPS con 100,000 pelotas ## Implementación Técnica ### Nuevos Archivos/Cambios: - `defines.h`: Enum SimulationMode + constantes RotoBall (radio, velocidades, brillo) - `ball.h/cpp`: Soporte 3D (pos_3d, target_2d, depth_brightness, setters) - `engine.h/cpp`: Lógica completa RotoBall (generate, update, toggle) - `generateRotoBallSphere()`: Fibonacci sphere algorithm - `updateRotoBall()`: Rotación 3D + proyección ortográfica - `toggleRotoBallMode()`: Cambio entre PHYSICS/ROTOBALL - `README.md`: Documentación completa del modo - `CLAUDE.md`: Detalles técnicos y algoritmos ## Parámetros Configurables (defines.h) ```cpp ROTOBALL_RADIUS = 80.0f; // Radio de la esfera ROTOBALL_ROTATION_SPEED_Y = 1.5f; // Velocidad rotación eje Y (rad/s) ROTOBALL_ROTATION_SPEED_X = 0.8f; // Velocidad rotación eje X (rad/s) ROTOBALL_TRANSITION_TIME = 1.5f; // Tiempo de transición (segundos) ROTOBALL_MIN_BRIGHTNESS = 50; // Brillo mínimo fondo (0-255) ROTOBALL_MAX_BRIGHTNESS = 255; // Brillo máximo frente (0-255) ``` ## Uso - **Tecla C**: Alternar entre modo física y modo RotoBall - Compatible con todos los temas de colores - Funciona con 1-100,000 pelotas - Debug display muestra "MODE PHYSICS" o "MODE ROTOBALL" ## Performance - Batch rendering: Una sola llamada SDL_RenderGeometry - Fibonacci sphere recalculada por frame (O(n) predecible) - Color mod CPU-side sin overhead GPU - Delta time independiente del framerate 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
9.8 KiB
9.8 KiB