プラネタリウム的な座標変換を行うには?
当方、プラネタリウムソフトのようなものをつくろうと思っています。
その際で、下記のような座標変換方法に苦しんでおります。
緯度(θ)と経度(φ)を設定すると、ディスプレイ上の決まった位置に図形を表示させる
ということをしたいのです。球体の中心に自分がいて、ある画角で、球体表面を
平面と近似してディスプレイに表示させます。プラネタリウムになぞらえるならば、
星(ある図形)は静止状態にあって、観察者が見る角度を変える(θ,φを変える)かんじです。
図が描けないので、伝わるか心配ですが、、
全体としては球体のθ,φの座標空間で、球の中心を原点としており、
ディスプレイ上はX,Y平面で画面中央を原点としています。
例えば、(θ, φ) = (0, 0)を中心とする適当な半径の円を描きます。
で、この円が今、ディスプレイの中央にあるとします。
ここで、θのみを増加させる、つまり右を向くと、円はディスプレイ上を左へ動きます(Y不変で
X軸負の方向へ)。
これが、(θ, φ) = (π/2, 0)を中心とした円として、またディスプレイの中央に
あるとすると、経度を変化させても円は中央に静止したままとなります。
一応、画角π/6、-π≦θ<π、 -π/2≦φ<π/2、-128≦X<128、-128≦Y<128
としています。
というわけで、(θ, φ)→(X, Y)の変換はどのような考え方のもとに行ったらよいのでしょうか?
という質問です。
どこか、このようなプログラミングに関して解説しているサイトのご紹介でも結構です。
ご好意ある方、何卒よろしくお願いいたします。
補足
説明図付きで回答頂き、ありがとうございます。 あと、これに加えて以下のことができないでしょうか? 1.設定した原点をファイルに記憶しておいて、次回ファイルを 開いても設定した原点が反映されていること。 2.X方向は右が+、Y方向は下が+になっていますが、これを Y方向は上が+に変更すること。 もし、ご存じでしたら教えていただけますでしょうか? よろしくお願いします。