Предположим, что у меня есть точка (x, y, z) и плоскость с точкой (a, b, c) и нормалью (d, e, f). Я хочу найти точку, являющуюся результатом ортогональной проекции первой точки на плоскость. Я использую это в 3D-графическом программировании. Я хочу добиться какой-то обрезки на плоскости.
Как найти ортогональную проекцию точки на плоскость
Ответ 1
Проекция точки q = (x, y, z)
на плоскость, заданную точкой p = (a, b, c)
и нормалью n = (d, e, f)
равна
q_proj = q - dot(q - p, n) * n
Этот расчет предполагает, что n
- единичный вектор.
Ответ 2
Я реализовал эту функцию в Qt с помощью 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;
}