Skip to main content
Solved

Find vignetting surface

  • February 18, 2022
  • 2 replies
  • 244 views

John.Hygelund
Fully Spectral
Forum|alt.badge.img+1

If you system has vignetting, is there a way to list surface(s) are doing the vignetting?

Thank you,

John

 

Best answer by John.Hygelund

Hi Jeff, thanks for pointing out this ZPL function.

Not very elegant, but this does the trick! Much more efficient than manually stepping through the surfaces

! Find vignetted surface

FOR I, 0,1,.1
	RAYTRACE 0,1,0,I 
	V = RAYV()
	FORMAT 1.1
	PRINT "Hy=1.0, Py=",I," first surface to vignette: ",V
NEXT

Example output

Hy=1.0, Py=0.0 first surface to vignette: 0.0
Hy=1.0, Py=0.1 first surface to vignette: 0.0
Hy=1.0, Py=0.2 first surface to vignette: 0.0
Hy=1.0, Py=0.3 first surface to vignette: 11.0
Hy=1.0, Py=0.4 first surface to vignette: 11.0
Hy=1.0, Py=0.5 first surface to vignette: 11.0
Hy=1.0, Py=0.6 first surface to vignette: 11.0
Hy=1.0, Py=0.7 first surface to vignette: 8.0
Hy=1.0, Py=0.8 first surface to vignette: 8.0
Hy=1.0, Py=0.9 first surface to vignette: 8.0
Hy=1.0, Py=1.0 first surface to vignette: 8.0

View original
Did this topic help you find an answer to your question?

2 replies

Jeff.Wilde
Luminary
Forum|alt.badge.img+3
  • Luminary
  • 490 replies
  • February 19, 2022

Hi John,

One option could be to write a short ZPL script to trace a set of rays that originates from one or more field points and spans the pupil, then use the RAYV function to get the surface number(s) at which vignetting occurs

and print those surface numbers (and of course once a given surface is found to be vignetting for any one ray, it doesn’t need to be printed again).  Something similar could also be done using ZOS-API.

Regards,

Jeff


John.Hygelund
Fully Spectral
Forum|alt.badge.img+1
  • Author
  • Fully Spectral
  • 71 replies
  • Answer
  • February 22, 2022

Hi Jeff, thanks for pointing out this ZPL function.

Not very elegant, but this does the trick! Much more efficient than manually stepping through the surfaces

! Find vignetted surface

FOR I, 0,1,.1
	RAYTRACE 0,1,0,I 
	V = RAYV()
	FORMAT 1.1
	PRINT "Hy=1.0, Py=",I," first surface to vignette: ",V
NEXT

Example output

Hy=1.0, Py=0.0 first surface to vignette: 0.0
Hy=1.0, Py=0.1 first surface to vignette: 0.0
Hy=1.0, Py=0.2 first surface to vignette: 0.0
Hy=1.0, Py=0.3 first surface to vignette: 11.0
Hy=1.0, Py=0.4 first surface to vignette: 11.0
Hy=1.0, Py=0.5 first surface to vignette: 11.0
Hy=1.0, Py=0.6 first surface to vignette: 11.0
Hy=1.0, Py=0.7 first surface to vignette: 8.0
Hy=1.0, Py=0.8 first surface to vignette: 8.0
Hy=1.0, Py=0.9 first surface to vignette: 8.0
Hy=1.0, Py=1.0 first surface to vignette: 8.0


Reply


Cookie policy

We use cookies to enhance and personalize your experience. If you accept you agree to our full cookie policy. Learn more about our cookies.

 
Cookie settings