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.
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.
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;
}