光学圆锥面的描述

在光学设计软件中,一个光学表面通常由其矢高z径向距离r描述:

z=cr21+1(1+k)c2r2z=\frac{cr^2}{1+\sqrt{1-(1+k)c^2r^2}}

对于笛卡尔系来说,光学表面可以描述为

x=cy21+1(1+k)c2y2x=\frac{cy^2}{1+\sqrt{1-(1+k)c^2y^2}}

建立坐标系

以圆锥面的矢高方程对应的笛卡尔系进行建立模型,

PixPin_2026-03-28_23-45-38

计算光线交点

设入射光线方程为ax+by+c=0ax+by+c = 0

圆锥面面型方程为x=cy21+1(1+k)c2y2x=\frac{cy^2}{1+\sqrt{1-(1+k)c^2y^2}}

联立可以得到解析解如下所示。

{x=c(m(c2kc2)n22cmn+1cm2+ck+c(ckc)ncm2+ck+c+mcm2+ck+c)21c2(k+1)(m(c2kc2)n22cmn+1cm2+ck+c(ckc)ncm2+ck+c+mcm2+ck+c)2+1y=m(c2kc2)n22cmn+1cm2+ck+c(ckc)ncm2+ck+c+mcm2+ck+c{x=c(m(c2kc2)n22cmn+1cm2+ck+c+(ck+c)ncm2+ck+c+mcm2+ck+c)21c2(k+1)(m(c2kc2)n22cmn+1cm2+ck+c+(ck+c)ncm2+ck+c+mcm2+ck+c)2+1y=m(c2kc2)n22cmn+1cm2+ck+c+(ck+c)ncm2+ck+c+mcm2+ck+c\begin{align} \left\{\begin{gathered}x=\dfrac{c\,\left(-\dfrac{m\,\sqrt{\left(-c^{2}\,k-c^{2}\right)\,n^{2}-2\,c\,m\,n+1}}{c\,m^{2}+c\,k+c}-\dfrac{\left(-c\,k-c\right)\,n}{c\,m^{2}+c\,k+c}+\dfrac{m}{c\,m^{2}+c\,k+c}\right)^{2}}{\sqrt{1-c^{2}\,\left(k+1\right)\,\left(-\dfrac{m\,\sqrt{\left(-c^{2}\,k-c^{2}\right)\,n^{2}-2\,c\,m\,n+1}}{c\,m^{2}+c\,k+c}-\dfrac{\left(-c\,k-c\right)\,n}{c\,m^{2}+c\,k+c}+\dfrac{m}{c\,m^{2}+c\,k+c}\right)^{2}}+1}\\y=-\dfrac{m\,\sqrt{\left(-c^{2}\,k-c^{2}\right)\,n^{2}-2\,c\,m\,n+1}}{c\,m^{2}+c\,k+c}-\dfrac{\left(-c\,k-c\right)\,n}{c\,m^{2}+c\,k+c}+\dfrac{m}{c\,m^{2}+c\,k+c}\end{gathered}\right. \\ \left\{\begin{gathered}x=\dfrac{c\,\left(\dfrac{m\,\sqrt{\left(-c^{2}\,k-c^{2}\right)\,n^{2}-2\,c\,m\,n+1}}{c\,m^{2}+c\,k+c}+\dfrac{\left(c\,k+c\right)\,n}{c\,m^{2}+c\,k+c}+\dfrac{m}{c\,m^{2}+c\,k+c}\right)^{2}}{\sqrt{1-c^{2}\,\left(k+1\right)\,\left(\dfrac{m\,\sqrt{\left(-c^{2}\,k-c^{2}\right)\,n^{2}-2\,c\,m\,n+1}}{c\,m^{2}+c\,k+c}+\dfrac{\left(c\,k+c\right)\,n}{c\,m^{2}+c\,k+c}+\dfrac{m}{c\,m^{2}+c\,k+c}\right)^{2}}+1}\\y=\dfrac{m\,\sqrt{\left(-c^{2}\,k-c^{2}\right)\,n^{2}-2\,c\,m\,n+1}}{c\,m^{2}+c\,k+c}+\dfrac{\left(c\,k+c\right)\,n}{c\,m^{2}+c\,k+c}+\dfrac{m}{c\,m^{2}+c\,k+c}\end{gathered}\right. \end{align}

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=(BA2+B2,AA2+B2)\vec v= \left ( \dfrac{-B}{\sqrt{A^2+B^2}},\dfrac{A}{\sqrt{A^2+B^2}}\right )

首先求圆锥面的切线方程,先对圆锥面求导,得到y点切线的斜率的表达式。

(2yr(1(1k)y2r2+1)+(1k)y3r31(1k)y2r2(1(1k)y2r2+1)2)\left(\dfrac{2\,y}{r\,\left(\sqrt{1-\dfrac{\left(1-k\right)\,{y}^{2}}{ {r}^{2} }}+1\right)}+\dfrac{\left(1-k\right)\,{y}^{3}}{ {r}^{3}\,\sqrt{1-\dfrac{\left(1-k\right)\,{y}^{2}}{ {r}^{2} }}\,\left({\sqrt{1-\dfrac{\left(1-k\right)\,{y}^{2}}{ {r}^{2} }}+1}\right)^{2} }\right)

因此可以得到,法线的斜率为

1(2yr(1(1k)y2r2+1)+(1k)y3r31(1k)y2r2(1(1k)y2r2+1)2)-\frac{1}{\left(\dfrac{2\,y}{r\,\left(\sqrt{1-\dfrac{\left(1-k\right)\,{y}^{2}}{ {r}^{2} }}+1\right)}+\dfrac{\left(1-k\right)\,{y}^{3}}{ {r}^{3}\,\sqrt{1-\dfrac{\left(1-k\right)\,{y}^{2}}{ {r}^{2} }}\,\left({\sqrt{1-\dfrac{\left(1-k\right)\,{y}^{2}}{ {r}^{2} }}+1}\right)^{2} }\right)}

然后将交点坐标代入y=kx+by=kx+b中,求得b的值,从而得到法线的直线方程。法线单位向量e\vec e方向的计算方法为,e\vec ev\vec v的夹角要求为钝角。

使用向量形式的反射定律f=v2(ve)e\vec f = \vec v-2(\vec v \cdot \vec e)\vec e。得到反射光线。

进行坐标变换

由于离轴反射系统在全局上对圆锥面方程进行解析表达比较困难,因此采用对每个局部坐标系进行计算,得出交点和反射光线,然后在进行矩阵变换的方式得到全局坐标下的入射点和反射光线。

img

假设XOYX'O'Y'存在一个点PP',设OXOXOYOY的夹角为θ\theta,规定正方向为OX向O‘Y’顺时针旋转,PP点坐标可以表示为x=xcos(θ)+ysin(θ)+x0,y=ycos(θ)xsin(θ)+y0x=x'\cos(\theta)+y'\sin(\theta)+x_0,y=y'\cos(\theta)-x'\sin(\theta)+y_0。存在一条直线y=mx+ny=mx+n,坐标变换后的表达式为

y=(mxcos(θ)mx0cos(θ)+my0sin(θ)+nsin2(θ)+ncos2(θ)xsin(θ)+x0sin(θ)+y0cos(θ))(msin(θ)+cos(θ))y=\frac{(m x \cos(\theta) - m x_0 \cos(\theta) + m y_0 \sin(\theta) + n \sin^2(\theta) + n \cos^2(\theta) - x \sin(\theta) + x_0 \sin(\theta) + y_0 \cos(\theta))}{(m \sin(\theta) + \cos(\theta))}