13

ポイント(x、y、z)がある場合、それを球(x0、y0、z0、radius)(その表面上)に投影する方法。私の入力は、点と球の座標になります。出力は、球上の投影点の座標である必要があります。

デカルト座標から球面座標に変換するだけですか?

4

3 に答える 3

31

最も単純な投影の場合(点を球の中心に接続する線に沿って):

  1. 球の中心(x0、y0、z0)を中心とする座標系で点を記述します。

    P =(x'、y'、z')=(x-x0、y-y0、z-z0)

  2. このベクトルの長さを計算します。

    | P | = sqrt(x'^ 2 + y'^ 2 + z'^ 2)

  3. 球の半径に等しい長さになるようにベクトルをスケーリングします。

    Q =(半径/ | P |)* P

  4. そして、元の座標系に戻って投影を取得します。

    R = Q +(x0、y0、z0)

于 2012-03-07T15:28:05.857 に答える
4

基本的に、球の中心と点を通る線を作成します。次に、この線を球と交差させて、投影点を作成します。

詳細:

ポイントps球の中心r、半径とすると、探しているポイントはx = s + r*(p-s)/(norm(p-s))どこになりますか。x実装はあなたに任されています。

球面座標アプローチも同様に機能しますが、計算量が多くなることに同意します。上記の式では、自明でない操作はノルムの平方根のみです。

于 2012-03-07T15:23:34.933 に答える
0

球の中心の座標をシステムの原点(x0、y0、z0)として設定すると機能します。したがって、その原点を参照するポイントの座標(Xp'、Yp'、Zp')が得られ、座標を極座標に変換して、半径(球の中心とポイントの間の距離)と角度を破棄します。投影を定義します。

于 2012-03-07T15:24:57.780 に答える