数学でも物理学でも天文学でもなんでもいいんですが、教科書を読んでわかったつもりになっても現実の問題に向かうとさっぱりわからないなんてことがあります。
こういう経験をすると「あ~、オレはバカなんだ」と思ったものですが、最近そうじゃないような気がしてきました。
こういうのは字面だけ読んでその背景にある本質が理解できてなかったということなんですが、教科書を書くような方は頭がよすぎて教科書を読む人が「背景にある本質」みたいなものをそうやすやすと理解できないことに気づいていないような気がしてきました。
つまり私がバカなんじゃなくて教科書が悪いんだといういつか書いた記事みたいなことです。
--------
さて前記事でカメラの方位角0、仰角0、傾き0のとき方位角・高度(A,h)の天体がカメラのセンサーにどう写るかを考えたので今度はそうでない場合を考えます。
カメラの方位角が0でないということはz軸(天頂)を中心に回転していることを意味します。仰角ならy軸(左右方向、前記事だと東西方向)を中心の回転、傾きはx軸(前後方向)を中心とした回転です。
だからこの三つは座標をそれぞれの軸を中心に三回回転することによって反映することができます。つまり機械的に座標回転の操作を三回やればいいだけ__天体の方向余弦に座標変換(回転)のマトリックスを三回かけるだけ__なんですが、ここでは泥臭く考えてみます。
なぜこんな面倒なことをやるかというとカメラを回転したときどうなるかというようなことを考えるときの実戦的な力を養うためです。
--------
(1) カメラを向ける向き(カメラの方位角)が0でない場合
これはじつに簡単でカメラを向けた方位をYとすると天体の座標(A,h)を(A-Y,h)と変換して計算すれば済みます。カメラが方角を変えた分天体の方位角から差っ引けばすむという考え方です。
ただ「なぜAをA-Yと変換するだけで済むのか?」ということはちょっと考えた方がいいです。
天体の(方位角,高度)の座標系はカメラの回転軸に対して軸対象になっています。この結果カメラをいくら回転しても天体の高度座標は変わりません。ただ天体の方位が変わっていくだけです。だから「AをA-Yと変換するだけで済む」わけです。つまり座標系が回転軸に対して軸対象でなければこんな簡単な話ではすみません。
カメラの方位角がYのときの方位角・高度が(A,h)の天体の方向余弦(天球上の座標)
L = cos(h) * cos(A-Y)
M = -cos(h) * sin(A-Y)
N = sin(h)
(2) カメラの仰角が0でない場合
カメラの仰角がPの場合は「hをh-Pと変換するだけ」ではすみません。カメラの回転軸に対して天体の座標系は軸対象ではないのでカメラを回転すれば方位角Aも高度Aも変化してしまいます。
カメラの仰角があるケースについては地道に座標の回転操作を行う必要があります。
そんなのあたりまえだろう、という声が聞こえてきそうですですが、わざわざこんなことを書くのは
「hをh-Pと変換するだけ」ですまそうと勘違いした人間がここにいる
からです (^^;;
カメラの仰角がPのとき(y軸の回りの回転)
(3) カメラの傾きが0でない場合
カメラが傾いてもx軸の天球との交点は移動しません。つまり接平面も移動せず天体の接平面への投影も変わりません。カメラが回転することによって接平面への投影の見え方が違うだけです。
ですからこれはセンサー面に投影された天体の座標を回転するだけですみます。
天体の接平面上への投影の座標
天球上の座標をx=1になるように変換するところは同じです。
L''=L'/L'=1
M''=M'/L'
N''=N'/L'
カメラがR傾いているときの天体の接平面上の座標
センサー上の天体の座標
x = - C * M''' + Px / 2
y = - C * N''' + Py / 2
以上によってカメラを任意の向きも向けたときの天体のセンサー上の座標を求めることができます。
次の記事では季節の星座を対象にじっさいに計算してみたいと思います。
それから画像上の座標から天体の高度と方位角を求めるとか....
(2013-04-20 21:07:10)
(2013-04-21 22:36:58 回転のときの符号の誤りを訂正しました)
こういう経験をすると「あ~、オレはバカなんだ」と思ったものですが、最近そうじゃないような気がしてきました。
こういうのは字面だけ読んでその背景にある本質が理解できてなかったということなんですが、教科書を書くような方は頭がよすぎて教科書を読む人が「背景にある本質」みたいなものをそうやすやすと理解できないことに気づいていないような気がしてきました。
つまり私がバカなんじゃなくて教科書が悪いんだといういつか書いた記事みたいなことです。
--------
さて前記事でカメラの方位角0、仰角0、傾き0のとき方位角・高度(A,h)の天体がカメラのセンサーにどう写るかを考えたので今度はそうでない場合を考えます。
カメラの方位角が0でないということはz軸(天頂)を中心に回転していることを意味します。仰角ならy軸(左右方向、前記事だと東西方向)を中心の回転、傾きはx軸(前後方向)を中心とした回転です。
だからこの三つは座標をそれぞれの軸を中心に三回回転することによって反映することができます。つまり機械的に座標回転の操作を三回やればいいだけ__天体の方向余弦に座標変換(回転)のマトリックスを三回かけるだけ__なんですが、ここでは泥臭く考えてみます。
なぜこんな面倒なことをやるかというとカメラを回転したときどうなるかというようなことを考えるときの実戦的な力を養うためです。
--------
(1) カメラを向ける向き(カメラの方位角)が0でない場合
これはじつに簡単でカメラを向けた方位をYとすると天体の座標(A,h)を(A-Y,h)と変換して計算すれば済みます。カメラが方角を変えた分天体の方位角から差っ引けばすむという考え方です。
ただ「なぜAをA-Yと変換するだけで済むのか?」ということはちょっと考えた方がいいです。
天体の(方位角,高度)の座標系はカメラの回転軸に対して軸対象になっています。この結果カメラをいくら回転しても天体の高度座標は変わりません。ただ天体の方位が変わっていくだけです。だから「AをA-Yと変換するだけで済む」わけです。つまり座標系が回転軸に対して軸対象でなければこんな簡単な話ではすみません。
カメラの方位角がYのときの方位角・高度が(A,h)の天体の方向余弦(天球上の座標)
L = cos(h) * cos(A-Y)
M = -cos(h) * sin(A-Y)
N = sin(h)
(2) カメラの仰角が0でない場合
カメラの仰角がPの場合は「hをh-Pと変換するだけ」ではすみません。カメラの回転軸に対して天体の座標系は軸対象ではないのでカメラを回転すれば方位角Aも高度Aも変化してしまいます。
カメラの仰角があるケースについては地道に座標の回転操作を行う必要があります。
そんなのあたりまえだろう、という声が聞こえてきそうですですが、わざわざこんなことを書くのは
「hをh-Pと変換するだけ」ですまそうと勘違いした人間がここにいる
からです (^^;;
カメラの仰角がPのとき(y軸の回りの回転)
┌ | L' | ┐ | = | ┌ | cos(P) | 0 | sin(P) | ┐ | ┌ | L | ┐ | ||
│ | M' | │ | │ | 0 | 1 | 0 | │ | │ | M | │ | |||
└ | N' | ┘ | └ | -sin(P) | 0 | cos(P) | ┘ | └ | N | ┘ |
(3) カメラの傾きが0でない場合
カメラが傾いてもx軸の天球との交点は移動しません。つまり接平面も移動せず天体の接平面への投影も変わりません。カメラが回転することによって接平面への投影の見え方が違うだけです。
ですからこれはセンサー面に投影された天体の座標を回転するだけですみます。
天体の接平面上への投影の座標
天球上の座標をx=1になるように変換するところは同じです。
L''=L'/L'=1
M''=M'/L'
N''=N'/L'
カメラがR傾いているときの天体の接平面上の座標
┌ | M''' | ┐ | = | ┌ | cos(R) | sin(R) | ┐ | ┌ | M'' | ┐ | |
└ | N''' | ┘ | └ | -sin(R) | cos(R) | ┘ | └ | N'' | ┘ |
センサー上の天体の座標
x = - C * M''' + Px / 2
y = - C * N''' + Py / 2
以上によってカメラを任意の向きも向けたときの天体のセンサー上の座標を求めることができます。
次の記事では季節の星座を対象にじっさいに計算してみたいと思います。
それから画像上の座標から天体の高度と方位角を求めるとか....
(2013-04-20 21:07:10)
(2013-04-21 22:36:58 回転のときの符号の誤りを訂正しました)