直線に直交する直線を求める

ベクトルに直交するベクトルはで表されます。
このことから次のように座標が与えられているとき、点Pの座標値は以下のようにして求められます。

void CalcNormal
( 
  Dpoint3d baseP, 
  Dpoint3d origP, 
  Dpoint3d &p1, 
  Dpoint3d &p2, 
  double dFootLength 
)
{
  double dParam;
  double dM, dN;
  
  dM = origP.x - baseP.x;
  dN = baseP.y - origP.y;
  
  dParam = sqrt( (dFootLength*dFootLength) / ( dM*dM + dN*dN ) );
  
  p1.x = baseP.x + dParam*dN;
  p1.y = baseP.y + dParam*dM;
  p1.z = baseP.z;
  p2.x = baseP.x - dParam*dN;
  p2.y = baseP.y - dParam*dM;
  p2.z = baseP.z;
}

参考文献

アーカイブ