1. ホーム
  2. c++

3Dで平面上に点を投影するには?

2023-08-08 08:02:47

質問

3次元の点(point_x,point_y,point_z)があり、それを3次元空間の2次元平面に投影したい。平面とは、点座標 (orig_x,orig_y,orig_z) と単項垂直ベクトル (normal_dx,normal_dy,normal_dz) で定義される。

これはどのように扱えばよいのでしょうか?

どのように解決するのですか?

1) ベクタを作成します。 orig の点から注目する点までのベクトルを作る。

v = point-orig (in each dimension);

2) そのベクトルと単位法線ベクトルとの内積をとる。 n :

dist = vx*nx + vy*ny + vz*nz; dist = 法線に沿った点から面までのスカラー距離

3) 単位法線ベクトルに距離を乗じ、そのベクトルを点から引く。

projected_point = point - dist*normal;

画像で編集する あなたの写真を少し修正しました。 赤は v ; v ドット normal = 青と緑の長さ( dist 上記)。青は normal*dist . Green = blue * -1 : planar_xyz を見つけるには、以下の場所から始めます。 point から始めて、緑のベクトルを加える。