Reemplazar Wave Grid por Lissajous Curve 3D
Cambiar figura "Wave Grid" (malla ondeante) por curva de Lissajous 3D, con ecuaciones paramétricas más hipnóticas y resultónas visualmente. ## Cambios Principales **Archivos renombrados:** - `wave_grid_shape.h/cpp` → `lissajous_shape.h/cpp` - Clase `WaveGridShape` → `LissajousShape` **Ecuaciones implementadas:** - x(t) = A * sin(3t + φx) - Frecuencia 3 en X - y(t) = A * sin(2t) - Frecuencia 2 en Y - z(t) = A * sin(t + φz) - Frecuencia 1 en Z - Ratio 3:2:1 produce patrón de "trenza elegante" **Animación:** - Rotación global dual (ejes X/Y) - Animación de fase continua (morphing) - Más dinámica y orgánica que Wave Grid **defines.h:** - `WAVE_GRID_*` → `LISSAJOUS_*` constantes - `ShapeType::WAVE_GRID` → `ShapeType::LISSAJOUS` **engine.cpp:** - Actualizado include y instanciación - Arrays de figuras DEMO actualizados - Tecla W ahora activa Lissajous ## Resultado Curva 3D paramétrica hipnótica con patrón entrelazado, rotación continua y morphing de fase. Más espectacular que el grid ondeante anterior. 🌀 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
@@ -267,7 +267,7 @@ std::vector<PNGShape::Point2D> PNGShape::extractCornerVertices(const std::vector
|
||||
|
||||
void PNGShape::update(float delta_time, float screen_width, float screen_height) {
|
||||
if (!is_flipping_) {
|
||||
// Estado IDLE: texto de frente con pivoteo sutil (como WAVE_GRID)
|
||||
// Estado IDLE: texto de frente con pivoteo sutil
|
||||
idle_timer_ += delta_time;
|
||||
|
||||
// Pivoteo sutil constante (movimiento orgánico)
|
||||
@@ -340,7 +340,7 @@ void PNGShape::getPoint3D(int index, float& x, float& y, float& z) const {
|
||||
z_base = -extrusion_depth_ * 0.5f + layer_index * layer_step;
|
||||
}
|
||||
|
||||
// Añadir pivoteo sutil en estado IDLE (similar a WAVE_GRID)
|
||||
// Añadir pivoteo sutil en estado IDLE
|
||||
// Calcular tamaño del logo en pantalla para normalizar correctamente
|
||||
float logo_width = image_width_ * scale_factor_;
|
||||
float logo_height = image_height_ * scale_factor_;
|
||||
@@ -350,9 +350,9 @@ void PNGShape::getPoint3D(int index, float& x, float& y, float& z) const {
|
||||
float u = x_base / (logo_size * 0.5f);
|
||||
float v = y_base / (logo_size * 0.5f);
|
||||
|
||||
// Calcular pivoteo (amplitudes más grandes, similar a WAVE_GRID)
|
||||
float tilt_amount_x = sinf(tilt_x_) * 0.15f; // 15% como WAVE_GRID
|
||||
float tilt_amount_y = sinf(tilt_y_) * 0.1f; // 10% como WAVE_GRID
|
||||
// Calcular pivoteo (amplitudes más grandes)
|
||||
float tilt_amount_x = sinf(tilt_x_) * 0.15f; // 15%
|
||||
float tilt_amount_y = sinf(tilt_y_) * 0.1f; // 10%
|
||||
|
||||
// Aplicar pivoteo proporcional al tamaño del logo
|
||||
float z_tilt = (u * tilt_amount_y + v * tilt_amount_x) * logo_size;
|
||||
|
||||
Reference in New Issue
Block a user