Bezier曲線によるレンズ形状近似 - その3 [レンズ形状をBezierで描く]
突然始めた、Bezier曲線によるレンズの断面形状近似。さくっとあげないとまただらだらしてわからなくなってしまう。一気に計算しよう。今日のところがキモになる、はず。
あとは終点での傾きと2回微分を一致させる。 一般に2次元の曲線が媒介変数で表示されたとき、つまり のとき傾きdy/dxは である。ただし煩わしいので などと書いた。
二階微分d2y/dx2は となる。もちろんどちらの微分も、xとyのtに関する微分が0になったりするような場合を除くことにする。というか、そんな「アキレスと亀」の収束点みたいなのがある媒介変数を使うのは最初からやめたほうがいい、なんとでも書けるんだから。
終点でのBezier曲線の傾きはわざわざ微分するまでもなく(もちろん微分しても同じ結果だけど) である。
2回微分はめんどくさいけど Bx0=0、By0=0、Bx1=0とすると(最後のだけが効いて) こんなの。あってると思うんだけど。
球面のほうを後から計算するとして、光軸での曲率はηで、一階微分の値をs′h、二階微分の値をs"hとして連立すると また、終点の座標が一致するので とする。ただし球面の終点の座標を{sh,h}と書いた。
最後の式を除いてBx2、By2を解いてBy1の式に書くのは簡単で、 となる。
これを最後の式に代入して整理すると となる。By1に関する4次の方程式で、なかなか残念な形である。4次なので代数的に解くことはできるけど、元の式が比較的簡単なわりに面倒な場合分けも必要で、結構な計算量になる。
ということで、厳密解が欲しいわけではないし、目で見て誤差が大きくなければいいので、直接解は諦めてNewton法などで収束演算したほうがずっと簡単で、計算量も少なくすることができる。また、この4次方程式の解はB0とB3で決まるAABB(座標軸に平行な長方形のバウンディングボックス)の近傍から大きく離れることはない(近似したい面に変曲点がなければAABB内にあるはずである)ので、Newton法にとっても素性の良いすなおな問題のはずである。
ということでちょっとだけ数値計算に優しい形に変形しておくと ぐらいの感じか。
Newton法で解を得るために式-27のBy1に関する微分を計算しておくと というような感じ。
球面の方はまじめに微分して また、2回微分は などという簡単な式になる。 ほんとかな。ディメンジョンはあってるけどな。
あとは終点での傾きと2回微分を一致させる。 一般に2次元の曲線が媒介変数で表示されたとき、つまり のとき傾きdy/dxは である。ただし煩わしいので などと書いた。
二階微分d2y/dx2は となる。もちろんどちらの微分も、xとyのtに関する微分が0になったりするような場合を除くことにする。というか、そんな「アキレスと亀」の収束点みたいなのがある媒介変数を使うのは最初からやめたほうがいい、なんとでも書けるんだから。
終点でのBezier曲線の傾きはわざわざ微分するまでもなく(もちろん微分しても同じ結果だけど) である。
2回微分はめんどくさいけど Bx0=0、By0=0、Bx1=0とすると(最後のだけが効いて) こんなの。あってると思うんだけど。
球面のほうを後から計算するとして、光軸での曲率はηで、一階微分の値をs′h、二階微分の値をs"hとして連立すると また、終点の座標が一致するので とする。ただし球面の終点の座標を{sh,h}と書いた。
最後の式を除いてBx2、By2を解いてBy1の式に書くのは簡単で、 となる。
これを最後の式に代入して整理すると となる。By1に関する4次の方程式で、なかなか残念な形である。4次なので代数的に解くことはできるけど、元の式が比較的簡単なわりに面倒な場合分けも必要で、結構な計算量になる。
ということで、厳密解が欲しいわけではないし、目で見て誤差が大きくなければいいので、直接解は諦めてNewton法などで収束演算したほうがずっと簡単で、計算量も少なくすることができる。また、この4次方程式の解はB0とB3で決まるAABB(座標軸に平行な長方形のバウンディングボックス)の近傍から大きく離れることはない(近似したい面に変曲点がなければAABB内にあるはずである)ので、Newton法にとっても素性の良いすなおな問題のはずである。
ということでちょっとだけ数値計算に優しい形に変形しておくと ぐらいの感じか。
Newton法で解を得るために式-27のBy1に関する微分を計算しておくと というような感じ。
球面の方はまじめに微分して また、2回微分は などという簡単な式になる。 ほんとかな。ディメンジョンはあってるけどな。
2015-05-27 21:20
nice!(0)
コメント(0)
トラックバック(0)
コメント 0