📐 Problema de Snellius

Resecção Topográfica & Newton-Raphson 2×2

📐 1. Fundamentação Teórica & Dedução

Em topografia e navegação, a reseção (ou problema de Snellius) consiste em determinar as coordenadas desconhecidas de um ponto P(x, y) a partir de medições angulares entre três pontos de referência A(xA, yA), B(xB, yB) e C(xC, yC) de posições conhecidas.

Dados do problema:
- Pontos conhecidos: A, B, C com coordenadas conhecidas.
- Ângulos medidos em campo: α = ∠APB (ângulo em P entre A e B) e β = ∠BPC (ângulo em P entre B e C).
- Objetivo: encontrar P(x, y) que satisfaça simultaneamente as duas medições angulares.

Passo 1: Vetores posição relativos a P

Definimos os vetores que ligam o ponto desconhecido P a cada referência:

$$\vec{PA} = (x_A - x,\; y_A - y), \quad \vec{PB} = (x_B - x,\; y_B - y), \quad \vec{PC} = (x_C - x,\; y_C - y)$$

Passo 2: Ângulo entre dois vetores

Pela definição do produto escalar: \(\vec{u} \cdot \vec{v} = \|\vec{u}\| \|\vec{v}\| \cos \theta\). Isolando o cosseno e aplicando o arco-cosseno, obtemos o ângulo θ ∈ [0, π]:

$$\theta = \arccos\left( \frac{\vec{u} \cdot \vec{v}}{\|\vec{u}\| \|\vec{v}\|} \right)$$

Passo 3: Ângulos calculados a partir de P(x, y)

Para um dado candidato P(x, y), calculamos os ângulos geométricos:

Produtos escalares (explicitados):

$$\vec{PA} \cdot \vec{PB} = (x_A - x)(x_B - x) + (y_A - y)(y_B - y)$$ $$\vec{PB} \cdot \vec{PC} = (x_B - x)(x_C - x) + (y_B - y)(y_C - y)$$

Normas (distâncias euclidianas):

$$\|\vec{PA}\| = \sqrt{(x_A - x)^2 + (y_A - y)^2}$$ $$\|\vec{PB}\| = \sqrt{(x_B - x)^2 + (y_B - y)^2}$$ $$\|\vec{PC}\| = \sqrt{(x_C - x)^2 + (y_C - y)^2}$$

Ângulos calculados:

$$\hat{\alpha}(x,y) = \arccos\left( \frac{(x_A - x)(x_B - x) + (y_A - y)(y_B - y)}{\sqrt{(x_A - x)^2 + (y_A - y)^2} \;\cdot\; \sqrt{(x_B - x)^2 + (y_B - y)^2}} \right)$$ $$\hat{\beta}(x,y) = \arccos\left( \frac{(x_B - x)(x_C - x) + (y_B - y)(y_C - y)}{\sqrt{(x_B - x)^2 + (y_B - y)^2} \;\cdot\; \sqrt{(x_C - x)^2 + (y_C - y)^2}} \right)$$

Passo 4: Funções residuais (sistema explícito)

No ponto verdadeiro P*, os ângulos calculados devem coincidir com os ângulos medidos. Definimos os resíduos:

$$f(x,y) = \hat{\alpha}(x,y) - \alpha = \arccos\left( \frac{(x_A - x)(x_B - x) + (y_A - y)(y_B - y)}{\sqrt{(x_A - x)^2 + (y_A - y)^2} \; \sqrt{(x_B - x)^2 + (y_B - y)^2}} \right) - \alpha$$ $$g(x,y) = \hat{\beta}(x,y) - \beta = \arccos\left( \frac{(x_B - x)(x_C - x) + (y_B - y)(y_C - y)}{\sqrt{(x_B - x)^2 + (y_B - y)^2} \; \sqrt{(x_C - x)^2 + (y_C - y)^2}} \right) - \beta$$
🎯 Sistema Não Linear 2×2 (Forma Explícita):
$$\begin{cases} f(x,y) = 0 \\[8pt] g(x,y) = 0 \end{cases}$$ Ou equivalentemente: $$\begin{cases} \arccos\left( \dfrac{(x_A - x)(x_B - x) + (y_A - y)(y_B - y)}{\sqrt{(x_A - x)^2 + (y_A - y)^2} \; \sqrt{(x_B - x)^2 + (y_B - y)^2}} \right) = \alpha \\[12pt] \arccos\left( \dfrac{(x_B - x)(x_C - x) + (y_B - y)(y_C - y)}{\sqrt{(x_B - x)^2 + (y_B - y)^2} \; \sqrt{(x_C - x)^2 + (y_C - y)^2}} \right) = \beta \end{cases}$$ Buscamos \((x^*, y^*)\) que zere simultaneamente ambas as equações. Como não há solução analítica fechada, aplicamos o Método de Newton-Raphson com diferenciação numérica e amortecimento para garantir convergência global.

Passo 5: Método de Newton-Raphson para resolução

O método de Newton-Raphson em 2D itera:

$$\begin{bmatrix} x_{k+1} \\ y_{k+1} \end{bmatrix} = \begin{bmatrix} x_k \\ y_k \end{bmatrix} - \mathbf{J}^{-1}(x_k, y_k) \begin{bmatrix} f(x_k, y_k) \\ g(x_k, y_k) \end{bmatrix}$$

onde J é a matriz Jacobiana:

$$\mathbf{J}(x,y) = \begin{bmatrix} \frac{\partial f}{\partial x} & \frac{\partial f}{\partial y} \\[6pt] \frac{\partial g}{\partial x} & \frac{\partial g}{\partial y} \end{bmatrix}$$

Como f e g envolvem arccos e raízes quadradas, calculamos as derivadas numericamente via diferenças finitas:

$$\frac{\partial f}{\partial x} \approx \frac{f(x+\epsilon, y) - f(x, y)}{\epsilon}, \quad \epsilon \text{ pequeno (ex: } 10^{-8})$$

Passo 6: Amortecimento para convergência global

Newton-Raphson puro pode divergir se o chute inicial estiver longe da solução. Introduzimos um fator de amortecimento λk ∈ (0, 1]:

$$\begin{bmatrix} x_{k+1} \\ y_{k+1} \end{bmatrix} = \begin{bmatrix} x_k \\ y_k \end{bmatrix} - \lambda_k \cdot \mathbf{J}^{-1}(x_k, y_k) \begin{bmatrix} f(x_k, y_k) \\ g(x_k, y_k) \end{bmatrix}$$

Escolhemos λk reduzindo-o (ex: dividindo por 2) enquanto a norma dos resíduos não diminuir:

$$||f_{k+1}|| + ||g_{k+1}|| < ||f_k|| + ||g_k||$$
⚠️ Estabilidade Numérica & Círculo de Perigo:
Clamping do arccos: Para evitar erros de arredondamento quando o argumento do arccos ultrapassa levemente ±1, aplicamos um clamping computacional: $$\text{arg}_{\text{safe}} = \max(-1, \min(1, \text{arg}))$$ Círculo de perigo: Se P estiver sobre o círculo circunscrito ao triângulo ABC, o sistema torna-se singular (infinitas soluções). O algoritmo detecta essa condição automaticamente via det(J) ≈ 0 e ativa o fator de amortecimento ou reinicia a iteração com novo chute inicial.

Resumo da dedução explícita:

  1. Defina vetores \(\vec{PA}, \vec{PB}, \vec{PC}\) a partir de P desconhecido
  2. Calcule produtos escalares e normas em função de x, y
  3. Determine ângulos geométricos \(\hat{\alpha}(x,y)\) e \(\hat{\beta}(x,y)\) com arccos do produto escalar
  4. Forme resíduos \(f(x,y) = \hat{\alpha} - \alpha\) e \(g(x,y) = \hat{\beta} - \beta\)
  5. Use Newton-Raphson numericamente para resolver \(f=0, g=0\)
  6. Adicione amortecimento e clamping para robustez numérica
  7. Monitore singularidade pelo determinante da Jacobiana

🔧 2. Simulador de Resecção

📍 Coordenadas dos Pontos de Referência
📐 Ângulos Medidos (Graus)
⚙️ Parâmetros
kxy$f$$g$‖Δ‖λ

🗺️ 3. Visualização Geométrica

Quadrados pretos = Referências. Estrela verde = Solução $P$. Linha roxa = Caminho do Newton-Raphson.

📚 Referências

  1. BURDEN, R. L.; FAIRES, J. D. Numerical Analysis. 10th ed. Cengage, 2015.
  2. GHILANI, C. D. Adjustment Computations. 6th ed. Wiley, 2017.
⚠️ Trabalho produzido pelo prof. Doherty Andrade para fins didáticos. Não substitui métodos profissionais de topografia ou navegação.
www.metodosnumericos.com.br