こんな星が必ず2つあります。
宇宙は無限でどの方向にも恒星があって見た目は点であって、地球は透明で反対側も見えるという仮定の下でですが。しかし数学的には厳密に正しいことです。
四元数について解説した記事を読んでいたところ、最後にひとこと。
「球をどのように転がしても(まっすぐ転がして次に右転がすなど)最初の球と場所が変わらない点が必ず2つある。」
というものがありました。これを天文風に例えてみたのが、このタイトルです。
感覚的にはそんなバカな!前に90度転がして極軸2点は変わってないが、それを右に90度回転させたらその極の2点も場所が変わるはず、ましてや他の点も総入れ替えに違いない、と最初思いました。
で、四元数についてはWikipediaや下の物理のかぎしっぽを読んでいただくとして、
四元数(別ウィンドウで開きます)
実際のところを少し説明してみようと思います。
1.自分は北向きに立って、北極星を眺めています。3時間経ちました。相変わらず北極星は同じ方向(自分の正面、とある高度)に見えています。
もし地球が透明で南極星があれば、その星も動いていないことになるでしょう。
3時間天球が回転したとき動かない点が2つあるのです。
y’ = q1 y q1’
q1:北極星を中心にした45度の回転を表す四元数
q1’:q1の共役四元数、y:単位天球上の座標、y’:回転後の天球上の座標
北極星(と南極星)は、y’ = y を満たす座標
2.北を眺めるのに飽きたので東の空を眺めることにしました。北向きの自分が東向きになったとき、動かない星はどこにあるのでしょう。そうです天頂の星が動いてません。真下の星も動いていないので、自分が背筋を中心に回転にしたとき動かない点が2つあるのです。
y’ = q2 y q2’
q2:天頂を中心にした90度の回転を表す四元数
q2’:q2の共役四元数、y:単位天球上の座標、y’:回転後の天球上の座標
天頂(と天底)は、y’ = y を満たす座標
3.では1.の「最初の状態」から「3時間後に東向きの状態」になったとき自分から見て動いていない星はあるのでしょうか。そしてそれは存在します。
y’ = q2 q1 y q1’ q2’
(q2 q1):どこかの方向を軸にしたなんらかの回転
(q1’ q2’):(q2 q1)の共役四元数
四元数の性質から(球を転がしても球であるという性質から) y’ = y を満たす座標が必ず2つある。
「最初の状態」を魚眼レンズで図示してみます。北を向いて立っているところ。丸で囲んだ星(cTau)は右斜め後ろ上空にあります。
「3時間後に東向きの状態」を図示してみます。やはり丸で囲んだ星(cTau)はあなたから見て右斜め後ろ上空にあります。
どれだけ球を難しく回転させても(四元数ではさんでいっても)、最初の状態と最後の状態を比べたときに動いていない点が2つあることがなんとなくわかるでしょうか(つまりひとつの回転で済んでしまう)。
絶対値1の四元数とその共役四元数でサンドイッチされた単位球上の点は必ず単位球上のどこかに変換されます。天球に恒星を書いて、観測地の緯度・経度に変換する四元数q1を求め、観測時刻に対応するよう極軸で回転する四元数q2を求め、あらかじめq2q1とq1’q2’を計算しておけば、全恒星の位置はサンドイッチするだけです。
(追記)加速度センサでスマホの向きが変わったり、画面フリックで視線方向を変えたりするときも対応する四元数を求めて計算しなおします。フリックではタッチポイントとリリースポイントの座標が返るのでその回転に対応する四元数を求めて計算しますが、このときしみじみと四元数のありがたみがわかります。(追記おわり)
行列の演算よりステップが少なく実行時間が速くなります(未検証)。実際OpenGLなどのグラフィックエンジンには四元数ライブラリが含まれています。ロケットや飛行機の姿勢制御、天文アプリにとって四元数の応用が重要であることがそこはかとなくわかるでしょうか。
宇宙は無限でどの方向にも恒星があって見た目は点であって、地球は透明で反対側も見えるという仮定の下でですが。しかし数学的には厳密に正しいことです。
四元数について解説した記事を読んでいたところ、最後にひとこと。
「球をどのように転がしても(まっすぐ転がして次に右転がすなど)最初の球と場所が変わらない点が必ず2つある。」
というものがありました。これを天文風に例えてみたのが、このタイトルです。
感覚的にはそんなバカな!前に90度転がして極軸2点は変わってないが、それを右に90度回転させたらその極の2点も場所が変わるはず、ましてや他の点も総入れ替えに違いない、と最初思いました。
で、四元数についてはWikipediaや下の物理のかぎしっぽを読んでいただくとして、
四元数(別ウィンドウで開きます)
実際のところを少し説明してみようと思います。
1.自分は北向きに立って、北極星を眺めています。3時間経ちました。相変わらず北極星は同じ方向(自分の正面、とある高度)に見えています。
もし地球が透明で南極星があれば、その星も動いていないことになるでしょう。
3時間天球が回転したとき動かない点が2つあるのです。
y’ = q1 y q1’
q1:北極星を中心にした45度の回転を表す四元数
q1’:q1の共役四元数、y:単位天球上の座標、y’:回転後の天球上の座標
北極星(と南極星)は、y’ = y を満たす座標
2.北を眺めるのに飽きたので東の空を眺めることにしました。北向きの自分が東向きになったとき、動かない星はどこにあるのでしょう。そうです天頂の星が動いてません。真下の星も動いていないので、自分が背筋を中心に回転にしたとき動かない点が2つあるのです。
y’ = q2 y q2’
q2:天頂を中心にした90度の回転を表す四元数
q2’:q2の共役四元数、y:単位天球上の座標、y’:回転後の天球上の座標
天頂(と天底)は、y’ = y を満たす座標
3.では1.の「最初の状態」から「3時間後に東向きの状態」になったとき自分から見て動いていない星はあるのでしょうか。そしてそれは存在します。
y’ = q2 q1 y q1’ q2’
(q2 q1):どこかの方向を軸にしたなんらかの回転
(q1’ q2’):(q2 q1)の共役四元数
四元数の性質から(球を転がしても球であるという性質から) y’ = y を満たす座標が必ず2つある。
「最初の状態」を魚眼レンズで図示してみます。北を向いて立っているところ。丸で囲んだ星(cTau)は右斜め後ろ上空にあります。
「3時間後に東向きの状態」を図示してみます。やはり丸で囲んだ星(cTau)はあなたから見て右斜め後ろ上空にあります。
どれだけ球を難しく回転させても(四元数ではさんでいっても)、最初の状態と最後の状態を比べたときに動いていない点が2つあることがなんとなくわかるでしょうか(つまりひとつの回転で済んでしまう)。
絶対値1の四元数とその共役四元数でサンドイッチされた単位球上の点は必ず単位球上のどこかに変換されます。天球に恒星を書いて、観測地の緯度・経度に変換する四元数q1を求め、観測時刻に対応するよう極軸で回転する四元数q2を求め、あらかじめq2q1とq1’q2’を計算しておけば、全恒星の位置はサンドイッチするだけです。
(追記)加速度センサでスマホの向きが変わったり、画面フリックで視線方向を変えたりするときも対応する四元数を求めて計算しなおします。フリックではタッチポイントとリリースポイントの座標が返るのでその回転に対応する四元数を求めて計算しますが、このときしみじみと四元数のありがたみがわかります。(追記おわり)
行列の演算よりステップが少なく実行時間が速くなります(未検証)。実際OpenGLなどのグラフィックエンジンには四元数ライブラリが含まれています。ロケットや飛行機の姿勢制御、天文アプリにとって四元数の応用が重要であることがそこはかとなくわかるでしょうか。

