math - vectorial - proyeccion ortogonal en r3
¿Cómo encuentro la proyección ortogonal de un punto en un plano? (2)
He implementado esta función en Qt usando QVector3D:
QVector3D getPointProjectionInPlane(QVector3D point, QVector3D planePoint, QVector3D planeNormal)
{
//q_proj = q - dot(q - p, n) * n
QVector3D normalizedPlaneNormal = planeNormal.normalized();
QVector3D pointProjection = point - QVector3D::dotProduct(point - planePoint, normalizedPlaneNormal) * normalizedPlaneNormal;
return pointProjection;
}
Digamos que tengo el punto (x, y, z) y el plano con el punto (a, b, c) y normal (d, e, f). Quiero encontrar el punto que es el resultado de la proyección ortogonal del primer punto en el plano. Estoy usando esto en la programación de gráficos 3d. Quiero lograr algún tipo de recorte en el avión.
La proyección de un punto q = (x, y, z)
en un plano dado por un punto p = (a, b, c)
y una n = (d, e, f)
normal n = (d, e, f)
es
q_proj = q - dot(q - p, n) * n
Este cálculo supone que n
es un vector unitario.