吾爱光设

 找回密码
 注册
会员须知
会员须知
实用帮助
实用帮助
查看: 17112|回复: 11

[讨论交流] 关于自定义面型的编写

[复制链接]
  • TA的每日心情

    2018-9-12 11:31
  • 签到天数: 42 天

    [LV.5]常住居民I

    3

    主题

    8

    回帖

    2

    积分

    小白

    积分
    2
    发表于 2018-1-17 19:05 | 显示全部楼层 |阅读模式
    zemax 自己已经有一些自定义面型的文件了,图形长成这样。
    多个标准面的堆砌,有转角。


    想自己写一个一样的。
    这个有英文版的网址:http://customers.zemax.com/os/resources/learn/knowledgebase/how-to-model-a-slicer-mirror-using-a-user-defined
    自定义面型文件和示例文件:


    里面有多重组态和自定义面型两种方法。
    问题一:在相同结构参数下,两种方法得不到相同结果。要是能的话,请把一个两个示例的参数改成一样,并证明结果相同。
    问题二:如何编写该面型的.dll文件?
    问题三:@optzmx  我现在想看懂自定义面型的写法。 us_stand.c 示例里面的case5 的光线追迹不懂,还有case3的矢高公式
    只能推导出这个:


    不知道手册里的公式


    怎么来的。





    本帖子中包含更多资源

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

    ×
    该会员没有填写今日想说内容.
    回复

    使用道具 举报

  • TA的每日心情

    2024-3-9 22:44
  • 签到天数: 2636 天

    [LV.Master]伴坛终老

    19

    主题

    295

    回帖

    454

    积分

    初级

    积分
    454

    论坛忠实支持者

    发表于 2018-1-18 11:01 | 显示全部楼层
    问题一:经证实,可以做到一样,微调了下,两种方法结果。


    问题二:怎么写,看他的DLL,是分别设置每一个分割区域的离心跟倾斜,参数输入在额外参数编辑器

    问题三:这个看说明书就行,case 5:是实际空间光线追迹,用的是矢量法(各种教材名称好像不一样,张以谟应用光学第三版这么叫),还有三角函数法,只是听说过好像没见过。参考书:北理工 李林  安连生的 《计算机辅助光学设计的理论与应用》

    本帖子中包含更多资源

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

    ×
    2018-1-23 00:46 大吉大利,今晚吃鸡!
    回复

    使用道具 举报

  • TA的每日心情

    2024-3-9 22:44
  • 签到天数: 2636 天

    [LV.Master]伴坛终老

    19

    主题

    295

    回帖

    454

    积分

    初级

    积分
    454

    论坛忠实支持者

    发表于 2018-1-18 09:14 | 显示全部楼层
    你确定这个多重结构能做?
    2018-1-23 00:46 大吉大利,今晚吃鸡!
    回复

    使用道具 举报

  • TA的每日心情

    2018-9-12 11:31
  • 签到天数: 42 天

    [LV.5]常住居民I

    3

    主题

    8

    回帖

    2

    积分

    小白

    积分
    2
     楼主| 发表于 2018-1-18 09:58 | 显示全部楼层
    optzmx 发表于 2018-1-18 09:14
    你确定这个多重结构能做?

    是说加工吗?参数合适的话,可以加工。网上还有关于各种加工方法的文章。
    还是说多重组态? 例子里不是对比了MC和DLL嘛。
    该会员没有填写今日想说内容.
    回复

    使用道具 举报

  • TA的每日心情

    2024-3-9 22:44
  • 签到天数: 2636 天

    [LV.Master]伴坛终老

    19

    主题

    295

    回帖

    454

    积分

    初级

    积分
    454

    论坛忠实支持者

    发表于 2018-1-18 11:02 | 显示全部楼层
    hero的徒弟 发表于 2018-1-18 09:58
    是说加工吗?参数合适的话,可以加工。网上还有关于各种加工方法的文章。
    还是说多重组态? 例子里不是 ...

    勉强算可以吧,单个分割区域,单独模拟
    2018-1-23 00:46 大吉大利,今晚吃鸡!
    回复

    使用道具 举报

  • TA的每日心情

    2018-9-12 11:31
  • 签到天数: 42 天

    [LV.5]常住居民I

    3

    主题

    8

    回帖

    2

    积分

    小白

    积分
    2
     楼主| 发表于 2018-1-18 17:00 | 显示全部楼层
    optzmx 发表于 2018-1-18 11:01
    问题一:经证实,可以做到一样,微调了下,两种方法结果。

    问题一:点列图,成像效果也一样吗?    结构上只是看起来一样,但成像效果不一样就没意义了。
    问题二:需要怎么看dll文件内部?没有.c文件不懂。
    问题三:张以谟的应用光学看过了,但是和示例里面的公式不能互推,最起码




    都不一样,距离d都不见了。


    本帖子中包含更多资源

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

    ×
    该会员没有填写今日想说内容.
    回复

    使用道具 举报

  • TA的每日心情

    2024-3-9 22:44
  • 签到天数: 2636 天

    [LV.Master]伴坛终老

    19

    主题

    295

    回帖

    454

    积分

    初级

    积分
    454

    论坛忠实支持者

    发表于 2018-1-18 17:19 | 显示全部楼层
    问题一:我没仔细验证,应该一样的,参数他都有,除非dll错了,
    问题二:反编译可以看,就向破解软件一样,但是难
    问题三:D就是t
    2018-1-23 00:46 大吉大利,今晚吃鸡!
    回复

    使用道具 举报

  • TA的每日心情

    2018-9-12 11:31
  • 签到天数: 42 天

    [LV.5]常住居民I

    3

    主题

    8

    回帖

    2

    积分

    小白

    积分
    2
     楼主| 发表于 2018-1-18 18:54 | 显示全部楼层
    optzmx 发表于 2018-1-18 17:19
    问题一:我没仔细验证,应该一样的,参数他都有,除非dll错了,
    问题二:反编译可以看,就向破解软件一样 ...

    我也觉得点列图应该是一样的,但是就是调不成一样的;
    破译的结果是十六进制的乱码......
    是小写的d,不是D.

    该会员没有填写今日想说内容.
    回复

    使用道具 举报

  • TA的每日心情

    2024-3-9 22:44
  • 签到天数: 2636 天

    [LV.Master]伴坛终老

    19

    主题

    295

    回帖

    454

    积分

    初级

    积分
    454

    论坛忠实支持者

    发表于 2018-1-18 19:08 | 显示全部楼层
    d Zemax已经帮你算了,那个x-d在zemax中就是x

    有一个隐形的坐标系变换

    空间公式的一大特点就是不需要过渡公式(在张以谟的书中,那个从上一个间距传输倒下一个间距的公式)
    2018-1-23 00:46 大吉大利,今晚吃鸡!
    回复

    使用道具 举报

    该用户从未签到

    3

    主题

    6

    回帖

    3

    积分

    小白

    积分
    3
    发表于 2018-3-30 09:43 | 显示全部楼层
    推导了一下,发现与结果与源代码里面的有差异:
                    a = (UD->n) * (UD->n) * FD->k + 1;
                            b = ((UD->n)/FD->cv) - (UD->x) * (UD->l) - (UD->y) * (UD->m);
                            c = (UD->x) * (UD->x) + (UD->y) * (UD->y);
                            rad = b * b - a * c;
                            if (rad < 0) return(FD->surf);  /* ray missed this surface */
                            if (FD->cv > 0) t = c / (b + sqrt(rad));
                            else           t = c / (b - sqrt(rad));
    不知道问题出在哪里

    本帖子中包含更多资源

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

    ×
    发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
    回复

    使用道具 举报

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

    本版积分规则

    关闭

    站长推荐上一条 /3 下一条

    联系我们|本论坛只支持PC端注册|手机版|小黑屋|吾爱光设 ( 粤ICP备15067533号 )

    GMT+8, 2024-4-27 07:28 , Processed in 0.140625 second(s), 26 queries .

    Powered by Discuz! X3.5

    © 2001-2024 Discuz! Team.

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