光学圆锥面的描述

在光学设计软件中,一个光学表面通常由其矢高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 (−c2 k−c2) n2−2 c m n+1c m2+c k+c−(−c k−c) nc m2+c k+c+mc m2+c k+c)21−c2 (k+1) (−m (−c2 k−c2) n2−2 c m n+1c m2+c k+c−(−c k−c) nc m2+c k+c+mc m2+c k+c)2+1y=−m (−c2 k−c2) n2−2 c m n+1c m2+c k+c−(−c k−c) nc m2+c k+c+mc m2+c k+c{x=c (m (−c2 k−c2) n2−2 c m n+1c m2+c k+c+(c k+c) nc m2+c k+c+mc m2+c k+c)21−c2 (k+1) (m (−c2 k−c2) n2−2 c m n+1c m2+c k+c+(c k+c) nc m2+c k+c+mc m2+c k+c)2+1y=m (−c2 k−c2) n2−2 c m n+1c m2+c k+c+(c k+c) nc m2+c k+c+mc m2+c k+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点切线的斜率的表达式。

(2 yr (1−(1−k) y2r2+1)+(1−k) y3r3 1−(1−k) y2r2 (1−(1−k) 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(2 yr (1−(1−k) y2r2+1)+(1−k) y3r3 1−(1−k) y2r2 (1−(1−k) 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 e和v⃗\vec v的夹角要求为钝角。

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

进行坐标变换

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

img

假设X′O′Y′X'O'Y'存在一个点P′P',设OXOX和OYOY的夹角为θ\theta,规定正方向为OX向O‘Y’顺时针旋转,PP点坐标可以表示为x=x′cos⁡(θ)+y′sin⁡(θ)+x0,y=y′cos⁡(θ)−x′sin⁡(θ)+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⁡(θ)+nsin⁡2(θ)+ncos⁡2(θ)−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))}