GEOMETRY LAB / 几何实验室

椭圆里的光

改变一个方向,看一条光线如何反复折返。

本地运行 · 无须联网
光路实验
光路包络反射边界
请使用支持 Canvas 的浏览器。
外椭圆 a = 1.00 · b = 0.65
完整轨迹
拖动青色起点 P · 点击或拖动椭圆内部改变方向
对应的包络类型
共焦椭圆
两个焦点保持不变
有向距离乘积 K
+0.00000
两个焦点位于光线同侧
已显示 / 总光段
70 / 70
逐次计算反射
光线围出一个没有进入的区域

图是怎样算出来的?

光路:从边界点 P 出发,先求直线 P + tv 与椭圆的下一交点,再取该点的法向量 N = (x/a², y/b²),按镜面反射公式更新单位方向:

v′ = v − 2 (v · N) / (N · N) N

普通轨迹由这些交点与反射依次算出,没有让光线事先沿某条内椭圆行进。包络是独立的对照图层,关闭它不会改变光路。

不变量:写每条光路所在直线为 n · X = p,其中 n 是单位法向量。两个焦点是 (±c, 0),c² = a² − b²;它们到直线的有向距离乘积为

K = (p + c nₓ)(p − c nₓ) = p² − c² nₓ².

反射保持 K 不变。K > 0 对应共焦椭圆;−c² < K < 0 对应共焦双曲线。用同一个式子表示(分母非零时):

x² / (c² + K) + y² / K = 1.

两个细节:双曲线型的“相切”通常应看光段所在的整条直线,切点可能在延长线上;特殊方向可与渐近线重合。周期轨道只会重复有限条光段,并不会描满一条光滑包络。

计算使用浮点数。越靠近过焦点的临界方向,长期轨迹对微小误差越敏感。“过焦点”预设使用等价的焦点反射性质逐次校正方向,以免误差把轨迹推离临界情况。K = 0 和 K = −c² 是退化情况,分别包括过焦点轨迹与短轴往返轨迹。