レンズを置いてみる6
凸凹凸のトリプレットを再現できないかなと試行しているが、うまくいっていない。
トリプレットの前玉になっている平凸レンズを単体でおいてみると、下記のように歪曲が少なくなる。ただし、焦点距離は両凸レンズの2倍になる。
#macro lens_plano_convex(lens_radius,lens_curv1,lens_width,lens_res,lens_ior,position)
#local lens_cnt = (lens_radius / lens_res);
#local lens_x = 0.0;
#local lens_y = 0.0;
#local lens_offset1 = sqrt(pow(lens_curv1,2) - pow(lens_radius,2));
#local cnt = 0;
lathe{ linear_spline
(lens_cnt + 2),
#while(cnt < lens_cnt)
#if( cnt < (lens_radius/lens_res))
#local lens_y = sqrt(pow(lens_curv1,2) - pow(lens_x,2)) - lens_offset1 + (lens_width/2);
<lens_x, lens_y>,
//#debug concat("A ",str(cnt,0,0)," ",str(lens_x,0,5)," ",str(lens_y,0,5),"\n")
#local lens_x = lens_x + lens_res;
#end
#local cnt = cnt + 1;
#end
#local lens_y = lens_width;
<lens_x, lens_y>,
//#debug concat("B ",str(cnt,0,0)," ",str(lens_x,0,5)," ",str(lens_y,0,5),"\n")
<0, 0>
//#debug concat("B ",str(cnt,0,0)," ",str(lens_x,0,5)," ",str(lens_y,0,5),"\n")
pigment{color rgb<1,1,1> filter 1.0} interior{ior lens_ior}
rotate x*90
translate position
photons{target}
}
#end
#local lens_cnt = (lens_radius / lens_res);
#local lens_x = 0.0;
#local lens_y = 0.0;
#local lens_offset1 = sqrt(pow(lens_curv1,2) - pow(lens_radius,2));
#local cnt = 0;
lathe{ linear_spline
(lens_cnt + 2),
#while(cnt < lens_cnt)
#if( cnt < (lens_radius/lens_res))
#local lens_y = sqrt(pow(lens_curv1,2) - pow(lens_x,2)) - lens_offset1 + (lens_width/2);
<lens_x, lens_y>,
//#debug concat("A ",str(cnt,0,0)," ",str(lens_x,0,5)," ",str(lens_y,0,5),"\n")
#local lens_x = lens_x + lens_res;
#end
#local cnt = cnt + 1;
#end
#local lens_y = lens_width;
<lens_x, lens_y>,
//#debug concat("B ",str(cnt,0,0)," ",str(lens_x,0,5)," ",str(lens_y,0,5),"\n")
<0, 0>
//#debug concat("B ",str(cnt,0,0)," ",str(lens_x,0,5)," ",str(lens_y,0,5),"\n")
pigment{color rgb<1,1,1> filter 1.0} interior{ior lens_ior}
rotate x*90
translate position
photons{target}
}
#end
コメント
コメントを投稿