IRayTraceNormPolData
IRayTraceNormPolData使用归一化光瞳坐标执行偏振光线追迹的批次处理。
打开该工具时,用户选择要追迹的最大光线数、光线类型(光线追迹可使用真实光线或近轴光线)、琼斯矢量(电场)和光线将追迹到的表面。
CreateNormPol (int MaxRays, RaysType rayType, double Jx, double Jy, double phaX, double phaY, int toSurface)
然后在AddRay函数中逐个定义光线。光线由波长、相对视场和光瞳坐标以及琼斯矢量(Jones vector)定义。Jx和Jy分别代表x和y方向上的电场振幅,Phax和Phay代表复杂电场的相对相位(以度为单位)。尽管任何值均可接受,但数Jx*Jx + Jy*Jy的值应该为1.0(以下描述了一种重要的例外情况)。请注意,产生的电场将根据系统选项(System Explorer)中选择的方法来执行从J到E的转换。
AddRay (int waveNumber, double Hx, double Hy, double Px, double Py, double exr, double exi, double eyr, double eyi, double ezr, double ezi)
- 如果所有六个电场值均为零,则OpticStudio将使用CreateNormPol函数中提供的Jx和Jy值来确定电场。
- 如果Jx、Jy、Phax和Phay均为零,且仅在这种情况下,则OpticStudio假设需要"非偏振(unpolarized)"光线追迹。非偏振光线追迹要求OpticStudio追迹两条正交光线,并求取所得到透射强度的平均值。如果四个值中的任何一个值不为零,则将追迹一条偏振光线。
- 如果所有六个电场值均不为零,则电场由这六个值进行定义。所定义的电场矢量必须与光线矢量正交,否则将导致不正确的光线追迹。
结果
有两种方法可以返回结果:
ReadNextResult (out int rayNumber, out int ErrorCode, out double exr, out double exi, out double eyr, out double eyi, out double ezr, out double ezi, out double intensity)
ReadNextResultFull (out int rayNumber, out int ErrorCode, out double xo, out double yo, out double zo, out double lo, out double mo, out double no, out double exr, out double exi, out double eyr, out double eyi, out double ezr, out double ezi, out double intensity)
- rayNumber
- ErrorCode
- exr、exi、eyr、eyi、ezr、ezi:ex、ey和ez值为电场分量,r和i字符表示实部和虚部
- 强度:光线的光焦度
- 如果使用ReadNextResultFull:xo、yo、zo:光线在所需表面上的坐标
- 如果使用ReadNextResultFull:lo、mo、no:光线在所需表面上的方向余弦
下一部分: