Bezier曲線によるレンズ形状近似 - その6 [レンズ形状をBezierで描く]
ビットマップしかないZEMAXのレンズ形状出力のかわりに、Bezier曲線で滑らかに美しくPress Qualityでレンズ系の断面形状を描きたい、ということで始めた3次Bezier曲線による球面と非球面の近似。さくっとできてしまったので、結果をまとめておしまいにする。結果はかなり満足のいくものになった。
当然拡大してもベクタデータなので当然、次の図のように問題ない。ちなみに、レンズは空気でない硝材を挟む面をレンズの前後の面とみなした。ついでにレンズの内部と思われるところに色をつけてみた。ZEMAXのビットマップに対してPhotoshopでこんな細工をしようとすると、すごくめんどくさいけど、これならIllustratorに読み込んでレンズを選択してスウォッチでもぽちっとするだけでできる。やっぱりこうでなきゃあ、ねぇ。
ところで、この図で色がつかなくて線だけになってるのがあるけど、これは絞り面。 Illustratorに読み込んで、レンズ面を選択してコントロールポイントのハンドルを表示させたところがこれ。 レンズ面の中央(光軸上)と端以外に点はないことがわかる。つまりこれでひとつのBezier曲線であるということの証明である。前回描いたZEMAXの出力と比べてみてほしい。
ZEMAXで適当に作った単玉の両面非球面レンズのレンズ外形表示がこれ。 ちなみにベキは4〜10次の偶数次(ZEMAXのEven Aspherical)。こういうレンズを見慣れている人には第1面が球面よりもわずかに開いているのがわかると思う。
同じように読み込んでみて、Bezierで書いてみたのがこっち。 一応雰囲気は出てる。面の有効径とは別にレンズ外形を与えると、球面の場合は外形まで円弧を延長して、2次曲面を含めた非球面は、成形レンズを想定して有効径から外形までの部分は平面(直線)でつなぐようにした。こうすると(磨きではこんな形にならないので)いかにも成形レンズっぽく見える。
これも同じようにIllustratorで開いてコントロールポイントを出してみると次のようになる。 やはり光軸と端にしかコントロールポイントはない(そうしたんだもんな)。
もとのZEMAXの出力の上に重ねてみたのがこれ。 図中薄くて太いグレーの線がBezier近似非球面の線。この程度の精度では区別つかないぐらいで、全然問題ない。
一般の場合の誤差評価するのは簡単ではない、というか次数が全然違うのでベキをいじれば今回の近似の条件を満たしていたとしても、いくらでも誤差を大きくできる。
しかし、レンズとして普通に使われるような非球面は、変曲点が光軸からマージナルに向かう途中にせいぜいひとつあるぐらいで、回折限界のレンズの面や撮像用レンズの絞り付近の面などはゆったりと曲率が減っていくような面になることが多い。そう考えると光学的にはデタラメだとはいえ、Bezier曲線でもかなりのいい近似になるのではないかと思える。
具体的にさっきの非球面レンズの第1面で、もとの非球面と近似Bezier曲線との差を調べてみる。
Bezier曲線は媒介変数表示されているので比較は簡単ではないけど、近似曲線を として をtに関して解いてt(y)としてそれをPx(t)に代入すると となってこれと非球面式との差を見てみる。
まずどんな形かというと 同じ場所に書くと重なってしまうので、ちょっとずらした。青い線の方がBezier近似曲線。
この同じ光軸高さの位置での光軸方向の差をプロットすると となって、半径2.2mm、深さが約0.7mmの面で最大1μmとちょっとの差しかないということがわかる。3次のスプラインで補間したときのエラーで良く見る形と同じだけど、それは近似条件を考えれば当然である。
おほほほほ。いいじゃん、これでZEMAXのジャギーな出力とはおさらばできる。目的は十分果たせる。
3.2 TESSARのBezier曲線への変換
このファイルを読んでNSViewのサブクラス上に表示させてPDFで書き出したのがこれ。 ついでに光線も描いてみた(射出瞳位置がZEMAXファイルから計算できなかったので軸上光線のみ)。データにある硝材が古いのか、手に入るカタログデータ(Schott、Ohara、Hoya、Sumita)にないので、近い硝材に置き換えた。微妙に像点が手前に来ているように見えるのはそのせいかもしれない。当然拡大してもベクタデータなので当然、次の図のように問題ない。ちなみに、レンズは空気でない硝材を挟む面をレンズの前後の面とみなした。ついでにレンズの内部と思われるところに色をつけてみた。ZEMAXのビットマップに対してPhotoshopでこんな細工をしようとすると、すごくめんどくさいけど、これならIllustratorに読み込んでレンズを選択してスウォッチでもぽちっとするだけでできる。やっぱりこうでなきゃあ、ねぇ。
ところで、この図で色がつかなくて線だけになってるのがあるけど、これは絞り面。 Illustratorに読み込んで、レンズ面を選択してコントロールポイントのハンドルを表示させたところがこれ。 レンズ面の中央(光軸上)と端以外に点はないことがわかる。つまりこれでひとつのBezier曲線であるということの証明である。前回描いたZEMAXの出力と比べてみてほしい。
3.3 非球面の表示
もうひとつ、非球面を表示させてみる。ZEMAXで適当に作った単玉の両面非球面レンズのレンズ外形表示がこれ。 ちなみにベキは4〜10次の偶数次(ZEMAXのEven Aspherical)。こういうレンズを見慣れている人には第1面が球面よりもわずかに開いているのがわかると思う。
同じように読み込んでみて、Bezierで書いてみたのがこっち。 一応雰囲気は出てる。面の有効径とは別にレンズ外形を与えると、球面の場合は外形まで円弧を延長して、2次曲面を含めた非球面は、成形レンズを想定して有効径から外形までの部分は平面(直線)でつなぐようにした。こうすると(磨きではこんな形にならないので)いかにも成形レンズっぽく見える。
これも同じようにIllustratorで開いてコントロールポイントを出してみると次のようになる。 やはり光軸と端にしかコントロールポイントはない(そうしたんだもんな)。
もとのZEMAXの出力の上に重ねてみたのがこれ。 図中薄くて太いグレーの線がBezier近似非球面の線。この程度の精度では区別つかないぐらいで、全然問題ない。
3.4 どの程度の近似になっているのか
非球面は10次のベキがくっついているけど、OS Xで使えるbezier曲線は3次なので全然次数が足りない。では、どのくらいの近似になっているのか、というのを確かめてみる。一般の場合の誤差評価するのは簡単ではない、というか次数が全然違うのでベキをいじれば今回の近似の条件を満たしていたとしても、いくらでも誤差を大きくできる。
しかし、レンズとして普通に使われるような非球面は、変曲点が光軸からマージナルに向かう途中にせいぜいひとつあるぐらいで、回折限界のレンズの面や撮像用レンズの絞り付近の面などはゆったりと曲率が減っていくような面になることが多い。そう考えると光学的にはデタラメだとはいえ、Bezier曲線でもかなりのいい近似になるのではないかと思える。
具体的にさっきの非球面レンズの第1面で、もとの非球面と近似Bezier曲線との差を調べてみる。
Bezier曲線は媒介変数表示されているので比較は簡単ではないけど、近似曲線を として をtに関して解いてt(y)としてそれをPx(t)に代入すると となってこれと非球面式との差を見てみる。
まずどんな形かというと 同じ場所に書くと重なってしまうので、ちょっとずらした。青い線の方がBezier近似曲線。
この同じ光軸高さの位置での光軸方向の差をプロットすると となって、半径2.2mm、深さが約0.7mmの面で最大1μmとちょっとの差しかないということがわかる。3次のスプラインで補間したときのエラーで良く見る形と同じだけど、それは近似条件を考えれば当然である。
おほほほほ。いいじゃん、これでZEMAXのジャギーな出力とはおさらばできる。目的は十分果たせる。
2015-06-06 20:33
nice!(0)
コメント(0)
トラックバック(0)
コメント 0