Optometrika
OPTOMETRIKA
开发者:Yury Petrov
Optometrika库实现了分析和迭代射线跟踪近似光学图像形成使用斯涅尔和菲涅耳的折射和反射定律。
目前,该库实现了折光和反射的一般表面,具有散光的非球面(圆锥)表面,菲涅耳表面,锥和圆柱(椭圆),平面,圆形和环形孔径,矩形平面屏幕,球型屏幕,以及具有容纳透镜和球型视网膜的人眼现实模型。看到的例子。m文件提供了一般(用户定义的形状)透镜、非球面透镜、菲涅耳透镜、棱镜、镜子和人眼的光线跟踪示例。
该库跟踪折射射线,包括在折射表面的强度损失。反射光线目前被跟踪的镜子,也为单一的总内部反射或双重折射,如果它发生。请注意,Bench类对象不是一个真正的物理工作台,它只是一个光学元素的有序数组,并且您有责任以正确的顺序排列光学对象。特别是,如果需要多次跟踪穿过同一对象的光线,则必须按照光线遇到对象的顺序将该对象多次添加到基准数组中。例如,圆柱形和锥形表面的双重折射/反射可以通过将表面添加到工作台两次来计算。
图书馆非常紧凑和快速。它是用Matlab类编写的,并且是完全向量化的。在3 GHz英特尔酷睿i7台式机上,通过外部透镜和人眼(8个光学表面)追踪100,000条光线大约需要2秒。菲涅耳透镜的跟踪有些慢,因为循环通过描述透镜表面的菲涅耳锥。通过用户定义的(一般的)曲面进行跟踪要慢得多,这是由于与曲面相交的射线的迭代搜索。
感谢您下载Optometrika,喜欢它!
————————————————————
例子列表:
例二。m: Optometrika库的基本功能测试
example2。m:演示Optometrika的人眼光学模型
青年们。M:通过最小化视网膜图像来演示人眼的适应
example4。M:用coslens.m中定义的余弦曲面轮廓测试环形透镜
example5。M:测试平面镜
example6。m:测试平面镜和抛物面镜(牛顿折射望远镜)
example7。m:测试菲涅耳透镜
example8。M:用多项式非球面项测试透镜
example9。M:测试圆锥镜
example10。M:用双重折射测试圆柱面和圆锥面
example11。男:演示了从人眼内部发出的光线追踪
example12。M:画一个透镜,确定它的前表面、后表面和总高度。制作镜头的动画动图和镜头的工程图。
example13。m:测试通过透镜边缘的折射和后向光线折射(亚口径Maksutov-Cassegrain望远镜)
example14。M:通过具有散光的透镜测试折射(不同的垂直和水平曲率半径)
example15。M:模拟六角形球形微透镜阵列
example16。m:演示各种镜头的STL导出
引用作为
尤里·(2023)。OptometrikaGitHub (https://github.com/caiuspetronius/Optometrika)。检索.
无法下载使用GitHub默认分支的版本
版本 | 发表 | 发布说明 | |
---|---|---|---|
2.3.2.0 | 修复了光圈中的一个错误。M在工作台上不正确地显示矩形孔径方向 |
|
|
2.3.1.0 | 修正了一个阻止在屏幕上显示点图像的错误 |
|
|
2.3.0.0 | 修复Bug |
|
|
2.2.0.0 | 固定不正确的表面法线计算与多项式项的表面,增加内径(孔)到平面表面,扩展export_stl()到平面表面。 |
|
|
2.1.0.0 | 修正了一个影响反向传播射线与双曲曲面相互作用的错误。 |
|
|
2.0.0.0之间 | 现在维护为GitHub存储库。 |
|
|
1.31.0.0 | 修改了export_stl()函数,使其与Matlab 2018b内置的stlwrite()函数正确工作。 |
|
|
1.30.0.0 | 更新export_stl()函数以导出GeneralLens类曲面。 |
|
|
1.29.0.0 | 增加了export_stl()函数用于STL格式的镜头表面导出。看到example16。 |
||
1.28.0.0 | 各种bug修复 |
||
1.27.0.0 | 增加了几个新材料 |
||
1.26.0.0 | 在draw_lens_engineering()函数中分别添加了一个镜头的3D形状和2D轮廓的STL和DXF导出。安装stlwrite()和DXFLib来使用这个功能。 |
||
1.25.0.0 | 小错误修复。 |
||
1.24.0.0 | 将菲涅耳透镜的工程图添加到draw_lens_engineering()中。示例参见example7。 |
||
1.23.0.0 | 增加了矩形光圈。看到example4。 |
||
1.22.0.0 | 实现像散透镜表面:使用2x1向量作为曲率半径(见示例14)。 |
||
1.21.0.0 | 实现了反向传播光线的光线跟踪(示例13) |
||
1.20.0.0 | 错误修复 |
||
1.19.0.0 | 在draw_lens_engineering()函数中添加法兰选项。 |
||
1.18.0.0 | 各种错误修复。 |
||
1.17.0.0 | 增加了draw_lens_engineering()函数,为镜头制造商自动生成工程图纸。目前只实现了没有孔的透镜。参见example12的演示。 |
||
1.16.0.0 | Example12演示了如何使用lens_dims()函数绘制透镜(全曲面)并计算其凹陷度和体积。 |
||
1.15.0.0 | 有关显示光线的新方法,请参见example11。 |
||
1.14.0.0 | 启用完全内部反射。修复了与多重折射/反射有关的各种错误。 |
||
1.13.0.0 | 增加了圆柱形表面,包括这种表面上的双重折射(例10)。修正了一些错误。 |
||
1.12.0.0 | 添加了一个锥形表面ConeLens() |
||
1.11.0.0 | 添加AsphericLens类,描述强非球面(圆锥+偶数多项式项,example8)。 |
|
|
1.10.0.0 | 增加了一个菲涅耳透镜实现。增加了工作台上的操作,如工作台旋转,元素预置和移除。 |
||
1.9.0.0 | 替换掉丢失的长凳。m文件。 |
||
1.8.0.0 | 各种错误修复和改进。球体屏幕现在由视网膜对象实现。 |
|
|
1.7.0.0 | 一些bug修复和改进,增加了由视网膜类实现的球形屏幕。 |
||
1.6.0.0 | 为类添加了基本文档。 |
||
1.5.0.0 | 增加:(i)附加射线束到现有的束,(ii)镜像元素(一般,圆锥,平面)。要指定一个表面为镜子,请使用'mirror'玻璃说明符(参见example5。M和example6.m)。 |
||
1.4.0.0 | 修复小错误。 |
||
1.3.0.0 | 添加了通过通用(用户定义的)曲面的跟踪(参见example4.m)。 |
||
1.2.0.0 | 修正了影响光线通过强双曲曲面追踪的错误。 |
||
1.1.0.0 | 修正了影响光线通过极端双曲曲面追踪的错误。 |
||
1.0.0.0 |