2012-01-20 3 views
20

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

Répondre

45

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

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

Ce calcul suppose que n est un vecteur unitaire.

0

J'ai mis 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; 
} 
+0

Il utilise le même algorithme que le précédent, réponse acceptée et utilise un langage pas demandé. Qu'est-ce que cette réponse ajoute à la réponse acceptée? –

Questions connexes