座標変換

そんな過度な憧れを持つような用語ではないのだよ・・・。

[前の記事へ]  [解析力学の目次へ]  [次の記事へ]


 科学に憧れている段階の初心者にとっては、「座標変換」という言葉が非常にかっこいいものだと感じられるらしい。そういう人が「座標変換により力が生じる」などと聞けばもはやSFの世界の話と区別が付かなくなるのだろう。

 今回の記事ではそのような幻想を簡単に打ち砕いて見せるのが目的である。


デカルト座標

 我々は物体の位置を座標で測る。どこかに基準点を決めて、その位置を 0 とする。これを「原点」と呼ぶ。そして、原点から、縦、横、高さの方向に線を伸ばしてやり、その線の上に原点からの距離を測る目盛りを書く。

 真っ直ぐな線ばかりで空間を埋め尽くしてやれば、ジャングルジムのようになるだろう。空間には目盛りを振った無数の細い線が縦横無尽に引かれているのだと想像して欲しい。慣れてくればそんなに多くの線を書かなくてもイメージできるようになるので、普通は、原点を通る 3 つの線にまで省略する。このようにして、縦に幾つ、横に幾つ、高さが幾つという、3 つの数字の組み合わせによって、物体の位置を決める事が出来る。

 これを「デカルト座標」または「直交直線座標」と呼ぶ。哲学者デカルトがベッドに横になっていたときに、クモが糸を垂らして空中を移動しているのを見て思いついたやり方であるという逸話がある。

 デカルトはフランス人だが、英語での綴りは「Des Cartes」なので、英語圏ではデカルト座標の事を「Cartesian 座標」と呼ぶ。そのため、海外留学経験の長い大学の先生などは、デカルト座標のことを「カーテシャン」と呼ぶことが割と多い。大学に入学したばかりの学生たちは「デカルト」と「カーテシャン」が同じことを意味しているのだということに徐々に気付いて行くのである。


その他の座標

 さて、空間に線を引いて位置を決めるやり方は、「デカルト座標」だけではない。横軸に対して、縦軸を斜めに引いてもいい。これを「斜交直線座標」と呼ぶ。おかしなやり方だと思うかも知れないが、そんなに珍しいものではなく、まぁ、近い内に、普通に出てくるだろうと予告しておく。

 他にも、原点からの直線距離と、原点から見たある方向からどれくらいズレているかを角度で表す「極座標」というやり方もある。極座標は、平面の場合には、原点を中心に同心円を幾つも描き、また、原点から放射状に直線を幾つも引く事で、角度と距離を知るための補助に出来る。この無数の円と直線は直交するだろう。よって、極座標は「直交曲線座標」の一種だと言える。

 直交しない曲線座標もある。座標と言っても色々な方法が採用できるわけだ。場合によっては特殊な座標を選んだ方が便利になる事もあるのだが、通常の場合、最も簡単なのはやはりデカルト座標であろう。

 ところで、面上の一点を示すためには 2 つの数字の組み合わせが必要であるし、空間内の一点を特定するためには 3 つの数字の組み合わせが必要になる。どんな座標を使って表しても、このことは変わらない。「当たり前」だと思うことほど説明が難しいものなので、このことについては私は説明を省略させてもらうが、実は大事なことである。平面は 2 次元だとか、空間は 3 次元だとか言うのは、この組み合わせの要素の個数のことを言っているのである。


座標変換の意味

 このように座標の描き方にも多数のやり方があるとすると、ある人が「ある一点」を指し示すためにある数字の組み合わせで表現したとしても、別の座標を使っている人にとっては、その同じ点の位置を別の数字の組み合わせで言い表すことになることだろう。

 よって、ある数字の組み合わせで表される点が、別の座標を採用した人にとってはどんな数字の組み合わせで表されるべきかという、翻訳作業が必要になる。これが「座標変換」である。さて、このような夢のない現実的な説明を聞いても、まだかっこいいイメージが持てるだろうか?

 面倒臭そうだと思うかも知れないが、そんな難しいものではない。例えば、極座標からデカルト座標への変換は良く使うので具体的に書いておこう。2 次元の場合には次のような式に当てはめてやればいい。

\[ \begin{align*} x &= r \cos \theta \\ y &= r \sin \theta \end{align*} \]
 逆に変換したければ、これよりは少々面倒であるが、
\[ \begin{align*} r &= \sqrt{x^2 + y^2} \\ \theta &= \tan^{-1}\frac{y}{x} \end{align*} \]
のように計算できる。3 次元の場合には、
\[ \begin{align*} x &= r \sin \theta \cos \phi \\ y &= r \sin \theta \sin \phi \\ z &= r \cos \theta \end{align*} \]
であり、逆に計算したければ、
\[ \begin{align*} r &= \sqrt{x^2 + y^2 + z^2} \\ \theta &= \tan^{-1} \frac{\sqrt{x^2+y^2}}{z} \\ \phi &= \tan^{-1} \frac{y}{x} \end{align*} \]
となる。


座標変換はごく身近にある

 さて、誰もがみんなデカルト座標だけを使っていれば、座標変換なんて面倒な翻訳作業は必要なくなるのではないかと思われるかも知れないが、そうは行かない。

 たとえ皆がデカルト座標を使ったとしても、どこを原点に選ぶかは各人の自由である。その選択によって同じ点を表すにも数字が変わって来るだろうから、お互いに変換の必要が出てくる。

 動くものを基準にして座標を選ぶ人もいるだろう。「そんな厄介な座標を使うなよ」と思うかも知れないが、もし列車の車内アナウンスが次のようになったらどうだろう。

 「食堂車は東京駅から 239.875 km の地点に先ほどまでございました〜。是非ご利用ください。」

 え!?新幹線の食堂車ってなくなったの?いつの間に?いつか大金持ちになったら利用しようと憧れてたのに・・・。

 まぁとにかく、移動している人にとっては、自分と同じように移動しているものを基準にして位置を測った方が便利なことがあり、それは普通に行われていることだということだ。

 それだけではない。ある人が考えるデカルト座標の向きと、別の人が思い描いているデカルト座標の向きが違う場合もある。これも「回転変換」をして、互いに翻訳してやらないといけないことになる。

 パソコンでフライトシミュレーターなんかのゲームを作るときには、地上の物体や他の飛行物体の位置を、動かない地面を基準にした座標で表しておいて、それらを操縦席の窓から見たときにどの位置に見えるかという座標変換をしてやる事が必要になる。

 地面を基準にした座標で\( ( x, y, z ) \)と表される位置表示を、操縦席の窓から見た座標\( ( x', y', z' ) \)に変換したい時には、まず\( z \)軸の周りに\( \theta \)だけ回転することで、\( x \)軸と\( y \)軸の向きを変更してやることになるが、

\[ \begin{align*} x' &= x \cos \theta + y \sin \theta \\ y' &= -x \sin \theta + y \cos \theta \\ z' &= z \end{align*} \]
というような計算をすればよい。ちょっと曖昧な言い方になっているのは、回転角\( \theta \)をどっち回りにするかが、その計算の目的によって違ってくるからだ。上に示した式は操縦席が\( x \)軸から\( y \)軸の方へ向かって回転した後の状態を示している。つまり私は今、上方を\( z \)軸、奥行きを\( y \)軸、視界の右向きを\( x \)軸と想定しているので、自身が左向きに回転した格好だ。

 この後、同じように\( x \)軸を回転させることで操縦席の上下角を調整してやり、さらに\( y \)軸を回転させて左右の傾きを調整してやる変換を続けてやれば、どんな姿勢を向いた場合にでも対応できるだろう。軸を回転させる順序によって結果が全く違ってしまうので、注意が必要だ。

 しかしこの方式を使って計算したプログラムは非常に効率が悪くて、色々と不都合なことも多いので、最近のまともな 3D 表示系のゲームでは「クォータニオン(4元数)」という高度な数学を応用した手法が用いられている。近頃はその理論的な内容を詳しく知らなくてもこの技術を利用できる環境が整っており、かつて涙目になって洋書を調べまくった我々の世代からすると、うらやましい限りである。これは物理学とは離れた技術的な話になるので、これくらいでやめておこう。


右手系と左手系

 デカルト座標の使用にはもう少し注意が必要だ。高校までは余り注意されない事だとは思うのだが、もう少し本格的に学び始めると、\( x \)\( y \)\( z \)の 3 軸の方向の取り方に決まりがあることを知らされることになる。

 つまり、\( x \)軸と\( y \)軸を描いた後、\( z \)軸の方向は、\( x \)軸から\( y \)軸へと 90 度回転したときに、右ねじが進む方向に向かうように描くのが「業界標準」となっているのである。このような座標の取り方を「右手系」と呼ぶ。高校の物理で「フレミングの左手の法則」というのを学ぶが、それと同じように中指と人差し指と親指をそれぞれ直角に向けた時と同じだというイメージだ。

 よく考える人はここで、おかしいじゃないか、と思うはずだ。右手を使って同じ形を作っても、同じ事を表せるはずである。どの指がどの軸を表すかを決めておかないと、右手か左手かなんてことには本質的に違いがない。だから、ここでは右手で中指が\( x \)軸、親指が\( y \)軸を表すとした時、人差し指の方向が\( z \)軸を表すのだ、という説明をしておこう。

 右手か左手かという呼び名は単に慣例に過ぎないものであるから、あまり深く悩むところではない。伝統として受け入れて欲しい。ところで、右手系という名前がわざわざ付いているということは、やはり左手系もあるということである。

 ここで私自身の経験を話そう。高校までは\( x \)軸を横に、\( y \)軸を縦に引くことに慣れているので、もう一つ追加された\( z \)軸は紙の奥に向かって描きたくなったものだ。しかしこれは「左手系」と言って、標準的なやり方ではない。この場合、紙の手前に向かって\( z \)軸を取れば右手系になるのである。

 \( z \)軸に高さ的な意味を持たせたい場合には、\( x \)軸を横に、\( z \)軸を縦に、そして\( y \)軸を奥に向かって描くようにすれば、これが標準的な「右手系」である。

 「こんなつまらぬルールに従うなんてご免だ、好きなように描かせてくれればいいじゃないか」と初めは思うわけだが、このルールにはちゃんと意味がある。つまり、現代の物理法則は、このような座標の取り方に合うように作られているのである。外積のルールなんかがそれだ。だからこの方法に合わせておかないと無用な混乱が生まれることになるのである。

 別に自然がこの座標のルールを選んだわけではない。これは人間がそう決めただけのルールに過ぎず、それを使って物理法則が記述されているというだけのことだ。本当はどちらでもいいのである。しかし、「\( x \)から\( y \)へ回した時に\( z \)の方向」ってのは分かり易いだろう?理由もなく今さらこの慣例に逆らうのは非効率であり、愚かなことだ。

 しかし左手系の使用は禁止されているわけではなく、たまには使った方が便利な場面もあるだろう。右手系と左手系は互いに鏡に映したような関係になっており、お互いの変換は回転変換だけでは対応できない。右手系の座標軸をぐるっと回しても決して左手系にはならないからだ。こういう場合は「鏡像変換」を使う。別に難しい変換ではなくて、\( x \)\( y \)\( z \)のどれか一つの成分だけにマイナスを掛けてやればいいのである。


 おおっと、気が付いたら予想していたより説明の分量が多くなってしまったな。しかしこれで基本は十分話すことが出来たと思う。ひとまずここで区切る事にしよう。

 次回は「座標変換によって力が生じる」ことについて説明したい。空想めいた憧れを現実へと引きずり降ろしてやろうではないか。