Suponha que eu tenha um segmento de linha que vai de (x1, y1) a (x2, y2). Como calculo o vetor normal perpendicular à linha?
Posso encontrar muitas coisas sobre isso em aviões em 3D, mas não em 2D.
Por favor, vá com calma na matemática (links para exemplos, diagramas ou algoritmos trabalhados são bem-vindos); sou mais programador do que matemático;)
Respostas:
se definirmos dx = x2-x1 e dy = y2-y1, os normais são (-dy, dx) e (dy, -dx).
Observe que nenhuma divisão é necessária e, portanto, você não corre o risco de dividir por zero.
fonte
(x', y') = (-y, x)
e(x', y') = (y, -x)
parece estar certo, mas por que alguém usariadx
edy
aqui. Além disso, com base em declives,m1 * m2 = -1
para linhas de ângulo reto, portanto ,dy' = dx' * (-dx/dy)
edx' = dy' * (-dy/dx)
como é que vem sua equaçãonormal.x = x' = -dy
?Outra maneira de pensar é calcular o vetor unitário para uma determinada direção e aplicar uma rotação de 90 graus no sentido anti-horário para obter o vetor normal.
A representação matricial da transformação 2D geral é assim:
onde (x, y) são os componentes do vetor original e (x ', y') são os componentes transformados.
Se t = 90 graus, então cos (90) = 0 e sin (90) = 1. Substituindo e multiplicando, obtém-se:
Mesmo resultado que o dado anteriormente, mas com um pouco mais de explicação de onde vem.
fonte
Esta pergunta foi publicada há muito tempo, mas encontrei uma maneira alternativa de respondê-la. Então eu decidi compartilhar aqui.
Primeiro, é preciso saber que: se dois vetores são perpendiculares, seu produto escalar é igual a zero.
O vetor normal
(x',y')
é perpendicular à linha de conexão(x1,y1)
e(x2,y2)
. Esta linha tem direção(x2-x1,y2-y1)
, ou(dx,dy)
.Assim,
Existem muitos pares (x ', y') que satisfazem a equação acima. Mas o melhor par que SEMPRE satisfaz é um
(dy,-dx)
ou outro(-dy,dx)
fonte
se duas linhas perpendiculares:
então
b é algo se você quiser passar de um ponto que você definiu
fonte