プロが教える店舗&オフィスのセキュリティ対策術

球面状に円を描くプログラム

直交座標で点(a,b)を中心とした半径rの円を

x=a+rcosθ
y=b+rsinθ

として設定し、r、θを指定して計算を行い(0<θ<2π)その結果をxとyの配列へ入れました。
それをプロットさせると直交座標上では円を描くことができました。

しかし、この直交座標で円となったデータを球の表面にそのままプロットさせると涙型のようなゆがんだ形となってしまい、きれいな円を描くことがきません。

どのようにすれば球面上の任意の場所を中心とした円を描くことができるのか、分からず困っています。
参考URLでもよろしいのですが、何か解決のヒントを頂けると嬉しいです。

A 回答 (1件)

>この直交座標で円となったデータを球の表面にそのままプロットさせると


>涙型のようなゆがんだ形となってしまい、きれいな円を描くことがきません
どのようなプロットをしているのかよくわかりませんが、対象が3次元立体表面へのプロットという意味でしょうか?
2次元で書いた円を、3次元の球体に平行投影したらそうなったということ?

涙型で対象形ではないということなので、プロットの軸が球体の芯からはずれているのだと思いますが、プロットの方法が3次元であると仮定すると、最初から計算を3次元で行わなければ対象とする球体の表面を捕らえられないはず。

球体面に正円を描くというと、イメージ的には球体の中心を頂点とする(任意の頂角の)円錐体の表面と、球体の表面の交点(交線)が円になるとおもいますけれど?

説明を簡単にするために、球の中心が座標原点、円錐の軸線がZ軸となっているとすれば、Z軸を含む任意の平面(仮にX-Z平面として)での断面を考えれば、
 ・球体表面は原点を中心とする円となり(半径=r)
 ・円錐表面は原点を通り、Z軸と頂角の1/2の角度(θ)をなす2直線になります
これらの交点の一方 ( x, z ) = ( rcosθ, rsinθ ) をZ軸を中心に1回転されば、求める円の軌跡が得られると思いますが… ?
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!