Как мне найти ортогональную проекцию точки на плоскость - PullRequest
24 голосов
/ 20 января 2012

Допустим, у меня есть точка (x, y, z) и плоскость с точкой (a, b, c) и нормалью (d, e, f). Я хочу найти точку, которая является результатом ортогональной проекции первой точки на плоскость. Я использую это в программировании 3D-графики. Я хочу добиться какой-то привязки к плоскости.

Ответы [ 2 ]

52 голосов
/ 20 января 2012

Проекция точки q = (x, y, z) на плоскость, заданную точкой p = (a, b, c) и нормалью n = (d, e, f), равна

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

Этот расчет предполагает, что n является единичным вектором.

1 голос
/ 02 июня 2017

Я реализовал эту функцию в 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;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...