Lets say I have point (x,y,z) and plane with point (a,b,c) and normal (d,e,f). I want to find the point that is the result of the orthogonal projection of the first point o
I've implemented this function in Qt using 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;
}
The projection of a point q = (x, y, z)
onto a plane given by a point p = (a, b, c)
and a normal n = (d, e, f)
is
q_proj = q - dot(q - p, n) * n
This calculation assumes that n
is a unit vector.