一个由凸透镜成像引出的数学问题
原问题
B站 一道光学题引发的思考
题目大意:光具座上有一凸透镜,焦距为 f。现有一半径为 r(r<f) 的圆环,圆心在主光轴上离光心 2f 处。在不考虑遮掩的情况下,求证该圆的像为椭圆。
一般化
图示:(如下方演示不能使用,请 去 desmos 浏览)
对于参数方程
(这里为了避免讨论绝对值,直接按照绘制像的方法计算,而不使用凸透镜成像公式)
假设图形为 G:{x=g(t)y=h(t),凸透镜右边的焦点在 D(f,0)
取图形上任意一点 B(g(t),h(t))
过 B 作 x 轴平行线交 y 轴于 C(0,h(t)),连接 BO 并延长交 CD 于点 P
不难得到 BO:y=h(t)g(t)x,CD:y=−h(t)fx+h(t)
由此可以算出 P 的轨迹为 H:⎧⎪
⎪
⎪
⎪⎨⎪
⎪
⎪
⎪⎩x=g(t)fg(t)+fy=h(t)fg(t)+f
对于单值函数
即 g(t)=t,H:⎧⎪
⎪
⎪⎨⎪
⎪
⎪⎩x=tft+fy=h(t)ft+f
tx+fx=tft=−fxx−tf=fxf−x
∴ft+f=ffx+f2−fxf−x=f−xf
于是 P 运动轨迹为 F(x)=h(fxf−x)(f−x)f
解题
对于圆
即 G:{x=rcost+x0y=rsint+y0(x0<0)
H:⎧⎪
⎪
⎪⎨⎪
⎪
⎪⎩x=frcost+x0rcost+x0+f(1)y=frsint+y0rcost+x0+f(2)
由 (1) 得:
xrcost+xx0+fx=frcost+fx0r(x−f)cost=(f−x)x0−fxrcost=−x0−fxx−f
于是 rcost+x0+f=−f2x−f,将其带入 (2) 得:
−yf2x−f=frsint+fy0rsint=−yfx−f−y0
由 sin2t+cos2t=1 得到:
(xfx−f+x0)2+(yfx−f+y0)2=r2(xf+x0(x−f))2+(yf+y0(x−f))2=r2(x−f)2
显然这是一个二次方程,将其展开:
[x2f2+x20(x−f)2+2xx0f(x−f)]+[y2f2+y20(x−f)2+2yy0f(x−f)]=r2(x−f)2x2f2+x20(x2+f2−2xf)+2xx0f(x−f)+y2f2+y20(x2+f2−2xf)+2yy0f(x−f)=r2(x2+f2−2xf)x2f2+x20x2+x20f2−2xx20f+2xx0f(x−f)+y2f2+y20x2+y20f2−2y20xf+2yy0f(x−f)=r2x2+r2f2−2r2xfx2f2+x20x2+x20f2−2xx20f+2x2x0f−2xx0f2+y2f2+y20x2+y20f2−2y20xf+2yy0fx−2yy0f2=r2x2+r2f2−2r2xff2x2+x20x2+x20f2−2x20fx+2x0fx2−2x0f2x+f2y2+y20x2+y20f2−2y20fx+2y0fxy−2y0f2y=r2x2+r2f2−2r2fx(f2+x20+y20−r2+2x0f)x2+2y0fxy+f2y2−2f(x20+x0f+y20−r2)x−2y0f2y+f2(x20+y20−r2)=0(x20+y20−r2+f2+2x0f)x2+2y0fxy+f2y2−2f(x20+y20−r2+x0f)x−2y0f2y+f2(x20+y20−r2)=0
令:⎧⎪
⎪
⎪
⎪
⎪
⎪
⎪
⎪
⎪⎨⎪
⎪
⎪
⎪
⎪
⎪
⎪
⎪
⎪⎩A=(x20+y20−r2+f2+2x0f)B=2y0fC=f2D=−2f(x20+y20−r2+x0f)E=−2y0f2F=f2(x20+y20−r2)
得到标准形式:Ax2+Bxy+Cy2+Dx+Ey+F=0
于是
I2=AC−B24=f2(x20+y20−r2+f2+2x0f)−y20f2=f2(x20+y20−r2+f2+2x0f−y20)=f2((x0+f)2−r2)=f2(x0+f−r)(x0+f+r)
显然 I2>0⇔(x0−r>−f)∨(x0+r<−f)
(其实应该还要计算 I1 和 I3 的,不过我懒得打了
即当圆与直线 x=−f 相离时,所成像为椭圆。
更通用的演示:https://www.desmos.com/calculator/qe0aqmvhyg
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)