math - recta - y=mx+b como sacar b
Verifique en qué lado de un avión están los puntos (2)
Deje que a*x+b*y+c*z+d=0
sea la ecuación que determina su plano.
Sustituye las coordenadas [x,y,z]
de un punto en el lado izquierdo de la ecuación (me refiero a*x+b*y+c*z+d
) y mira el signo del resultado.
Los puntos que tienen el mismo signo están en el mismo lado del avión.
Honestamente, no examiné los detalles de lo que escribiste. Supongo que aceptas que lo que propongo es más simple.
Intento tomar una matriz de puntos tridimensionales y un plano y dividir los puntos en 2 matrices según el lado del avión en el que se encuentren. Antes de dedicarme en gran medida a la depuración, quería publicar lo que planeo hacer para asegurarme de que mi comprensión de cómo hacer esto funcione.
Básicamente tengo el avión con 3 puntos y uso (pseudo código):
var v1 = new vector(plane.b.x-plane.a.x, plane.b.y-plane.a.y, plane.b.z-plane.a.z);
var v2 = new vector(plane.c.x-plane.a.x, plane.c.y-plane.a.y, plane.c.z-plane.a.z);
Tomo el producto cruzado de estos dos vectores para obtener el vector normal.
Luego recorro mi matriz de puntos y los convierto en vectores y calculo el producto de puntos contra lo normal.
Luego uso el producto de puntos para determinar el lado en el que está el punto.
¿Suena como que funcionaría?
Tu enfoque suena bien. Sin embargo, cuando dices "y los conviertes en vectores", puede que no sea bueno (dependiendo del significado de tu oración).
Debería "convertir sus puntos en vector" calculando la diferencia en términos de coordenadas entre el punto actual y uno de los puntos en el plano (por ejemplo, uno de los 3 puntos que definen el plano). A medida que lo escribiste, parece que no lo has entendido bien; pero aparte de eso, ¡está bien!