Description Retrieves the Zernike surface coefficient interpretation flag that determines whether the Zernike coefficient values are interpreted in waves or system units.
Syntax GetZernikeSurfCoefInterpretation n, inWavelengths, wave
Parameters n As Long Node number of the Zernike surface.
inWavelengths As Boolean Indicates whether coefficient is in waves or not. If True, the coefficients are in waves. If False, coefficients are in system units.
wave As Double Wavelength for which Zernike coefficients are expressed. This value is returned whether the inWavelengths flag is True or False.
Example The following script retrieves all information from a Zernike surface and prints a formatted summary of that information to the output window.
Sub Main()
' node of the zernike surface Dim surf_node As Long surf_node = FindFullName( "Geometry.Elem.Z Surf" )
' retrieve zernike specific information Dim tEnt As T_ENTITY Dim semiX As Double, semiY As Double, coefs() As Double GetZernikeSurf( surf_node, tEnt, semiX, semiY, coefs() )
' retrieve base surface information Dim b_curv As Double, b_con As Double GetZernikeSurfBaseConic surf_node, b_curv, b_con Dim OffAxisAngle As Double, Xoffset As Double, Yoffset As Double OffAxisAngle = GetZernikeSurfOffaxisAngle(surf_node) Xoffset = GetZernikeSurfXoffset(surf_node) Yoffset = GetZernikeSurfYoffset(surf_node)
' retrieve aspheric term information Dim asph_count As Long, cur_asph As Long asph_count = GetZernikeSurfAsphCoefCount( surf_node ) If asph_count <> 0 Then Dim asph() As Double, s_asph() As String ReDim asph( asph_count-1 ) : ReDim s_asph( asph_count-1 ) For cur_asph = 1 To asph_count
asph( cur_asph-1 ) = GetZernikeSurfIthAsphCoef( surf_node, cur_asph ) s_asph( cur_asph-1 ) = GetZernikeSurfIthAsphTermText( cur_asph )
Next End If
' retrieve zernike term information Dim wvl_flag As Boolean Dim wl As Double GetZernikeSurfCoefInterpretation( surf_node, wvl_flag, wl ) Dim coef_count As Long, cur_coef As Long coef_count = GetZernikeSurfCoefCount( surf_node ) If coef_count <> 0 Then Dim z_coefs() As Double, s_coefs() As String ReDim z_coefs( coef_count-1 ) : ReDim s_coefs( coef_count-1 ) For cur_coef = 0 To coef_count-1
z_coefs( cur_coef ) = GetZernikeSurfIthCoef( surf_node, cur_coef ) s_coefs( cur_coef ) = GetZernikeSurfIthTermText( cur_coef )
Next End If
' finally...print everything to the output window Print "Name: " & GetName( surf_node ) Print "Base Curvature: " & b_curv Print "Base Conic: " & b_con Print "Off Axis Angle: " & OffAxisAngle Print "X Offset: " & Xoffset Print "Y Offset: " & Yoffset If asph_count > 0 Then Print "Aspheric Terms: " Print Chr(9) & "Term" & Chr(9) & "Value" & Chr(9) & "Form" For cur_asph = 1 To asph_count Print Chr(9) & cur_asph & Chr(9) & asph( cur_asph-1 ) & Chr(9) & s_asph( cur_asph-1 ) Next Else Print "Aspheric Terms: None" End If If wvl_flag Then Print "Zernike in waves: " & wvl_flag & " (" & wl & ")" Else Print "Zernike in waves: " & wvl_flag End If If coef_count > 0 Then Print "Zernike Terms: " Print Chr(9) & "Term" & Chr(9) & "Value" & Chr(9) & "Form" For cur_coef = 0 To coef_count-1 Print Chr(9) & cur_coef & Chr(9) & z_coefs( cur_coef ) & Chr(9) & s_coefs( cur_coef ) Next Else Print "Zernike Terms: None" End If
End Sub
See Also Zernike Surface Script Commands
|