鱼C论坛

 找回密码
 立即注册
查看: 2345|回复: 4

[技术交流] python求解球面镜激光反射问题

[复制链接]
发表于 2017-1-8 15:06:21 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 jerryxjr1220 于 2017-1-8 19:37 编辑

这题原本是欧拉计划的第144题,觉得求解过程比较有趣,拿出来和大家分享。

原题:

在激光物理中,有一个作为激光束的延迟线的镜子系统。激光束进入格子,在镜子上跳来跳去,最后跳出去。

我们要考虑的球面镜是一个方程为 4*x*x+y*y = 100 的椭圆。

椭圆上端 0.01 ≤ x ≤ +0.01 对应的部分缺失,这样光束可以从这部分进入或跳出。

此问题中的光束从点 (0.0,10.1)开始,光束与镜子的第一次接触发生在点 (1.4,-9.6)。

每次激光束与椭圆表面相交,遵循常规的”入射角等于反射角“物理规律。也就是说,入射激光束和反射激光束与在交汇点的法线成相同角度的角。


                               
登录/注册后可看大图


                               
登录/注册后可看大图

在上面左边的图中,红线显示了激光束与白格子的前两次交汇点;蓝线显示了第一次交汇点处的切线。

椭圆上任意一点 (x,y) 处切线的斜率 m 为:m = -4 * x / y。

法线与切线在相交点相互垂直。

上面右边的动画显示了激光束的前十次反射。

激光束在退出白格子之前一共和椭圆内部发生了多少次撞击?

解答:

运用python解题还是很容易的。

前10次反射,用python画出来是这样的

euler144.png

这个是最终经过354次反射的结果,很好看哈!
euler144 .png

求解过程其实就是运用高中的几何代数的知识,看源代码吧。
游客,如果您要查看本帖隐藏内容请回复

评分

参与人数 1鱼币 +5 收起 理由
SixPy + 5 热爱鱼C^_^

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2017-1-8 19:17:41 | 显示全部楼层
,值得学习。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-7-16 09:05:39 | 显示全部楼层
看下
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2024-5-25 13:50:37 | 显示全部楼层
值得学习,看看
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-5-27 15:49:04 | 显示全部楼层
学习
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-12-23 04:06

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表