2012-01-20 12 views

Respuesta

45

La proyección de un punto q = (x, y, z) sobre un plano dado por un punto p = (a, b, c) y una normal de n = (d, e, f) es

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

Este cálculo supone que n es un vector unitario.

0

he implementado esta función en Qt utilizando 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

Este utiliza el mismo algoritmo que el, respuesta anterior aceptado y utiliza un lenguaje no solicitado. ¿Qué agrega esta respuesta a la respuesta aceptada? –

Cuestiones relacionadas