¡Gracias por tu valoración y comentarios!
YYa has valorado.
Una aplicación para visualizar curvas espaciales y sus magnitudes geométricas diferenciales.
# Visualizador de curvas para Android
**Inglés** | [Búlgaro](README.bg.md)
Una aplicación para visualizar curvas espaciales y calcular sus magnitudes geométricas diferenciales.
## Uso de la aplicación
- Introduce `x(t)`, `y(t)`, `z(t)` y un intervalo `[a, b]`, y pulsa **Dibujar**.
- El deslizador mueve el punto a lo largo de la curva; todas las magnitudes se actualizan para el `t` actual.
- Gira la curva con el dedo. La casilla de verificación activa o desactiva el círculo osculador.
- Sintaxis (exp4j): `+ - * / ^`, `sin cos tan asin acos atan sinh cosh tanh exp log sqrt abs`, constantes `pi` y `e`. Ejemplo: `2*sin(t)^2`.
## Tabla de puntos
El icono de la tabla abre una pantalla aparte (`PointsActivity`) con las coordenadas x(t), y(t), z(t) de los puntos de la curva actual. Configure **t desde**, **t hasta** y el **paso**, luego toque **Calcular**; los valores predeterminados son el intervalo actual y 1/10 de su longitud. Se muestran hasta 2000 puntos. El texto es seleccionable, por lo que se puede copiar.
## Guardar curvas
- **Guardar (icono de disco):** guarda la curva actual (x, y, z e intervalo) con un nombre; al guardarla con un nombre existente, se sobrescribe.
- **Mis curvas (icono de carpeta):** muestra las curvas guardadas. Toque una para cargarla y dibujarla; mantenga pulsado para eliminarla.
- Las curvas se conservan en el dispositivo (SharedPreferences) y se mantienen incluso después de reiniciar la aplicación.
## Menú (⋮)
La barra superior incluye iconos para Guardar y Mis curvas, además de Ejemplos e Idioma (si hay espacio), y un menú desplegable (⋮) (Acerca de):
- **Ejemplos:** hélice, círculo, cúbica retorcida, curva de Viviani, nudo de trébol. Al seleccionar uno, se rellenan los campos y se dibuja.
- **Idioma:** Automático (sistema), Inglés, Búlgaro, Francés, Alemán, Español.
- **Ayuda:** una breve descripción de la aplicación, enlaces a otras aplicaciones del autor y ayuda para la aplicación.
## Idiomas
La interfaz de usuario está disponible en inglés (predeterminado), búlgaro, francés, alemán y español. Por defecto, sigue el idioma del teléfono; el menú permite seleccionar un idioma manualmente (la elección se guarda). Para añadir un idioma, copie `res/values/strings.xml` a `res/values-XX/` (donde XX es el código del idioma), traduzca los valores y, a continuación, añada el código a `LANG_CODES` y el nombre a `setupLanguageSpinner()` en `MainActivity.java`.
## Cantidades mostradas
| Cantidad | Fórmula | Significado |
| **r(t)** | (x(t), y(t), z(t)) | Posición del punto |
| **r'\|** (velocidad) | √(x'² + y'² + z'²) | Velocidad a lo largo de la parametrización |
| **s** (longitud de arco) | ∫ₐᵗ \|r'(u)\| du | Distancia recorrida de a a t (regla de Simpson) |
| **κ** (curvatura) | \|r' × r''\| / \|r'\|³ | Velocidad de curvatura de la curva. Línea: 0. Círculo de radio R: 1/R |
| **ρ** (radio de curvatura) | 1/κ | Radio del círculo de mejor ajuste. ∞ cuando κ = 0 |
| **τ** (torsión) | (r' × r'')·r''' / \|r' × r''\|² | Desviación de la curva respecto a su plano. Curva plana: 0. Dextrógira: τ > 0, levógira: τ < 0 |
| **T** (tangente) | r' / \|r'\| | Vector unitario en la dirección del movimiento (rojo) |
| **N** (normal principal) | B × T | Vector unitario hacia el centro de curvatura (verde) |
| **B** (binormal) | (r' × r'') / \|r' × r''\| | Perpendicular al plano osculador (azul) |
| **a_T** | (r'·r'') / \|r'\| | Aceleración tangencial: cambio de velocidad |
| **a_N** | κ·\|r'\|² | Aceleración normal: cambio de dirección. La aceleración total es a_T·T + a_N·N |
| **Centro de curvatura** | C = r + ρ·N | Centro del círculo osculador |
| **Círculo osculador** | se encuentra en el plano (T, N), centro C, radio ρ | El círculo que toca la curva al orden más alto en el punto (naranja) |
### Planos del sistema de referencia
- **Plano osculador:** generado por T y N, vector normal B
- **Plano normal:** generado por N y B, vector normal T
- **Plano rectificador:** generado por T y B, vector normal N
### Fórmulas de Frenet-Serret
(s es la longitud de arco)
- dT/ds = κ·N
- dN/ds = −κ·T + τ·B
- dB/ds = −τ·N
La curvatura y la torsión determinan una curva de forma única, salvo un movimiento rígido del espacio.
## Cómo funciona
r', r'' y r'' se calculan numéricamente mediante diferencias finitas centrales (paso H = 10⁻³), y luego se aplican las fórmulas. La longitud de arco se calcula mediante la regla de Simpson (200 intervalos).
¡Un clic para instalar archivos XAPK/APK en Android!