光学圆锥面的描述
在光学设计软件中,一个光学表面通常由其矢高z和径向距离r描述:
z=1+1−(1+k)c2r2cr2
对于笛卡尔系来说,光学表面可以描述为
x=1+1−(1+k)c2y2cy2
建立坐标系
以圆锥面的矢高方程对应的笛卡尔系进行建立模型,

计算光线交点
设入射光线方程为ax+by+c=0
圆锥面面型方程为x=1+1−(1+k)c2y2cy2
联立可以得到解析解如下所示。
⎩⎨⎧x=1−c2(k+1)(−cm2+ck+cm(−c2k−c2)n2−2cmn+1−cm2+ck+c(−ck−c)n+cm2+ck+cm)2+1c(−cm2+ck+cm(−c2k−c2)n2−2cmn+1−cm2+ck+c(−ck−c)n+cm2+ck+cm)2y=−cm2+ck+cm(−c2k−c2)n2−2cmn+1−cm2+ck+c(−ck−c)n+cm2+ck+cm⎩⎨⎧x=1−c2(k+1)(cm2+ck+cm(−c2k−c2)n2−2cmn+1+cm2+ck+c(ck+c)n+cm2+ck+cm)2+1c(cm2+ck+cm(−c2k−c2)n2−2cmn+1+cm2+ck+c(ck+c)n+cm2+ck+cm)2y=cm2+ck+cm(−c2k−c2)n2−2cmn+1+cm2+ck+c(ck+c)n+cm2+ck+cm
1 2 3 4 5
| x=(c*(-(m*sqrt((-c^2*k-c^2)*n^2-2*c*m*n+1))/(c*m^2+c*k+c)-((-c*k-c)*n)/(c*m^2+c*k+c)+m/(c*m^2+c*k+c))^2)/(sqrt(1-c^2*(k+1)*(-(m*sqrt((-c^2*k-c^2)*n^2-2*c*m*n+1))/(c*m^2+c*k+c)-((-c*k-c)*n)/(c*m^2+c*k+c)+m/(c*m^2+c*k+c))^2)+1) y=-(m*sqrt((-c^2*k-c^2)*n^2-2*c*m*n+1))/(c*m^2+c*k+c)-((-c*k-c)*n)/(c*m^2+c*k+c)+m/(c*m^2+c*k+c)
x=(c*((m*sqrt((-c^2*k-c^2)*n^2-2*c*m*n+1))/(c*m^2+c*k+c)+((c*k+c)*n)/(c*m^2+c*k+c)+m/(c*m^2+c*k+c))^2)/(sqrt(1-c^2*(k+1)*((m*sqrt((-c^2*k-c^2)*n^2-2*c*m*n+1))/(c*m^2+c*k+c)+((c*k+c)*n)/(c*m^2+c*k+c)+m/(c*m^2+c*k+c))^2)+1) y=(m*sqrt((-c^2*k-c^2)*n^2-2*c*m*n+1))/(c*m^2+c*k+c)+((c*k+c)*n)/(c*m^2+c*k+c)+m/(c*m^2+c*k+c)
|
从而得到交点坐标。如果无实数解或者有两个实数解,则判定为错误,按照球面代码里未相交的逻辑处理。
求解入射角和反射角
入射光线的方向单位向量可以表示为v=(A2+B2−B,A2+B2A)。
首先求圆锥面的切线方程,先对圆锥面求导,得到y点切线的斜率的表达式。
r(1−r2(1−k)y2+1)2y+r31−r2(1−k)y2(1−r2(1−k)y2+1)2(1−k)y3
因此可以得到,法线的斜率为
−r(1−r2(1−k)y2+1)2y+r31−r2(1−k)y2(1−r2(1−k)y2+1)2(1−k)y31
然后将交点坐标代入y=kx+b中,求得b的值,从而得到法线的直线方程。法线单位向量e方向的计算方法为,e和v的夹角要求为钝角。
使用向量形式的反射定律f=v−2(v⋅e)e。得到反射光线。
进行坐标变换
由于离轴反射系统在全局上对圆锥面方程进行解析表达比较困难,因此采用对每个局部坐标系进行计算,得出交点和反射光线,然后在进行矩阵变换的方式得到全局坐标下的入射点和反射光线。

假设X′O′Y′存在一个点P′,设OX和OY的夹角为θ,规定正方向为OX向O‘Y’顺时针旋转,P点坐标可以表示为x=x′cos(θ)+y′sin(θ)+x0,y=y′cos(θ)−x′sin(θ)+y0。存在一条直线y=mx+n,坐标变换后的表达式为
y=(msin(θ)+cos(θ))(mxcos(θ)−mx0cos(θ)+my0sin(θ)+nsin2(θ)+ncos2(θ)−xsin(θ)+x0sin(θ)+y0cos(θ))