こんにちは。光学、光でのお困りごとがありましたか?
光ラーニングは、「光学」をテーマに様々な情報を発信する光源を目指しています。情報源はインターネットの公開情報と、筆者の多少の知識と経験です。 このページでは、Zemax OpticStudioシーケンシャルモードの座標ブレーク(Coordinate Break)面にある、順序フラグ(Order)について説明します。
結論
- 座標ブレークの順序フラグがゼロの時はディセンタ→Xティルト→Yティルト→Zティルト(→厚み)で、ゼロ以外の場合はZティルト→Yティルト→Xティルト→ディセンタ(→厚み)の順番で座標軸の調整がかかります。
- 順序フラグ0の座標ブレークで調整した座標軸を元に戻すには、順序フラグ1の座標ブレークで戻す必要があります。順序フラグ0の座標ブレークでは座標軸が元に戻りません。
- 別の言い方で、順序フラグが0のときが内因性回転が実行され、順序フラグが1のとき外因性回転が実行されます。
このページの使い方
このページで参考にした技術記事(ナレッジベース)は、Rotation Matrix and Tilt About X/Y/Z in OpticStudio (英語) です。日本語版もありますが内容は英語版の方が充実しているようです。
技術記事(ナレッジベース)は、OpticStudioを深く知るうえで非常に有用ですが、有用な記事ほど長くなってしまいます。本ページに書かれている内容をざっと把握して、「この記事に知りたいことが書いてある!」と感じることができれば、ぜひ記事にアクセスして詳細を確認してほしいです。
座標ブレークに関する基礎的な内容は、座標ブレーク(Coordinate Break)ってなに? を参照してください。
ディセンタとティルトの順番は重要
ヘルプファイルの座標ブレークの説明で、太字になっている1文が「順番の重要性」です。座標ブレーク面のXYZ座標そのものを制御するパラメータは5つで、XYディセンタとXYZティルトです。そこに順序フラグを加えた、6つのパラメータで次の光学面の座標が決まります。
座標ブレークは、既存の座標系に対してまずはディセンタを実行します。ディセンタについては、X軸方向とY軸方向のどちらを先に実行するかは結果に影響しません。その次に、ティルトを実行します。ティルトそのものについては後述します。
ここで、「ディセンタ群が先でティルト群はそのあと」の順番は重要です。例えば、先にディセンタした後にZティルトするのと、先にZティルトしてからディセンタするとでは、得られる座標系が異なります。下図の通り、XYディセンタの赤矢印の向きが異なるためです。
順番フラグでは、ティルトの順番だけでなく、ディセンタとティルトの順番も反転します。つまり、順番フラグが1のとき、まずティルトが実行されてからディセンタが実行されます。
座標ブレークは内因性回転(Intrinsic Rotation)を使う
ここからは、3軸のティルトと順序フラグに着目します。今回参照している技術記事で、「OpticStudioの座標ブレークは内因性回転の規則に従う」とあります。特に、デフォルト(順序フラグが0)のとき、座標ブレークによる3つのティルトパラメータはXティルト→Yティルト→Zティルトの順番で座標系を回転させます。そのプロセスは以下の通りです。
① 初期(第1形態)の座標系のX軸中心にティルトして、第2形態の座標系を決める
② 第2形態の座標系のY軸中心にティルトして、第3形態の座標系を決める
③ 第3形態の座標系のZ軸中心にティルトして、最終(第4形態)の座標を決める
概念図は、こちらの Wikipedia のページが分かりやすいと思いました。なお、この図ではZティルト→Xティルト→Zティルトの例となっています。最初のZティルトΦでX0がX1に移動していて、次のXティルトθはX1を中心に実行されています。
順序フラグの考え方2つ
座標ブレークのデフォルト設定の順序フラグ0は、X→Y→Zの順に更新された座標系に対してティルトさせる、内因性回転を実行します。これに対して、順序フラグに0以外(一般的には1)を入力した場合、何が切り替わるでしょうか。
考え方は2つあります。1つは読んで字のごとく”ティルトする軸の順番”を切り替えます。もう1つは、”内因性回転を外因性回転”に切り替えると考えることもできます。
内因性回転で回転させる軸の順序を反転
順序フラグが0以外のとき、座標ブレークはティルトの順番がX→Y→Zから反転して、Z→Y→Xになります。どちらも内因性回転で実行されます。上の①~③のプロセスで設定した座標軸を、順序フラグ1の座標ブレークで元に戻す場合、以下のプロセスになります。
④ 最終(第4形態)の座標系のZ軸を中心にZティルトを元に戻して、第3形態になる。
⑤ 第3形態の座標系のY軸を中心にYティルトを元に戻して、第2形態になる。
⑥ 第2形態の座標系のX軸を中心にZティルトを元に戻して、初期(第1形態)になる。
内因性回転を外因性回転に切り替え
順序フラグが0以外のときのもう一つの考え方は、外因性回転(Intrinsic Rotation)を実行するように切り替わることです。
まず、外因性回転について説明します。内因性回転との違いは、複数回のティルトを実行するときの回転軸の取り方です。外因性回転の場合、複数のティルトが実行されるときの回転中心の軸が、元の座標系で固定されます。そのプロセスは以下の通りです。
① 初期(第1形態)の座標系のX軸中心にティルトして、第2形態の座標系を決める
② 初期(第1形態)の座標系のY軸中心にティルトして、第3形態の座標系を決める
③ 初期(第1形態)の座標系のZ軸中心にティルトして、最終(第4形態)の座標を決める
概念図は、やはりWikipediaのページが分かりやすいです。最初のZティルトでX軸が動いていても、次のXティルトは元のX軸中心に実行されています。
その関係性は面白く、内因性回転と外因性回転でティルトの順番を逆転させると最終的に得られる座標系が等しくなります。内因性ティルトでXティルト→Yティルト→Zティルトを実行して得られる座標系は、外因性ティルトでZティルト→Yティルト→Xティルトを実行して得られる座標系と同じになります。
上の例で示した内因性回転と外因性回転の例は、ティルトの順番を入れ替えることで最終的に得られる座標系が同じになることを示した図でした。
まずは(内因性回転で)ティルトの順番が逆転すると覚えておけばOK
外因性回転を持ち出したことで、少し混乱してしまうかもしれません。筆者個人の考えとしては、ひとまず順序フラグについて覚えておくべきことは、以下の2点です。
・ 座標ブレークで変化させた座標系を戻す場合は、順序フラグを1にする
・ 順序フラグを1にすると、ティルトの順番が逆転するので、元の座標系に戻せる。
特に手動で座標ブレークを設定するとき、順序フラグの入力忘れてしまって、次の光学面の座標が意図しない方向を向くミスが発生します。これを防ぐためには、座標ブレークで光学部品のティルトや反射ミラーの挿入を行う場合は、OpticStudioに搭載されたツールの使用を推奨しています。
順序フラグを使わずに座標系を正しく戻す設定
順序フラグの概念がどうしても性に合わない、しっくりこない場合、順序フラグを使わずに座標を元に戻す方法を紹介します。筆者も過去、この方法を使っていました。今は少し座標ブレークに関する理解も深まったので、この方法を用いることは少ないです。
その方法は、1つの座標ブレークでティルトさせる軸を1つだけにして、座標を戻す際も1つの座標ブレークでティルトさせる軸を1つだけにします。ティルトさせる軸の順番は、レンズデータエディタの行の順番で反転させます。
例えば、Xティルト→Zティルト→Yティルトの順番で3行の座標ブレークで1軸ずつ傾けた場合、元に戻すときは、同じく3行の座標ブレークでYティルト→Zティルト→Xティルトの順番で座標を動かします。
当時は、どのティルトをどの座標ブレークで元に戻しているか明確にわかって理解しやすいと感じていました。デメリットは、レンズデータエディタが座標ブレークだらけになることです。
まとめ
ここでは、Zemaxのホームページからアクセスできる公開記事、Rotation Matrix and Tilt About X/Y/Z in OpticStudio (英語) (日本語版もあります)を参照しながら、座標ブレークの重要パラメータである順序フラグについて説明しました。順序フラグには、ティルトの軸の順番と、ディセンタとティルトの順番を反転させる働きがあり、座標を正しく元に戻すのに必要です。ティルトの順番の反転と別の言い方で、内因性回転を外因性回転に切り替える、という表現もできます。
<参考>
[1] Wikipedia, Davenport chained rotation, https://en.wikipedia.org/wiki/Davenport_chained_rotations#Conversion_to_extrinsic_rotations
コメント