zemax学习笔记:
多边形物体是用户定义吻体,它由 3 维空间的三角形集合组成。该物体是通过一个简单的文本文件定义的,扩展名为 POB(对于多边形物体)。如果需要的话,多边形上的每个表面或每一组表面都可以有相同的面序号。
形成封闭空间的多边形物体必须不包括任何内部面。每一个面必须位于物体的外部,来定义体的外部和内部的边界。要得到一个拥有胶合边界的物体,例如分光镜,使用两个或多个独立的多边形物体然后将它们关联放置。
文件格式可以通过一个文字编辑器来创建并编辑。该文件包括一系列的数据行。每行由一个字母或符号开头,后面跟着数据。系统所支持的符号以及它们的意义如下所示:
注释符号 :! ( The comment symbol: ! )
符号“!”用于定义一个注释行:
语法:
!注释语句
例:
! A dove prism
可以用 C 命令定义的面的名称:
面名称符号 :C ( The face name symbol: C )
语法:
C 面序号 “任意名称”
例:
C 0 “All faces”
面名称用于在物体对话框中的显示物体各个面的名称。注意名称必须处于引号之内。该命令是可选的。
连接顶点的线,如果不需要画出来(如位于在同一平面之间的两相邻三角形之间的线),就可以标志为不可见。为了将两个顶点标记为不可见,可以在符号“I”后面加上这两个顶点的序号。任何与被标志的顶点相连接的线将不会画出。
不可见符号 :I ( The invisible symbol: I )
这只会影响 3D 视图,并且严格而言,该功能对画多边形物体起一个修饰作用。
语法 :
I V1 V2 (其中 Vl,V2 为顶点坐标)
例:
I 7 9
注意,顶点序号必须为整数。并且在数值之间用空格隔开。命令“I”必须在任何参考不可见顶点的三角形或矩形之前。
通过在符号“V”后面加上顶点序号以及顶点的 x,y 和 Z 坐标来定义顶点。
顶点符号: V ( The vertex symbol: V )
语法:
V 序号 x y z
例:
V 1 -1.0 -1.0 0.0
注意,顶点序号必须是一个整数,并且 x,y 和 2 坐标是浮点数。这些数之间用空格隔开。
通过连接三个顶点来定义三角形。
三角形符号: T ( The triangle symbol: T )
语法:
T 顶点 l 顶点 2 顶点 3 isreflective 面
顶点序号必须是整数,且顶点必须是文件中先前定义的顶点。如果三角形是形成一个封闭体的物体的一部分,顶点就要排序使得顶点1和顶点2之间的矢量与顶点1和顶点3之间的矢量乘积,指向体的“出口(out)”。
标志“isreflective”为-1表示表面吸收,1表示表面反射,0表示表面折射。注意,使用该标志可以在同一个多边形物体中使三角形反射,而其它的三角形为折射或吸收。但是,isreflective标志在布尔运算产生的多边形物体中不需要考虑。
用于面的值定义三角形属于哪个面。如果忽略面序号标志,则默认为 0。
例如:
T l 2 3 0 2
这定义了连接顶点 1、2 和 3 属于面 2 的三角形。
矩形通过 4 个顶点连接来定义,除此之外,它与三角形很相似。在系统内部,ZEMAX 可以将矩形转换成 2 个三角形:
矩形符号: R ( The rectangle symbol: R )
语法:
R 顶点 1 顶点 2 顶点 3 顶点 4 isreflective face
顶点序号必须为整数,顶点必须是以前文件中定义过的顶点。顶点的次序不能任意,它们必须以顺时针方向或逆时针方向排列,而不能按照“蝶型连接”的序列。并不是所有的四顶点多边形都能形成一个简单的矩形,对于更复杂的形状,需要用到多重三角形命令。如果矩形是形成一个封闭体的物体的一部分,顶点就要排序使得顶点1和顶点2之间的矢量与顶点1和顶点3之间的矢量乘积,指向体的“出口(out)”。
“isreflective”标志为-1表示表面为吸收,1表示为表面反射,0表示为表面折射。使用这个标志,可以在相同的多边形物体或面中,使矩形是反射的,而其它的矩形是折射或吸收。但是,isreflective标志在布尔运算产生的多边形物体中不需要考虑。
用于面的值定义三角形属于哪个面。如果忽略面序号标志,则默认为0。
例:
R 1 2 3 4 1 0
该例定义了一个由顶点 1、2、3 和 4 连接而成的反射矩形,属于面 0。
多边形物体中的最大三角形( Maximum triangles in the polygon object )
对于一个多边物体中所包含的三角形数目,没有固定的上限。根本的限制取决于计算机所能得到的真实或虚拟的 RAM。每一个三角形大约占内存中的 100 个字符。但是,ZEMAX 同时需要维持大量的透镜数据的拷贝,所以一个好的经验方法是对于每一个三角形,ZEMAX 需要占用 RAM 中的 500 个字节。一个包含 2000 个三角形的物体将需要 RAM 中的 1Mb 空间。还有一个更为实际的限制是计算机的速度;如果三角形数目变的很大,ZEMAX 的速度将会明显减慢。
POB 文件示例( Example POB file )
以下有一个完整的 POB 文件文件定义了一个曲折射材料组成的立方体。该文件被包含进例子CUBE.POB 中。立体的所有 8 个面属于面 0。
POB 文件示例( Example POB file )
! A cube
! front face vertices
V 1 -1 -1 0
V 2 1 -1 0
V 3 1 1 0
V 4 -1 1 0
! back face vertices
V 5 -1 -1 2
V 6 1 -1 2
V 7 1 1 2
V 8 -1 1 2
! Front
R 1 2 3 4 0 0
! Back
R 5 6 7 8 0 0
! Top
R 4 3 7 8 0 0
! Bottom
R 1 2 6 5 0 0
! Left side
R 1 4 8 5 0 0
! Right side
R 2 3 7 6 0 0
8 个“V”命令定义了立体 8 个顶角的顶点坐标。6 个“R”命令定义了立体的 6 个面。注意,面的宽度为 2 个单位,后表面顶点的 Z 坐标定义为 2 个单位,所以该立体是一个理想的立方体。立体的所有坐标均相对于物体的参考点,此时该点位于前表面的中心。为了将参考点置于立体的中心,此时对顶点定义作如下改变:
V 1 -1 -1 -1
V 2 1 -1 -1
V 3 1 1 -1
V 4 -1 1 -1
V 5 -1 -1 1
V 6 1 -1 1
V 7 1 1 1
V 8 -1 1 1
示例2:
! A 45-45-90 prism with no mirror side
! FSI Dec 18, 1998
C 1 "Splitter surface"
! front face vertices
V 1 -1 -1 0
V 2 1 -1 0
V 3 1 1 0
V 4 -1 1 0
! back face vertices
V 5 -1 1 2
V 6 1 1 2
! Front face rectangle
R 1 2 3 4 0 0
! Top face rectangle
R 4 3 6 5 0 0
! Bottom rectangle
R 1 2 6 5 0 1
! left side triangle
T 1 4 5 0 0
! right side triangle
T 3 2 6 0 0