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