Obrigado pela sua classificação e feedback!
Você já classificou.
Um aplicativo para visualizar curvas espaciais e suas grandezas diferenciais-geométricas.
# Aplicativo Visualizador de Curvas para Android
**Inglês** | [Búlgaro](README.bg.md)
Um aplicativo para visualizar curvas espaciais e calcular suas grandezas diferenciais-geométricas.
## Usando o aplicativo
- Insira `x(t)`, `y(t)`, `z(t)` e um intervalo `[a, b]`, depois toque em **Desenhar**.
- O controle deslizante move o ponto ao longo da curva; todas as grandezas são atualizadas para o `t` atual.
- Gire a curva com o dedo. A caixa de seleção ativa/desativa o círculo osculador.
- Sintaxe (exp4j): `+ - * / ^`, `sin cos tan asin acos atan sinh cosh tanh exp log sqrt abs`, constantes `pi` e `e`. Exemplo: `2*sin(t)^2`.
## Tabela de pontos
O ícone da tabela abre uma tela separada (`PointsActivity`) com as coordenadas x(t), y(t), z(t) dos pontos da curva atual. Defina **t inicial**, **t final** e o **passo**, depois toque em **Calcular**; os valores padrão são o intervalo atual e 1/10 do seu comprimento. Até 2000 pontos são exibidos. O texto é selecionável, portanto, pode ser copiado.
## Salvando curvas
- **Salvar (ícone de disco):** armazena a curva atual (x, y, z e intervalo) com um nome; salvar com um nome existente a sobrescreve.
- **Minhas curvas (ícone de pasta):** lista as curvas salvas. Toque em uma para carregá-la e desenhá-la; pressione e segure para excluir.
- As curvas são mantidas no dispositivo (SharedPreferences) e persistem mesmo após a reinicialização do aplicativo.
## Menu (⋮)
A barra superior contém ícones para Salvar e Minhas curvas, além de Exemplos e Idioma (se houver espaço) e um menu de opções (⋮) (Sobre):
- **Exemplos:** hélice, círculo, cúbica torcida, curva de Viviani, nó de trevo. Selecionar um preenche os campos e o desenha.
- **Idioma:** Automático (sistema), Inglês, Búlgaro, Francês, Alemão, Espanhol.
- **Ajuda:** uma breve descrição do aplicativo, links para outros aplicativos do autor e ajuda para o aplicativo.
## Idiomas
A interface do usuário está disponível em inglês (padrão), búlgaro, francês, alemão e espanhol. Por padrão, segue o idioma do telefone; o menu permite que você escolha um idioma manualmente (a escolha é memorizada). Para adicionar um idioma, copie `res/values/strings.xml` para `res/values-XX/` (XX é o código do idioma), traduza os valores e, em seguida, adicione o código a `LANG_CODES` e o nome a `setupLanguageSpinner()` em `MainActivity.java`.
## Quantidades exibidas
| Quantidade | Fórmula | Significado |
| **r(t)** | (x(t), y(t), z(t)) | Posição do ponto |
| **r'(t)** (velocidade) | √(x'² + y'² + z'²) | Velocidade ao longo da parametrização |
| **s** (comprimento do arco) | ∫ₐᵗ |r'(u)| du | Distância percorrida de a até t (regra de Simpson) |
| **κ** (curvatura) | |r' × r''| / |r'|³ | Velocidade de curvatura. Reta: 0. Círculo de raio R: 1/R |
| **ρ** (raio de curvatura) | 1/κ | Raio do círculo de melhor ajuste. ∞ quando κ = 0 |
| **τ** (torção) | (r' × r'')·r''' / |r' × r''|² | O quanto a curva se desvia do seu plano. Curva plana: 0. Dextrógira: τ > 0, levógira: τ < 0 |
| **T** (tangente) | r' / |r'| | Vetor unitário na direção do movimento (vermelho) |
| **N** (normal principal) | B × T | Vetor unitário em direção ao centro de curvatura (verde) |
| **B** (binormal) | (r' × r'') / ||r' × r''|| | Perpendicular ao plano osculador (azul) |
| **a_T** | (r'·r'') / ||r'|| | Aceleração tangencial: mudança de velocidade |
| **a_N** | κ·|r'||² | Aceleração normal: mudança de direção. A aceleração total é a_T·T + a_N·N |
| **Centro de curvatura** | C = r + ρ·N | Centro do círculo osculador |
| **Círculo osculador** | está no plano (T, N), centro C, raio ρ | O círculo que tangencia a curva em maior grau no ponto (laranja) |
### Planos do referencial
- **Plano osculador:** definido por T e N, vetor normal B
- **Plano normal:** definido por N e B, vetor normal T
- **Plano retificador:** definido por T e B, vetor normal N
### Fórmulas de Frenet-Serret
(s é o comprimento do arco)
- dT/ds = κ·N
- dN/ds = −κ·T + τ·B
- dB/ds = −τ·N
A curvatura e a torção determinam uma curva de forma única, a menos de um movimento rígido do espaço.
## Como funciona
r', r'' e r''' são calculados numericamente com diferenças finitas centradas (passo H = 10⁻³), e então as fórmulas são aplicadas. O comprimento do arco é calculado usando a regra de Simpson (200 intervalos).
Um clique para instalar arquivos XAPK/APK no Android!