ポイント(x、y、z)がある場合、それを球(x0、y0、z0、radius)(その表面上)に投影する方法。私の入力は、点と球の座標になります。出力は、球上の投影点の座標である必要があります。
デカルト座標から球面座標に変換するだけですか?
ポイント(x、y、z)がある場合、それを球(x0、y0、z0、radius)(その表面上)に投影する方法。私の入力は、点と球の座標になります。出力は、球上の投影点の座標である必要があります。
デカルト座標から球面座標に変換するだけですか?
最も単純な投影の場合(点を球の中心に接続する線に沿って):
球の中心(x0、y0、z0)を中心とする座標系で点を記述します。
P =(x'、y'、z')=(x-x0、y-y0、z-z0)
このベクトルの長さを計算します。
| P | = sqrt(x'^ 2 + y'^ 2 + z'^ 2)
球の半径に等しい長さになるようにベクトルをスケーリングします。
Q =(半径/ | P |)* P
そして、元の座標系に戻って投影を取得します。
R = Q +(x0、y0、z0)
基本的に、球の中心と点を通る線を作成します。次に、この線を球と交差させて、投影点を作成します。
詳細:
ポイントp
、s
球の中心r
、半径とすると、探しているポイントはx = s + r*(p-s)/(norm(p-s))
どこになりますか。x
実装はあなたに任されています。
球面座標アプローチも同様に機能しますが、計算量が多くなることに同意します。上記の式では、自明でない操作はノルムの平方根のみです。
球の中心の座標をシステムの原点(x0、y0、z0)として設定すると機能します。したがって、その原点を参照するポイントの座標(Xp'、Yp'、Zp')が得られ、座標を極座標に変換して、半径(球の中心とポイントの間の距離)と角度を破棄します。投影を定義します。