web-dev-qa-db-fra.com

Comment trouver la projection orthogonale d'un point sur un plan

Disons que j'ai le point (x, y, z) et le plan avec le point (a, b, c) et la normale (d, e, f). Je veux trouver le point résultant de la projection orthogonale du premier point sur le plan. J'utilise ceci dans la programmation graphique 3D. Je veux réaliser une sorte de coupure sur l'avion.

23
DogDog

La projection d'un point q = (x, y, z) sur un plan donné par un point p = (a, b, c) et un n = (d, e, f) normal est

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

Ce calcul suppose que n est un vecteur unitaire.

50
antonakos

J'ai implémenté cette fonction dans Qt en utilisant 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;
}
1
Fernando