本帖最后由 HzHJ 于 2024-3-26 19:40 编辑
1.分享目的:第一次上手用户自定义面型,遇到了很多坑,给大家分享一下我的经验,后来者就不用再走这些坑了。
坑有zemax原本很多函数是c语言编写,目前用户自定义面型一般使用C++编写,因此需要在编写前添加:
这里需要注意 DLL2_API 为项目和文件的名称,根据你的项目进行修改。
第二个坑,雷竞技下载找ray666点vip出身的人一般不会DLL的编译方法,DLL文件需要增加头文件
需要修改的点和上面一样。
第三个坑,编译不是按运行按钮而是ctrl+shift+b。即生成解决方案。然后在release文件夹中找到.dll文件,就是编译好的文件。
2.代码编写整体架构
一般打开zemax用户自定义文件夹中的us_stand.c文件,使用该架构进行改编。
需要注意的点有:
case1中可对需要的参数进行声明;
case3是对zemax的表面矢高进行绘制,对实际的光线没有影响;
case4是对近轴光线的方向矢量进行定义
case5是整个代码最核心的部分,他描述了光线经过该表面的方向矢量以及光线如何从前一个表面到达用户自定义表面的相应位置。
3.周期性微结构的核心函数
GetCellCenter函数是编写周期性阵列结构的核心函数,该函数可以理解为将每一个微结构拉到中心的位置对其进行光线追迹求解。在us_cylar中可以找到。
需要输入的参数一般有,N_num,代表微结构的个数,wy,代表微结构的周期长度,y,代表到达微结构表面的光线的y坐标,*cy,微结构所处的边框。
函数编写与修改参考:首先一定要对*cy进行初始化,因为*cy可以理解为指针变量,其数据不会被清除;
然后对y的位置进行判断,如果大于wy,就对微结构进行向下平移,一直平移到y在0到wy的范围内;
并且记住平移的数量,即*cy;