Python光学仿真wxpython透镜演示系统框架

 更新时间:2021年10月19日 14:36:39   作者:微小冷  
这篇文章主要为大家介绍了Python光学仿真UI界面的wxpython透镜演示系统框架基本讲解,有需要的朋友可以借鉴参考下,希望能够有所帮助

透镜演示系统

框架

现在,我们可以做一个具备友好界面的透镜演示系统了。我们需要两个圆弧来表示透镜,一条线段表示主光轴,多条线段表示光线的传播路径。此外,还需要对光源和透镜的参数进行调节。

然而值得注意的一点是,我们在进行计算和画图过程中所用到的几何图形,在表达形式以及操作流程上可能并不相同。例如,对于光源发出的一条射线,它与透镜的作用流程为

  • 寻找与透镜前表面的交点A
  • 获取反射和透射直线
  • 寻找透射直线与透镜后表面的交点B
  • 计算透过透镜的直线

然而对于画图程序来说,光源S和A之间有一条线段,A和B之间有一条线段,若想画出透过透镜的线段,则必须先确定这条线段的另一个端点。也就是说,在求解反射、透射光线的过程中,所得到的光线表达式对于画图来说并无意义,只有端点是有意义的。

至此,即可得到这个小程序中必不可少的一些数据,包括光源参数、透镜参数、光线与表面的交点,光线端点组成的点对,所有光线的表达式,当前仍在传播的光线的表达式等。

于是可以建立如下代码:

import raypath as rp
class OptiTest(wx.Panel):
    def __init__(self,parent=None,size=(800,600)):
        wx.Panel.__init__(self,parent=parent,id=-1,size=size)
        self.Bind(wx.EVT_PAINT, self.OnPaint)
        self.opti = rp.Opti()   #光学元件对象
        self.optiDict = {}      #光学元件参数
        self.sourceDict = {}    #光源
        self.abcs = []      #所有光线的abc参数
        self.nodes = []     #交点
        self.dots = []      #点对,用于绘图
        self.rays = []      #仍在传播的光线
        self.InitPanel()    #初始化模板
    def InitPanel(self):
        pass                #暂时不想写的地方可以用pass
    #设置透镜
    def setEdge(self):
        pass

其中,光学元件包括位置、折射率、孔径、前表面曲率、后表面曲率等参数;光源信息包括位置、角度等信息,可初始化为:

self.optiDict = {'xPos':300,'nOpti':1,'Diameter':100,
                 'lFocal':200,'rFocal':200}
self.sourceDict = {'xSource':10,'ySource':100,'theta':0}

在上述所有计算所得的数据中,彼此有很密切的关系。例如点对是由两个点组成,而每个点至少从属于一个点对。而从光线的传播角度出发,除了光源,每个节点都有父节点;除了最后的死点,每个点都有一个子节点。对于任意一点,只要遍历其所有子节点,就可以画出这个点组成的所有线段。

以上就是Python光学仿真UI界面wxpython透镜演示系统框架的详细内容,更多关于wxpython框架的资料请关注脚本之家其它相关文章!

相关文章

  • django中间件及自定义中间件的实现方法

    django中间件及自定义中间件的实现方法

    中间件就是在目标和结果之间进行的额外处理过程,在Django中就是request和response之间进行的处理,相对来说实现起来比较简单,这篇文章主要介绍了django中间件以及自定义中间件 ,需要的朋友可以参考下
    2023-06-06
  • Django中数据库迁移常用的命令小结

    Django中数据库迁移常用的命令小结

    在Django中数据库迁移用于保持数据库结构与模型定义同步,这篇文章主要介绍了Django中数据库迁移常用的命令,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2025-03-03
  • python常用内置模块你了解吗

    python常用内置模块你了解吗

    这篇文章主要为大家介绍了python的常用内置模块,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助
    2022-01-01
  • numpy中nan_to_num的具体使用

    numpy中nan_to_num的具体使用

    在Numpy中NaN值一般出现在数据清洗前,出现这个值说明这个数据是缺失的,本文主要介绍了numpy中nan_to_num的具体使用,感兴趣的可以了解一下
    2022-08-08
  • 详解Python命令行解析工具Argparse

    详解Python命令行解析工具Argparse

    这篇文章主要为大家详细介绍了Python命令行解析工具Argparse的相关资料,感兴趣的小伙伴们可以参考一下
    2016-04-04
  • Python实现批量修改指定目录下图片的大小

    Python实现批量修改指定目录下图片的大小

    批量修改指定目录下图片大小通常是在需要对大量图片进行统一处理的情况下使用的,本文主要为大家详细介绍了如何利用Python实现批量修改图片大小,需要的可以参考下
    2023-10-10
  • Python学习之图片滤镜效果的实现

    Python学习之图片滤镜效果的实现

    滤镜效果是图像处理中常用的一种技术,可以用来增强图像的视觉效果,实现不同的效果,本文就来利用Python中的Image模块实现常见的几个图片滤镜吧
    2023-05-05
  • python创建和删除目录的方法

    python创建和删除目录的方法

    这篇文章主要介绍了python创建和删除目录的方法,涉及Python操作目录的相关技巧,非常具有实用价值,需要的朋友可以参考下
    2015-04-04
  • Python 安装setuptools和pip工具操作方法(必看)

    Python 安装setuptools和pip工具操作方法(必看)

    下面小编就为大家带来一篇Python 安装setuptools和pip工具操作方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-05-05
  • Python自动化构建工具scons使用入门笔记

    Python自动化构建工具scons使用入门笔记

    这篇文章主要介绍了Python自动化构建工具scons使用入门笔记,本文讲解了安装scons、scons常用命令、scons使用示例等内容,需要的朋友可以参考下
    2015-03-03

最新评论