Ajustar amortiguación para absorción rápida sin oscilación
Incrementar constantes de damping para lograr amortiguamiento crítico y eliminar oscilaciones durante la convergencia a la esfera RotoBall. ## Cambios **defines.h - Nuevos valores:** - `ROTOBALL_DAMPING_BASE`: 15.0 → 35.0 (+133%) - Amortiguamiento crítico calculado: c ≈ 2*√(k*m) = 2*√(300*1) ≈ 34.64 - `ROTOBALL_DAMPING_NEAR`: 50.0 → 80.0 (+60%) - Absorción rápida cuando están cerca del punto ## Problema Resuelto **Antes (subdamped):** - Las pelotas oscilaban varias veces antes de estabilizarse - Sobrepasaban el punto destino repetidamente - Convergencia lenta con "rebotes" visuales **Ahora (critically damped):** - Las pelotas convergen directamente sin oscilar - Se "pegan" suavemente a la esfera - Absorción rápida y visualmente limpia ## Teoría Sistema masa-resorte-amortiguador: - Subdamped (c < 2√km): Oscila antes de estabilizar - Critically damped (c = 2√km): Converge rápido sin oscilar - Overdamped (c > 2√km): Converge muy lento Valores ajustados para estar en el punto crítico, logrando la convergencia más rápida posible sin oscilación. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
26
CLAUDE.md
26
CLAUDE.md
@@ -387,30 +387,36 @@ position += velocity * deltaTime
|
||||
### Constantes Físicas Ajustables
|
||||
|
||||
```cpp
|
||||
// En defines.h
|
||||
// En defines.h (VALORES ACTUALES - Amortiguamiento crítico)
|
||||
ROTOBALL_SPRING_K = 300.0f; // Rigidez resorte
|
||||
ROTOBALL_DAMPING_BASE = 15.0f; // Amortiguación lejos
|
||||
ROTOBALL_DAMPING_NEAR = 50.0f; // Amortiguación cerca
|
||||
ROTOBALL_DAMPING_BASE = 35.0f; // Amortiguación lejos (crítico ≈ 2*√k*m)
|
||||
ROTOBALL_DAMPING_NEAR = 80.0f; // Amortiguación cerca (absorción rápida)
|
||||
ROTOBALL_NEAR_THRESHOLD = 5.0f; // Distancia "cerca" (px)
|
||||
ROTOBALL_MAX_FORCE = 1000.0f; // Límite fuerza (seguridad)
|
||||
```
|
||||
|
||||
**Changelog de Ajustes:**
|
||||
- **v1:** `DAMPING_BASE=15.0, NEAR=50.0` → Oscilación visible (subdamped)
|
||||
- **v2:** `DAMPING_BASE=35.0, NEAR=80.0` → **Absorción rápida sin oscilación** ✅
|
||||
|
||||
### Ajustes Recomendados
|
||||
|
||||
**Si oscilan demasiado:**
|
||||
**Si siguen oscilando (poco probable):**
|
||||
```cpp
|
||||
ROTOBALL_DAMPING_BASE = 25.0f; // Más amortiguación
|
||||
ROTOBALL_DAMPING_NEAR = 70.0f; // Estabilización fuerte
|
||||
ROTOBALL_DAMPING_BASE = 50.0f; // Amortiguamiento super crítico
|
||||
ROTOBALL_DAMPING_NEAR = 100.0f; // Absorción instantánea
|
||||
```
|
||||
|
||||
**Si tardan en llegar:**
|
||||
**Si llegan muy lento:**
|
||||
```cpp
|
||||
ROTOBALL_SPRING_K = 500.0f; // Resorte más rígido
|
||||
ROTOBALL_SPRING_K = 400.0f; // Más fuerza
|
||||
ROTOBALL_DAMPING_BASE = 40.0f; // Compensar con más damping
|
||||
```
|
||||
|
||||
**Si se "pegan" muy rápido (sin inercia visible):**
|
||||
**Si quieres más "rebote" visual:**
|
||||
```cpp
|
||||
ROTOBALL_DAMPING_NEAR = 30.0f; // Menos amortiguación cerca
|
||||
ROTOBALL_DAMPING_BASE = 25.0f; // Menos amortiguación
|
||||
ROTOBALL_DAMPING_NEAR = 60.0f; // Ligera oscilación
|
||||
```
|
||||
|
||||
### Ventajas del Sistema
|
||||
|
||||
@@ -74,8 +74,8 @@ constexpr int ROTOBALL_MAX_BRIGHTNESS = 255; // Brillo máximo (frente, 0-
|
||||
|
||||
// Física de atracción RotoBall (sistema de resorte)
|
||||
constexpr float ROTOBALL_SPRING_K = 300.0f; // Constante de rigidez del resorte (N/m)
|
||||
constexpr float ROTOBALL_DAMPING_BASE = 15.0f; // Amortiguación base (lejos del punto)
|
||||
constexpr float ROTOBALL_DAMPING_NEAR = 50.0f; // Amortiguación cerca del punto (estabilización)
|
||||
constexpr float ROTOBALL_DAMPING_BASE = 35.0f; // Amortiguación base (amortiguamiento crítico ≈ 2*√k*m)
|
||||
constexpr float ROTOBALL_DAMPING_NEAR = 80.0f; // Amortiguación cerca del punto (absorción rápida)
|
||||
constexpr float ROTOBALL_NEAR_THRESHOLD = 5.0f; // Distancia "cerca" en píxeles
|
||||
constexpr float ROTOBALL_MAX_FORCE = 1000.0f; // Fuerza máxima aplicable (evita explosiones)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user