Supongamos que tengo un segmento de línea que va de (x1, y1) a (x2, y2). ¿Cómo calculo el vector normal perpendicular a la línea?
Puedo encontrar muchas cosas sobre hacer esto para planos en 3D, pero no hay cosas en 2D.
Por favor, tenga cuidado con las matemáticas (los enlaces a ejemplos trabajados, diagramas o algoritmos son bienvenidos), soy un programador más que un matemático;)
Respuestas:
si definimos dx = x2-x1 y dy = y2-y1, entonces las normales son (-dy, dx) y (dy, -dx).
Tenga en cuenta que no se requiere división, por lo que no corre el riesgo de dividir por cero.
fuente
(x', y') = (-y, x)
y(x', y') = (y, -x)
parece estar en lo cierto, pero ¿por qué uno usaríadx
ydy
aquí? Además, en función de las pendientes,m1 * m2 = -1
para las líneas de ángulo recto, por lo tanto ,dy' = dx' * (-dx/dy)
ydx' = dy' * (-dy/dx)
¿cómo se obtiene su ecuaciónnormal.x = x' = -dy
?Otra forma de pensarlo es calcular el vector unitario para una dirección dada y luego aplicar una rotación de 90 grados en sentido antihorario para obtener el vector normal.
La representación matricial de la transformación 2D general se ve así:
donde (x, y) son los componentes del vector original y (x ', y') son los componentes transformados.
Si t = 90 grados, entonces cos (90) = 0 y sin (90) = 1. Sustituirlo y multiplicarlo da:
El mismo resultado que se dio anteriormente, pero con un poco más de explicación de dónde proviene.
fuente
Esta pregunta se publicó hace mucho tiempo, pero encontré una forma alternativa de responderla. Entonces decidí compartirlo aquí.
En primer lugar, uno debe saber que: si dos vectores son perpendiculares, su producto punto es igual a cero.
El vector normal
(x',y')
es perpendicular a la línea que conecta(x1,y1)
y(x2,y2)
. Esta línea tiene dirección(x2-x1,y2-y1)
, o(dx,dy)
.Entonces,
Hay muchos pares (x ', y') que satisfacen la ecuación anterior. Pero el mejor par que SIEMPRE satisface es
(dy,-dx)
o(-dy,dx)
fuente
si perpendicular dos líneas:
luego
b es algo si quieres pasarlo desde un punto que definiste
fuente