Pregunta

Tengo un triángulo en el espacio 3D definido por sus 3 vértices, P0, P1 y P2.

Deseo calcular un plano en este espacio 3D que se encuentra a lo largo de P0 y P1 y enfrenta un tercer punto, P2.

Este plano debe definirse por una posición y dirección normalizada/

Además de acostarse a lo largo de P0 y P1, y frente a P2, el avión también debe ser perpendicular al avión creado por P0, P1 y P2

He luchado con esto durante bastante tiempo y cualquier ayuda que alguien pueda ofrecer es muy apreciada.

¿Fue útil?

Solución

Su pregunta está mal plenada. Para cualquier avión que se encuentre en P0 y P1, habrá algún punto en ese avión que "enfrenta" el punto P2. Entonces, todo lo que queda para calcular es un avión a lo largo de P0 y P1.

normal = normalize(cross(p1-p0, pX-p0))  //pX is anything except p1
planePoint = p0

EDITAR: ver comentarios

Aquí hay un ejemplo de mi explicación de comentarios

Octave: 14> P0
P0 =

0 0 0

Octave: 15> P1
P1 =

0 0 5

Octave: 16> P2
P2 =

5 0 0

Octave: 17> Cross (P1-P0, Cross (P1-P0, P2-P0))
Ans =

-125 0 0

Notará que el signo está mal, juegue con el orden de los parámetros en el producto cruzado para que se enfrente a la manera correcta. Tampoco olvide normalizar ... pero no afectará la dirección. También verifique que la norma después de cada producto cruzado no esté cerca de 0, de lo contrario no hay una respuesta única ... (Triangle forma una línea)

Otros consejos

A menos que esté malinterpretando lo que está pidiendo, un vector desde la línea hasta P2 será lo normal para el avión que está tratando de definir. Básicamente, construyes una línea en ángulo recto con la línea P0-P1, que se ejecuta a través de P2.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top