2012-01-20 3 views
20

点(x、y、z)と点(a、b、c)と法線(d、e、f)を持つ平面があります。私は、最初の点を平面上に正射影した結果である点を見つけたいと思います。私はこれを3Dグラフィックスプログラミングで使用しています。私は飛行機にある種のクリッピングを達成したい。点の平面への射影を見つけるにはどうすればいいですか?

答えて

45

p = (a, b, c)と正常n = (d, e, f)によって与えられる平面上の点q = (x, y, z)の投影は、この計算はnは単位ベクトルであると仮定

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

あります。

0

私はQVector3Dを使ってQtの中でこの機能を実装しました:

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

これは以前、受け入れ答えと同じアルゴリズムを使用しを求めていない言語を使用しています。この答えが受け入れられた答えに何を加えているのですか? –

関連する問題