点(x、y、z)と平面(a、b、c)と法線(d、e、f)がある平面があるとします。平面への最初の点の正射影の結果である点を見つけたいです。私はこれを3Dグラフィックプログラミングで使用しています。飛行機で何らかの切り抜きをしたい。
点q = (x, y, z)
と、法線p = (a, b, c)
によって与えられる平面への点n = (d, e, f)
の投影は、
q_proj = q - dot(q - p, n) * n
この計算では、n
が単位ベクトルであることを前提としています。
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;
}