How do I find the orthogonal projection of a point

2019-01-31 01:39发布

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 onto the plane. I am using this in 3d graphics programming. I want to achieve some sort of clipping onto the plane.

标签: math 3d
2条回答
地球回转人心会变
2楼-- · 2019-01-31 02:12

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;
}
查看更多
在下西门庆
3楼-- · 2019-01-31 02:18

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.

查看更多
登录 后发表回答