如何找到点到平面上的正交投影

时间:2012-01-20 14:33:21

标签: math 3d

假设我有点(x,y,z)和平面点(a,b,c)和法线(d,e,f)。我想找到第一个点正交投影到平面上的结果。我在3d图形编程中使用它。我想在飞机上实现某种削波。

2 个答案:

答案 0 :(得分:51)

q = (x, y, z)投影到由点p = (a, b, c)和普通n = (d, e, f)给出的平面上

q_proj = q - dot(q - p, n) * n

此计算假定n是单位向量。

答案 1 :(得分:1)

我已经使用QVector3D在Qt中实现了这个功能:

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;
}