%pylab inline
import warnings
import numpy as np
import matplotlib.pyplot as plt
import rayopt as ro
# ignore matplotlib and numpy warning each other
warnings.simplefilter("ignore", FutureWarning)
# ignore floating point exceptions
np.seterr(divide="ignore", invalid="ignore")
# by default only print 4 significant digits
np.set_printoptions(precision=4)
Populating the interactive namespace from numpy and matplotlib
description = "Nikkor-Z-58mmf0.95-WO2019229849A1"
columns = "type distance roc diameter material"
# Three different takes on dimensions
text1 = """
O 0 0 100.0 AIR
S 5.0 108.488 66.0 1.902650/35.77
S 7.65 -848.550 63.9 1.552981/55.07
S 2.8 50.252 56.9 AIR
S 18.12 -60.720 56.9 1.612660/44.46
S 2.8 2497.5 63.9 1.59319/67.9
S 9.15 -77.239 63.9 AIR
S 0.40 113.763 69.4 1.8485/43.79
S 10.95 -178.06 69.4 AIR
S 0.4 70.659 63.2 1.59319/67.9
S 9.74 -1968.5 63.2 AIR
S 0.2 289.687 59.7 1.59319/67.9
S 8.0 -97.087 57.6 1.738/32.33
S 2.8 47.074 48.6 AIR
A 8.7 0 45.8 AIR
S 5.29 -95.230 47.2 1.612660/44.46
S 2.2 41.204 47.2 1.497820/82.57
S 11.55 -273.092 47.2 AIR
S 0.2 76.173 50.0 1.883/40.69
S 9.5 -101.575 50.0 AIR
S 0.20 176.128 45.8 1.953750/32.33
S 7.45 -67.221 44.4 1.738/32.33
S 1.8 55.51 38.2 AIR
S 2.68 71.413 38.2 1.883/40.69
S 6.35 -115.025 38.2 1.69895/30.13
S 1.81 46.943 38.2 AIR
S 0.8 55.281 38.2 1.883/40.69
S 9.11 -144.041 38.2 1.765538/46.76
S 3.0 52.858 37.5 AIR
S 14.5 0 43.4 1.5168/64.14
S 1.6 0 43.4 AIR
I 1.0 0 43.4 AIR
"""
text2 = """
O 0 0 100.0 AIR
S 5.0 108.488 65.6 1.902650/35.77
S 7.65 -848.550 64.6 1.552981/55.07
S 2.8 50.252 56.9 AIR
S 18.12 -60.720 57.6 1.612660/44.46
S 2.8 2497.5 64.2 1.59319/67.9
S 9.15 -77.239 64.2 AIR
S 0.40 113.763 69.4 1.8485/43.79
S 10.95 -178.06 69.4 AIR
S 0.4 70.659 63.2 1.59319/67.9
S 9.74 -1968.5 63.2 AIR
S 0.2 289.687 59.7 1.59319/67.9
S 8.0 -97.087 58.0 1.738/32.33
S 2.8 47.074 49.0 AIR
A 8.7 0 46.5 AIR
S 5.29 -95.230 47.9 1.612660/44.46
S 2.2 41.204 48.6 1.497820/82.57
S 11.55 -273.092 48.6 AIR
S 0.2 76.173 50.0 1.883/40.69
S 9.5 -101.575 50.0 AIR
S 0.20 176.128 45.8 1.953750/32.33
S 7.45 -67.221 44.4 1.738/32.33
S 1.8 55.51 38.5 AIR
S 2.68 71.413 38.5 1.883/40.69
S 6.35 -115.025 38.5 1.69895/30.13
S 1.81 46.943 38.5 AIR
S 0.8 55.281 38.2 1.883/40.69
S 9.11 -144.041 38.2 1.765538/46.76
S 3.0 52.858 37.5 AIR
S 14.5 0 43.4 1.5168/64.14
S 1.6 0 43.4 AIR
I 1.0 0 43.4 AIR
"""
text3 = """
O 0 0 100.0 AIR
S 5.0 108.488 65.1 1.902650/35.77
S 7.65 -848.550 64.1 1.552981/55.07
S 2.8 50.252 56.5 AIR
S 18.12 -60.720 57.2 1.612660/44.46
S 2.8 2497.5 63.7 1.59319/67.9
S 9.15 -77.239 63.7 AIR
S 0.40 113.763 68.9 1.8485/43.79
S 10.95 -178.06 68.9 AIR
S 0.4 70.659 62.7 1.59319/67.9
S 9.74 -1968.5 62.7 AIR
S 0.2 289.687 59.2 1.59319/67.9
S 8.0 -97.087 57.5 1.738/32.33
S 2.8 47.074 48.6 AIR
A 8.7 0 45.85 AIR
S 5.29 -95.230 47.5 1.612660/44.46
S 2.2 41.204 48.2 1.497820/82.57
S 11.55 -273.092 48.2 AIR
S 0.2 76.173 49.6 1.883/40.69
S 9.5 -101.575 49.6 AIR
S 0.20 176.128 45.5 1.953750/32.33
S 7.45 -67.221 44.1 1.738/32.33
S 1.8 55.51 38.2 AIR
S 2.68 71.413 38.2 1.883/40.69
S 6.35 -115.025 38.2 1.69895/30.13
S 1.81 46.943 37.9 AIR
S 0.8 55.281 37.9 1.883/40.69
S 9.11 -144.041 37.9 1.765538/46.76
S 3.0 52.858 37.2 AIR
S 14.5 0 43.1 1.5168/64.14
S 1.6 0 43.1 AIR
I 1.0 0 43.4 AIR
"""
text4 = """
O 0 0 100.0 AIR
S 5.0 108.488 66.5 1.902650/35.77
S 7.65 -848.550 65.3 1.552981/55.07
S 2.8 50.252 58.3 AIR
S 18.12 -60.720 58.5 1.612660/44.46
S 2.8 2497.5 65.3 1.59319/67.9
S 9.15 -77.239 65.3 AIR
S 0.40 113.763 71.0 1.8485/43.79
S 10.95 -178.06 71.0 AIR
S 0.4 70.659 64.5 1.59319/67.9
S 9.74 -1968.5 64.5 AIR
S 0.2 289.687 60.5 1.59319/67.9
S 8.0 -97.087 59.2 1.738/32.33
S 2.8 47.074 49.8 AIR
A 8.7 0 47.7 AIR
S 5.29 -95.230 50.0 1.612660/44.46
S 2.2 41.204 50.0 1.497820/82.57
S 11.55 -273.092 48.1 AIR
S 0.2 76.173 51.0 1.883/40.69
S 9.5 -101.575 49.4 AIR
S 0.20 176.128 46.3 1.953750/32.33
S 7.45 -67.221 45.1 1.738/32.33
S 1.8 55.51 39.1 AIR
S 2.68 71.413 39.1 1.883/40.69
S 6.35 -115.025 39.1 1.69895/30.13
S 1.81 46.943 39.1 AIR
S 0.8 55.281 38.5 1.883/40.69
S 9.11 -144.041 38.0 1.765538/46.76
S 3.0 52.858 38.0 AIR
S 14.5 0 43.4 1.5168/64.14
S 1.6 0 43.4 AIR
I 1.0 0 43.4 AIR
"""
# A was 45.8 - changed to 44.6 to get F 0.9799
text5 = """
O 0 0 100.0 AIR
S 5.0 108.488 64.8 1.902650/35.77
S 7.65 -848.550 63.4 1.552981/55.07
S 2.8 50.252 56.0 AIR
S 18.12 -60.720 56.5 1.612660/44.46
S 2.8 2497.5 63.4 1.59319/67.9
S 9.15 -77.239 63.4 AIR
S 0.40 113.763 68.3 1.8485/43.79
S 10.95 -178.06 68.3 AIR
S 0.4 70.659 62.5 1.59319/67.9
S 9.74 -1968.5 62.5 AIR
S 0.2 289.687 58.7 1.59319/67.9
S 8.0 -97.087 57.2 1.738/32.33
S 2.8 47.074 48.3 AIR
A 8.7 0 44.6 AIR
S 5.29 -95.230 48.1 1.612660/44.46
S 2.2 41.204 48.1 1.497820/82.57
S 11.55 -273.092 48.1 AIR
S 0.2 76.173 49.4 1.883/40.69
S 9.5 -101.575 49.4 AIR
S 0.20 176.128 45.3 1.953750/32.33
S 7.45 -67.221 44.1 1.738/32.33
S 1.8 55.51 38.1 AIR
S 2.68 71.413 38.1 1.883/40.69
S 6.35 -115.025 38.1 1.69895/30.13
S 1.81 46.943 38.1 AIR
S 0.8 55.281 38.0 1.883/40.69
S 9.11 -144.041 37.6 1.765538/46.76
S 3.0 52.858 37.1 AIR
S 14.5 0 42.9 1.5168/64.14
S 1.6 0 42.9 AIR
I 1.0 0 43.4 AIR
"""
# 2 has error
text=text5
# wavelengths=[588e-9],
s = ro.system_from_text(text, columns.split(),
description=description)
s.object.angle = np.deg2rad(20.0)
## Aspheric data
s[1].conic = 0.0
s[1].aspherics = [0, -3.82177E-07, -6.06486E-11, -3.80172E-15, -1.32266E-18]
s[20].conic = 0.0
s[20].aspherics = [0, -1.15028E-06, -4.51771E-10, 2.72670E-13, -7.66812E-17]
s[28].conic = 0.0
s[28].aspherics = [0, 3.18645E-06, -1.14718E-08, 7.74567E-11, -2.24225E-13, 3.34790E-16, -1.70470E-19]
s.fields = 0, .7, 1.
s.update()
#s.paraxial.resize()
print(s)
System: Nikkor-Z-58mmf0.95-WO2019229849A1 Scale: 1.0 mm Wavelengths: 588, 656, 486 nm Fields: 0, 0.7, 1 Object: Semi-Angle: 20 deg Pupil: Pupil Distance: 74.2967 Refractive Index: 1.00028 Update Radius: True Radius: 30.437 Image: Radius: 21.7 Update Radius: True Pupil: Pupil Distance: -52.5815 Refractive Index: 1.00028 Update Radius: True Radius: 26.8367 Stop: 14 Elements: # T Distance Rad Curv Diameter Material n nd Vd 0 S 0 inf 100 basic/air 1.000 1.000 89.30 1 S 5 108.5 64.8 - 1.903 1.903 35.77 2 S 7.65 -848.5 63.4 - 1.553 1.553 55.07 3 S 2.8 50.25 56 basic/air 1.000 1.000 89.30 4 S 18.12 -60.72 56.5 - 1.613 1.613 44.46 5 S 2.8 2498 63.4 - 1.593 1.593 67.90 6 S 9.15 -77.24 63.4 basic/air 1.000 1.000 89.30 7 S 0.4 113.8 68.3 - 1.849 1.849 43.79 8 S 10.95 -178.1 68.3 basic/air 1.000 1.000 89.30 9 S 0.4 70.66 62.5 - 1.593 1.593 67.90 10 S 9.74 -1969 62.5 basic/air 1.000 1.000 89.30 11 S 0.2 289.7 58.7 - 1.593 1.593 67.90 12 S 8 -97.09 57.2 - 1.738 1.738 32.33 13 S 2.8 47.07 48.3 basic/air 1.000 1.000 89.30 14 S 8.7 inf 44.6 basic/air 1.000 1.000 89.30 15 S 5.29 -95.23 48.1 - 1.613 1.613 44.46 16 S 2.2 41.2 48.1 - 1.498 1.498 82.57 17 S 11.55 -273.1 48.1 basic/air 1.000 1.000 89.30 18 S 0.2 76.17 49.4 - 1.883 1.883 40.69 19 S 9.5 -101.6 49.4 basic/air 1.000 1.000 89.30 20 S 0.2 176.1 45.3 - 1.954 1.954 32.33 21 S 7.45 -67.22 44.1 - 1.738 1.738 32.33 22 S 1.8 55.51 38.1 basic/air 1.000 1.000 89.30 23 S 2.68 71.41 38.1 - 1.883 1.883 40.69 24 S 6.35 -115 38.1 - 1.699 1.699 30.13 25 S 1.81 46.94 38.1 basic/air 1.000 1.000 89.30 26 S 0.8 55.28 38 - 1.883 1.883 40.69 27 S 9.11 -144 37.6 - 1.766 1.766 46.76 28 S 3 52.86 37.1 basic/air 1.000 1.000 89.30 29 S 14.5 inf 42.9 - 1.517 1.517 64.14 30 S 1.6 inf 42.9 basic/air 1.000 1.000 89.30 31 S 1 inf 43.4 basic/air 1.000 1.000 89.30
ro.Analysis(s)
System: Nikkor-Z-58mmf0.95-WO2019229849A1 Scale: 1.0 mm Wavelengths: 588, 656, 486 nm Fields: 0, 0.7, 1 Object: Semi-Angle: 20 deg Pupil: Pupil Distance: 74.2967 Refractive Index: 1.00028 Update Radius: True Radius: 30.437 Image: Radius: 21.7 Update Radius: True Pupil: Pupil Distance: -52.5815 Refractive Index: 1.00028 Update Radius: True Radius: 26.8367 Stop: 14 Elements: # T Distance Rad Curv Diameter Material n nd Vd 0 S 0 inf 100 basic/air 1.000 1.000 89.30 1 S 5 108.5 64.8 - 1.903 1.903 35.77 2 S 7.65 -848.5 63.4 - 1.553 1.553 55.07 3 S 2.8 50.25 56 basic/air 1.000 1.000 89.30 4 S 18.12 -60.72 56.5 - 1.613 1.613 44.46 5 S 2.8 2498 63.4 - 1.593 1.593 67.90 6 S 9.15 -77.24 63.4 basic/air 1.000 1.000 89.30 7 S 0.4 113.8 68.3 - 1.849 1.849 43.79 8 S 10.95 -178.1 68.3 basic/air 1.000 1.000 89.30 9 S 0.4 70.66 62.5 - 1.593 1.593 67.90 10 S 9.74 -1969 62.5 basic/air 1.000 1.000 89.30 11 S 0.2 289.7 58.7 - 1.593 1.593 67.90 12 S 8 -97.09 57.2 - 1.738 1.738 32.33 13 S 2.8 47.07 48.3 basic/air 1.000 1.000 89.30 14 S 8.7 inf 44.6 basic/air 1.000 1.000 89.30 15 S 5.29 -95.23 48.1 - 1.613 1.613 44.46 16 S 2.2 41.2 48.1 - 1.498 1.498 82.57 17 S 11.55 -273.1 48.1 basic/air 1.000 1.000 89.30 18 S 0.2 76.17 49.4 - 1.883 1.883 40.69 19 S 9.5 -101.6 49.4 basic/air 1.000 1.000 89.30 20 S 0.2 176.1 45.3 - 1.954 1.954 32.33 21 S 7.45 -67.22 44.1 - 1.738 1.738 32.33 22 S 1.8 55.51 38.1 basic/air 1.000 1.000 89.30 23 S 2.68 71.41 38.1 - 1.883 1.883 40.69 24 S 6.35 -115 38.1 - 1.699 1.699 30.13 25 S 1.81 46.94 38.1 basic/air 1.000 1.000 89.30 26 S 0.8 55.28 38 - 1.883 1.883 40.69 27 S 9.11 -144 37.6 - 1.766 1.766 46.76 28 S 3 52.86 37.1 basic/air 1.000 1.000 89.30 29 S 14.5 inf 42.9 - 1.517 1.517 64.14 30 S 1.6 inf 42.9 basic/air 1.000 1.000 89.30 31 S 1.0171 inf 43.4 basic/air 1.000 1.000 89.30 lagrange: -11.341 track length: 159.75 object, image height: [27.6753 22.2141] front, back focal length (from PP): [-59.6528 59.6528] entry, exit pupil height: [30.437 26.8367] entry, exit pupil distance: [ 69.2967 -51.5815] front, back focal distance: [1.6406 1.0149] front, back principal distance: [ 61.2934 -58.6379] front, back nodal distance: [ 61.2934 -58.6379] front, back numerical aperture: [0. 0.4546] front, back f number: [0.9799 1.1114] front, back working f number: [ inf 1.1001] front, back airy radius: [ inf 0.0008] transverse, angular magnification: [-0. 1.1342] # T path n axial y axial nu chief y chief nu 0 S 0 1 30.44 0 -27.68 0.3726 1 S 5 1.903 30.44 -0.2532 -25.81 0.5873 2 S 12.65 1.553 29.42 -0.2653 -23.45 0.597 3 S 15.45 1 28.94 0.05302 -22.38 0.3509 4 S 33.57 1.613 29.9 0.3546 -16.02 0.1893 5 S 36.37 1.593 30.52 0.3548 -15.69 0.1892 6 S 45.52 1 32.55 0.1049 -14.6 0.3013 7 S 45.92 1.849 32.6 -0.1381 -14.48 0.4093 8 S 56.87 1 31.78 -0.2895 -12.06 0.4667 9 S 57.27 1.593 31.66 -0.5552 -11.87 0.5663 10 S 67.01 1 28.27 -0.5637 -8.41 0.5689 11 S 67.21 1.593 28.16 -0.6213 -8.296 0.5859 12 S 75.21 1.738 25.04 -0.584 -5.354 0.5779 13 S 78.01 1 24.1 -0.2064 -4.423 0.5086 14 S 86.71 1 22.3 -0.2064 1.404e-14 0.5086 15 S 92 1.613 21.21 -0.07 2.69 0.5259 16 S 94.2 1.498 21.11 -0.01116 3.407 0.5353 17 S 105.8 1 21.03 -0.04947 7.535 0.5216 18 S 106 1.883 21.02 -0.293 7.639 0.4331 19 S 115.5 1 19.54 -0.4628 9.824 0.3477 20 S 115.7 1.954 19.45 -0.5681 9.894 0.2942 21 S 123.1 1.738 17.28 -0.6236 11.02 0.2588 22 S 124.9 1 16.63 -0.4025 11.28 0.4088 23 S 127.6 1.883 15.56 -0.5948 12.38 0.2557 24 S 133.9 1.699 13.55 -0.6165 13.24 0.2346 25 S 135.7 1 12.89 -0.4246 13.49 0.4354 26 S 136.5 1.883 12.55 -0.625 13.84 0.2144 27 S 145.7 1.766 9.53 -0.6328 14.88 0.2022 28 S 148.7 1 8.455 -0.5104 15.22 0.4226 29 S 163.2 1.517 1.056 -0.5104 21.35 0.4226 30 S 164.8 1 0.518 -0.5104 21.79 0.4226 31 S 165.8 1 0.007733 -0.5104 22.21 0.4226 # T SA3 CMA3 AST3 PTZ3 DIS3 TACHC TCHC 0 S 0 0 0 0 0 0 0 1 S 2.155 -2.045 1.63 -0.5505 -1.697 -0.2219 -0.1064 2 S -0.1176 0.2357 -0.4727 -0.01757 0.983 -0.125 0.2506 3 S 1.828 -0.2747 0.04126 0.8919 -0.1402 0.2305 -0.03462 4 S 0.4716 -0.6596 0.9225 0.7875 -2.392 0.2199 -0.3076 5 S 0.01443 0.006908 0.003307 0.0003822 0.001766 0.06849 0.03279 6 S -0.1117 0.1729 -0.2678 -0.6067 1.354 -0.1107 0.1714 7 S -0.711 -0.3159 -0.1403 -0.5079 -0.288 -0.262 -0.1164 8 S -1.697 1.938 -2.213 -0.3245 2.898 -0.3053 0.3486 9 S 0.05517 0.1038 0.1953 -0.6633 -0.8805 -0.05395 -0.1015 10 S -3.189 3.162 -3.135 -0.02381 3.132 -0.1754 0.1739 11 S 1.912 -2.214 2.564 -0.1618 -2.782 0.141 -0.1633 12 S 1.344 -0.8773 0.5727 0.06785 -0.4181 0.3873 -0.2528 13 S -0.02851 -0.03868 -0.05247 1.135 1.469 0.1894 0.2569 14 S 0 -0 0 0 0 -0 0 15 S 0.6861 -0.7679 0.8594 0.5021 -1.524 0.1523 -0.1704 16 S 0.2596 0.2262 0.1972 0.1453 0.2985 0.1414 0.1232 17 S -0.01465 0.05722 -0.2235 -0.1532 1.471 -0.02095 0.08184 18 S -0.03507 -0.09628 -0.2644 -0.775 -2.854 -0.1074 -0.295 19 S -3.121 1.196 -0.4579 -0.5812 0.398 -0.2889 0.1107 20 S 1.971 -0.2252 1.293 -0.3489 -0.5555 0.2026 -0.2323 21 S -1.117 -0.02714-0.0006595 -0.1191 -0.002909 -0.0712 -0.00173 22 S -0.03368 0.2006 -1.195 0.9629 1.384 -0.04396 0.2619 23 S 0.1218 -0.384 1.211 -0.8266 -1.212 0.0648 -0.2044 24 S -0.4055 0.01936-0.0009241 -0.063 0.003052 0.04616 -0.002203 25 S -0.05973 0.2882 -1.39 1.103 1.386 -0.05165 0.2492 26 S 0.1188 -0.4128 1.434 -1.068 -1.273 0.05593 -0.1943 27 S -0.1402 0.00372-9.872e-05 -0.0309 0.0008226 -0.03151 0.0008361 28 S -0.2146 0.8089 -0.9677 1.033 1.079 -0.05379 0.1091 29 S 0.07768 -0.06432 0.05326 -0 -0.0441 0.005606 -0.004642 30 S -0.03809 0.03154 -0.02611 0 0.02162 -0.002749 0.002276 31 S 0 -0 0 0 0 -0 0 -0.01896 0.04679 0.1691 -0.1925 -0.181 -0.02107 -0.0142
<rayopt.analysis.Analysis at 0x16a4c74e588>