GRÁFICOS MATEMÁTICOS 3D — VERSÃO 1.0.1
====================================================

Professor: Pedro Romão Batista

INSTALAÇÃO
----------
1. Extraia os arquivos roman_math_graphs_3d.py e roman_math_graphs_3d.inx.
2. Copie os dois para a pasta de extensões do Inkscape.
3. Reinicie o Inkscape.
4. Abra Extensões > Roman > Gráficos Matemáticos 3D.

No Inkscape, a localização da pasta pode ser consultada em:
Editar > Preferências > Sistema > Extensões do usuário.

RECURSOS DA VERSÃO 1.0.1
----------------------
- Preview 3D interativo com rotação, pan e zoom.
- Ctrl + clique esquerdo e arraste orbita a cena pela terceira rotação.
- Sliders sincronizados com caixas numéricas para todos os valores.
- Projeção ortográfica ou perspectiva.
- Intervalos independentes para x, y e z.
- Controles dos eixos limitados de -30 a 30.
- Escala uniforme ou ajustada por eixo.
- Eixos x, y e z com rótulos.
- Grades opcionais nos planos XY, XZ e YZ.
- Inserção de pontos por campos X, Y e Z, com lista para alterar ou excluir.
- Inserção experimental de pontos diretamente no preview ao abrir a aba Pontos.
- Mira, marcador fantasma e coordenadas ao lado do cursor antes da inserção.
- Planos de inserção XY, XZ ou YZ e snap opcional pelo intervalo da grade.
- Clique curto insere; clicar e arrastar continua girando a cena.
- Correção do clique: a coordenada é capturada ao pressionar e confirmada ao soltar.
- Preview com fundo claro também quando a interface usa o tema escuro.
- Rótulos dos pontos mantêm contraste no preview claro em ambos os temas.
- Presets de vista: padrão, isométrica, XY, XZ, YZ e perspectiva isométrica.
- Nova aba Curvas, completando duas linhas com quatro abas cada.
- Curvas paramétricas 3D por x(t), y(t) e z(t), com intervalo e amostragem.
- Lista reeditável, cor e espessura individuais para cada curva.
- Presets de hélice, circunferências XY/XZ, espiral 3D e Lissajous 3D.
- Aba Estilo com barra de rolagem vertical e suporte à roda do mouse.
- Texto de ajuda em linha própria, acima dos botões Inserir e Fechar.
- Todas as projeções dos pontos começam desativadas por padrão.
- Segmentos por origem/destino e vetores por origem/componentes.
- Lista para selecionar, alterar ou excluir segmentos e vetores.
- Cor, espessura e tamanho da ponta dos vetores configuráveis.
- Cores individuais para cada ponto, segmento e vetor.
- Projeções pontilhadas individuais dos pontos sobre os eixos X, Y e Z.
- Seleção independente dos eixos projetados e controle de espessura.
- As projeções usam a cor de cada ponto e acompanham o plano XY deslocado.
- Projeção opcional em caixa 3D, com as 12 arestas do paralelepípedo de referência.
- Nova aba Polígonos: criação por rótulos dos pontos, como A, B, C.
- Conversão opcional do polígono em prisma por extrusão nos eixos X, Y ou Z.
- Comprimento positivo ou negativo para controlar o sentido da extrusão.
- Lista para selecionar, alterar ou excluir polígonos e prismas.
- Preenchimento, contorno, opacidade e espessura configuráveis por objeto.
- Polígonos e prismas acompanham alterações feitas nas coordenadas dos pontos.
- Aba Polígonos ampliada e renomeada para Sólidos.
- Cilindros e cones por centro, raio, altura, eixo X/Y/Z e resolução circular.
- Esferas por centro, raio, meridianos e paralelos configuráveis.
- Corpos redondos vetoriais com preenchimento, contorno, opacidade e iluminação.
- Correção de oclusão em sólidos fechados: faces traseiras não atravessam mais
  a frente de prismas, cilindros, cones e esferas, inclusive em corpos baixos.
- Polígonos simples e superfícies de funções permanecem visíveis pelos dois lados.
- Grades e eixos são recortados nos contornos dos sólidos fechados, ocultando
  apenas os trechos que estão geometricamente atrás de suas faces visíveis.
- Em posições coplanares, o preenchimento do sólido prevalece sobre a grade e
  os eixos; travessias pelo interior recebem cortes adicionais nas faces.
- Prismas, cilindros, cones e esferas são sempre opacos; o controle de
  opacidade aparece apenas para polígonos simples bilaterais.
- Faces opacas da malha de funções também ocultam os trechos de grades e eixos
  que ficam atrás, sem remover a visualização bilateral da superfície.
- Filtragem por caixas projetadas mantém o recorte viável em malhas densas.
- Para preservar a fluidez, o preview usa a ordenação rápida anterior; o
  recorte preciso entre função, grades e eixos ocorre ao aplicar no documento.
- Abas inativas do tema escuro usam azul-escuro, com destaque adicional ao
  passar o mouse, em vez do fundo quase preto.
- O texto de ajuda da navegação foi movido do painel lateral para o rodapé do
  preview, evitando cortes sem aumentar a largura do painel.
- Plano XY inicia em Z = 0.
- Superfícies z=f(x,y), y=f(x,z) e x=f(y,z).
- Funções trigonométricas, exponenciais, logarítmicas e raízes.
- Malha configurável de 2x2 até 80x80 divisões.
- Iluminação direcional com cor, intensidade e luz ambiente.
- Gradiente de três cores por altura Z, com parada intermediária configurável.
- Intervalo de cores pelos limites do eixo Z ou por mínimo/máximo personalizados.
- Altura configurável para a grade XY e para os eixos X/Y (padrão Z = 0).
- Posições independentes: plano XY em Z, plano XZ em Y e plano YZ em X.
- Numeração automática e tracinhos nos eixos, seguindo o intervalo da grade.
- Opção para levar as escalas X/Y às bordas do plano XY.
- Proteção contra zeros sobrepostos e opção para ocultar o zero das escalas.
- Separação proporcional à fonte para os dois valores no canto comum X/Y.
- Campos e listas atualizados corretamente ao alternar entre tema claro/escuro.
- Abas organizadas em duas linhas: quatro na superior e três na inferior.
- Listas de Pontos, Segmentos e Polígonos reduzidas para liberar espaço vertical.
- Spinboxes e entradas convertidos para widgets ttk com cores explícitas.
- Correção da troca/fechamento de tema: widgets ttk não recebem opções Tk inválidas.
- Opção para ocultar o contorno da malha sem perder sua configuração.
- Saída SVG vetorial e reedição pela própria extensão.

EXPRESSÕES
----------
Use * para multiplicação. Potências aceitam ^ ou **.

Exemplos:
  sin(x)*cos(y)
  x^2+y^2
  sqrt(25-x^2-y^2)
  exp(-(x^2+y^2)/4)

Funções: sin, cos, tan, asin, acos, atan, sqrt, abs, exp, log,
log10, floor, ceil, sinh, cosh, tanh, min e max.
Constantes: pi e e.

PONTOS
------
Digite as coordenadas nas caixas X, Y e Z e clique em Inserir. Os pontos
recebem rótulos automáticos A, B, C... e aparecem na lista. Selecione um item
para carregar suas coordenadas nos campos e use Alterar ou Excluir.

Ao abrir a aba Pontos, passe o cursor sobre o preview para ativar a inserção
direta. Escolha o plano XY, XZ ou YZ; a coordenada perpendicular vem da
posição configurada desse plano. Um clique curto insere o ponto mostrado pela
mira. Com o snap ligado, as duas coordenadas livres seguem o intervalo da
grade. Arrastar continua controlando a rotação, sem inserir um ponto.

POLÍGONOS E PRISMAS
-------------------
Primeiro, insira pelo menos três pontos. Na aba Polígonos, escreva seus
rótulos na ordem do contorno, por exemplo: A, B, C. Escolha Polígono para
criar apenas a face ou Prisma para extrudá-la. No prisma, selecione X, Y ou Z
e informe o comprimento; valores negativos extrudam no sentido oposto.

CILINDROS, CONES E ESFERAS
--------------------------
Na aba Sólidos, escolha Cilindro, Cone ou Esfera e informe as coordenadas do
centro e o raio. Para cilindros e cones, escolha o eixo X, Y ou Z e defina a
altura; valores negativos invertem o sentido. Divisões circulares controlam a
suavidade dos três corpos, enquanto Paralelos da esfera controla sua resolução
vertical. Resoluções maiores produzem mais faces e exigem mais processamento.

CURVAS PARAMÉTRICAS
-------------------
Na aba Curvas, informe x(t), y(t), z(t), os limites de t e a quantidade de
amostras. Clique em Inserir para criar a curva. Os presets carregam exemplos
prontos que podem ser modificados antes da inserção. Cada curva permanece na
lista para alteração de expressões, intervalo, resolução, cor e espessura.

ATUALIZAÇÃO 1.0.1
-----------------
- Ao reeditar um gráfico movido, escalonado, girado ou inclinado no Inkscape,
  a transformação completa do grupo é preservada.
- Novos gráficos são centralizados na página que está ativa/visível em
  documentos com várias páginas.

LANÇAMENTO 1.0
--------------
Esta versão consolida o motor 3D, a criação de cenas matemáticas, os controles
interativos e a saída SVG vetorial reeditável. Compatível com Inkscape 1.4 e
1.4.x em Linux e Windows, sem dependências externas além de Python, inkex e
Tkinter fornecidos pelo ambiente do Inkscape.
