optics.lens
index
/Users/wjh/Python/modules/optics/lens.py

Set of classes to implement various types lenses, being lists of surfaces, with additional
method to extract the geomertic parameters in a simple way.
 
This is the main user class for handling lenses.
 
Author:    Will Hossack, The Univesity of Edinburgh

 
Modules
       
optics.material
optics.ray
optics.surface
tio
optics.wavelength

 
Classes
       
__builtin__.list(__builtin__.object)
OpticalGroup
Lens
DataBaseLens
Eye
Singlet
SimpleSinglet

 
class DataBaseLens(Lens)
    Class to read lens from database of lenses.
 
 
Method resolution order:
DataBaseLens
Lens
OpticalGroup
__builtin__.list
__builtin__.object

Methods defined here:
__init__(self, fn=None)

Methods inherited from Lens:
__repr__(self)
Implement repr() method with full details, including all surfaces.
backFocalPlane(self, wave=0.55)
Get the back Focal Plane as an surface.OpticalPlane is global coordinates.
return surface.OpticalPlane in global coordinates.
backNodalPoint(self, wave=0.55)
Get the front nodal point as ray.Position in gobal cordilanes
return ray.Position in Global coordinates
backPrincipalPlane(self, wave=0.55)
Get the back principal place in gobal cordilanes as a surface.OpticalPlane in global coordinates
return surface.OpticalPlane in global coordinates
cardinalPoints(self, wave=0.55)
Method to get the six cardinal point of the lens system in global coordinates
Method to get the 6 cardinal points as a list, order is:
0:     Front Focal Point
1:     Back Focal Point
2:     Front principal plane
3:     Back principal plane
4:     Front nodal point (front principal plane for system in air)
5:     Back nodal point (back principal plane for system in air)
draw(self)
Method to draw the surfaces and add the paraxial planes.
focalLength(self, wave=0.55)
Method to get the (back) focal length calculated by paraxial matrix mecthods, which for positive lens will be +ve
param wave float, specified wavelength (default is wl.Default). This assumes the current lens is a simgle
compound lens in air so front and back focal lengths are the same.
return float, the focal length.
frontFocalPlane(self, wave=0.55)
Get the Front Focal Plane as an surface.OpticalPlane is global coordinates.
return surface.OpticalPlane in global coordinates.
frontNodalPoint(self, wave=0.55)
Get the front nodal point as ray.Position in gobal cordilanes
return ray.Position in Global coordinates
frontPrincipalPlane(self, wave=0.55)
Get the front principal place as an surface.OpticalPlane in gobal cordilanes
return surface.OpticalPlane in Global coordinates
setFocalLength(self, f, wave=0.55)
Method to set the geometric focal length of the lens by scaling. This assumes that the lens is
in air and we are setting the 'back focal length'. If requested focal length is -ve then
the surface curvatures will be reversed  but the positions will not be altered. This may give odd results
for compound lenses, use with care.
setIris(self, ratio)
Set the iris ratio if there is an IrisApeture in the group; if there is no iris this is ignored without message.

Methods inherited from OpticalGroup:
add(self, s)
Method to add a Surface to the end of the OpticalGroup, it also updates the 
.group variable is the Surface.
param s Surface to be appended.
 
Use this method rather than the underlying append.
entranceAperture(self)
Get the entrance aperture, begin circular aperture at the edge of the first element.
return CircularAperture with reference point in global coordinates.
exitAperture(self)
Get the exit aperture, being a circular aperture at the edge of the last element.
return CircularAperture with reference point in globalcoordinates.
imagePoint(self, op, wave=0.55)
Method to three-dimensional image of a point in obejct space in global coordinates using the ideal paxial
formulas.
param op Position, object point, can also ve Director or Angle where it will assume an onfinite object
return Position the image point.
paraxialGroup(self, wave=None)
Get the paraxial group pf this group at spectified wavelength. This will be
remade if either first call,surface added, or wavelength change.
planePair(self, mag, wave=0.55)
Get the object / image plane pair location on the optical axis
param mag float the magification (usually -ve for imaging system)
param wave float wavelength (default = wl.Default)
scale(self, a)
Scale the whole group, scales all surfaces but NOT the group point, normally
used to set the focal length of contained lens.
param a float, the scaling factor
setPoint(self, pt)
Method to set/reset the group point either with float,int of ray.Position

Data descriptors inherited from OpticalGroup:
__dict__
dictionary for instance variables (if defined)
__weakref__
list of weak references to the object (if defined)

Methods inherited from __builtin__.list:
__add__(...)
x.__add__(y) <==> x+y
__contains__(...)
x.__contains__(y) <==> y in x
__delitem__(...)
x.__delitem__(y) <==> del x[y]
__delslice__(...)
x.__delslice__(i, j) <==> del x[i:j]
 
Use of negative indices is not supported.
__eq__(...)
x.__eq__(y) <==> x==y
__ge__(...)
x.__ge__(y) <==> x>=y
__getattribute__(...)
x.__getattribute__('name') <==> x.name
__getitem__(...)
x.__getitem__(y) <==> x[y]
__getslice__(...)
x.__getslice__(i, j) <==> x[i:j]
 
Use of negative indices is not supported.
__gt__(...)
x.__gt__(y) <==> x>y
__iadd__(...)
x.__iadd__(y) <==> x+=y
__imul__(...)
x.__imul__(y) <==> x*=y
__iter__(...)
x.__iter__() <==> iter(x)
__le__(...)
x.__le__(y) <==> x<=y
__len__(...)
x.__len__() <==> len(x)
__lt__(...)
x.__lt__(y) <==> x<y
__mul__(...)
x.__mul__(n) <==> x*n
__ne__(...)
x.__ne__(y) <==> x!=y
__reversed__(...)
L.__reversed__() -- return a reverse iterator over the list
__rmul__(...)
x.__rmul__(n) <==> n*x
__setitem__(...)
x.__setitem__(i, y) <==> x[i]=y
__setslice__(...)
x.__setslice__(i, j, y) <==> x[i:j]=y
 
Use  of negative indices is not supported.
__sizeof__(...)
L.__sizeof__() -- size of L in memory, in bytes
append(...)
L.append(object) -- append object to end
count(...)
L.count(value) -> integer -- return number of occurrences of value
extend(...)
L.extend(iterable) -- extend list by appending elements from the iterable
index(...)
L.index(value, [start, [stop]]) -> integer -- return first index of value.
Raises ValueError if the value is not present.
insert(...)
L.insert(index, object) -- insert object before index
pop(...)
L.pop([index]) -> item -- remove and return item at index (default last).
Raises IndexError if list is empty or index is out of range.
remove(...)
L.remove(value) -- remove first occurrence of value.
Raises ValueError if the value is not present.
reverse(...)
L.reverse() -- reverse *IN PLACE*
sort(...)
L.sort(cmp=None, key=None, reverse=False) -- stable sort *IN PLACE*;
cmp(x, y) -> -1, 0, 1

Data and other attributes inherited from __builtin__.list:
__hash__ = None
__new__ = <built-in method __new__ of type object>
T.__new__(S, ...) -> a new object with type S, a subtype of T

 
class Eye(Lens)
    Class to model the eye using values from Hyperphysics and guesses at Abbe Numbers
 
 
Method resolution order:
Eye
Lens
OpticalGroup
__builtin__.list
__builtin__.object

Methods defined here:
__init__(self, pt)
Param pt, the location of the first surface
accommodation(self, a)
Method to simulate accomodation by altering the thickness and curvatutes of the crystaline lens
setNearPoint(self, distance)
Method to use the accommoation to set the NearPoint, this needs be a simple itterative
scheme.
param distance, near point distance from front Nodal point.
return float the accommodation parameter.

Methods inherited from Lens:
__repr__(self)
Implement repr() method with full details, including all surfaces.
backFocalPlane(self, wave=0.55)
Get the back Focal Plane as an surface.OpticalPlane is global coordinates.
return surface.OpticalPlane in global coordinates.
backNodalPoint(self, wave=0.55)
Get the front nodal point as ray.Position in gobal cordilanes
return ray.Position in Global coordinates
backPrincipalPlane(self, wave=0.55)
Get the back principal place in gobal cordilanes as a surface.OpticalPlane in global coordinates
return surface.OpticalPlane in global coordinates
cardinalPoints(self, wave=0.55)
Method to get the six cardinal point of the lens system in global coordinates
Method to get the 6 cardinal points as a list, order is:
0:     Front Focal Point
1:     Back Focal Point
2:     Front principal plane
3:     Back principal plane
4:     Front nodal point (front principal plane for system in air)
5:     Back nodal point (back principal plane for system in air)
draw(self)
Method to draw the surfaces and add the paraxial planes.
focalLength(self, wave=0.55)
Method to get the (back) focal length calculated by paraxial matrix mecthods, which for positive lens will be +ve
param wave float, specified wavelength (default is wl.Default). This assumes the current lens is a simgle
compound lens in air so front and back focal lengths are the same.
return float, the focal length.
frontFocalPlane(self, wave=0.55)
Get the Front Focal Plane as an surface.OpticalPlane is global coordinates.
return surface.OpticalPlane in global coordinates.
frontNodalPoint(self, wave=0.55)
Get the front nodal point as ray.Position in gobal cordilanes
return ray.Position in Global coordinates
frontPrincipalPlane(self, wave=0.55)
Get the front principal place as an surface.OpticalPlane in gobal cordilanes
return surface.OpticalPlane in Global coordinates
setFocalLength(self, f, wave=0.55)
Method to set the geometric focal length of the lens by scaling. This assumes that the lens is
in air and we are setting the 'back focal length'. If requested focal length is -ve then
the surface curvatures will be reversed  but the positions will not be altered. This may give odd results
for compound lenses, use with care.
setIris(self, ratio)
Set the iris ratio if there is an IrisApeture in the group; if there is no iris this is ignored without message.

Methods inherited from OpticalGroup:
add(self, s)
Method to add a Surface to the end of the OpticalGroup, it also updates the 
.group variable is the Surface.
param s Surface to be appended.
 
Use this method rather than the underlying append.
entranceAperture(self)
Get the entrance aperture, begin circular aperture at the edge of the first element.
return CircularAperture with reference point in global coordinates.
exitAperture(self)
Get the exit aperture, being a circular aperture at the edge of the last element.
return CircularAperture with reference point in globalcoordinates.
imagePoint(self, op, wave=0.55)
Method to three-dimensional image of a point in obejct space in global coordinates using the ideal paxial
formulas.
param op Position, object point, can also ve Director or Angle where it will assume an onfinite object
return Position the image point.
paraxialGroup(self, wave=None)
Get the paraxial group pf this group at spectified wavelength. This will be
remade if either first call,surface added, or wavelength change.
planePair(self, mag, wave=0.55)
Get the object / image plane pair location on the optical axis
param mag float the magification (usually -ve for imaging system)
param wave float wavelength (default = wl.Default)
scale(self, a)
Scale the whole group, scales all surfaces but NOT the group point, normally
used to set the focal length of contained lens.
param a float, the scaling factor
setPoint(self, pt)
Method to set/reset the group point either with float,int of ray.Position

Data descriptors inherited from OpticalGroup:
__dict__
dictionary for instance variables (if defined)
__weakref__
list of weak references to the object (if defined)

Methods inherited from __builtin__.list:
__add__(...)
x.__add__(y) <==> x+y
__contains__(...)
x.__contains__(y) <==> y in x
__delitem__(...)
x.__delitem__(y) <==> del x[y]
__delslice__(...)
x.__delslice__(i, j) <==> del x[i:j]
 
Use of negative indices is not supported.
__eq__(...)
x.__eq__(y) <==> x==y
__ge__(...)
x.__ge__(y) <==> x>=y
__getattribute__(...)
x.__getattribute__('name') <==> x.name
__getitem__(...)
x.__getitem__(y) <==> x[y]
__getslice__(...)
x.__getslice__(i, j) <==> x[i:j]
 
Use of negative indices is not supported.
__gt__(...)
x.__gt__(y) <==> x>y
__iadd__(...)
x.__iadd__(y) <==> x+=y
__imul__(...)
x.__imul__(y) <==> x*=y
__iter__(...)
x.__iter__() <==> iter(x)
__le__(...)
x.__le__(y) <==> x<=y
__len__(...)
x.__len__() <==> len(x)
__lt__(...)
x.__lt__(y) <==> x<y
__mul__(...)
x.__mul__(n) <==> x*n
__ne__(...)
x.__ne__(y) <==> x!=y
__reversed__(...)
L.__reversed__() -- return a reverse iterator over the list
__rmul__(...)
x.__rmul__(n) <==> n*x
__setitem__(...)
x.__setitem__(i, y) <==> x[i]=y
__setslice__(...)
x.__setslice__(i, j, y) <==> x[i:j]=y
 
Use  of negative indices is not supported.
__sizeof__(...)
L.__sizeof__() -- size of L in memory, in bytes
append(...)
L.append(object) -- append object to end
count(...)
L.count(value) -> integer -- return number of occurrences of value
extend(...)
L.extend(iterable) -- extend list by appending elements from the iterable
index(...)
L.index(value, [start, [stop]]) -> integer -- return first index of value.
Raises ValueError if the value is not present.
insert(...)
L.insert(index, object) -- insert object before index
pop(...)
L.pop([index]) -> item -- remove and return item at index (default last).
Raises IndexError if list is empty or index is out of range.
remove(...)
L.remove(value) -- remove first occurrence of value.
Raises ValueError if the value is not present.
reverse(...)
L.reverse() -- reverse *IN PLACE*
sort(...)
L.sort(cmp=None, key=None, reverse=False) -- stable sort *IN PLACE*;
cmp(x, y) -> -1, 0, 1

Data and other attributes inherited from __builtin__.list:
__hash__ = None
__new__ = <built-in method __new__ of type object>
T.__new__(S, ...) -> a new object with type S, a subtype of T

 
class Lens(OpticalGroup)
    Class to expend OpticalGroup with extra methods that assume that the Group hold a compound lens.
This and Singlet / SimpleSinglet are the two main user classes for ray tracing.
 
This class holds a list of surfaces in order they will be encourtered by a ray.
this is the class typically used to represent a lens for for full ray tracing.
 
The Lens has a group point that defines the start of the group in global coordinates
and the surfaces are located relative to this point. Moving the group point will
move the whole group on-mass.
 
 
Method resolution order:
Lens
OpticalGroup
__builtin__.list
__builtin__.object

Methods defined here:
__init__(self, group_pt, *args)
Constrtructor to make a Lens and add any Surfaces supplied in the argument list.
param group_pt ray Position or float. the Group reference point in global coordinates if supplied
as a float then (0,0,z) will be used, so will be on the optical axis.
param *args, list of Surfaces to be added to the Lens in order.
__repr__(self)
Implement repr() method with full details, including all surfaces.
backFocalPlane(self, wave=0.55)
Get the back Focal Plane as an surface.OpticalPlane is global coordinates.
return surface.OpticalPlane in global coordinates.
backNodalPoint(self, wave=0.55)
Get the front nodal point as ray.Position in gobal cordilanes
return ray.Position in Global coordinates
backPrincipalPlane(self, wave=0.55)
Get the back principal place in gobal cordilanes as a surface.OpticalPlane in global coordinates
return surface.OpticalPlane in global coordinates
cardinalPoints(self, wave=0.55)
Method to get the six cardinal point of the lens system in global coordinates
Method to get the 6 cardinal points as a list, order is:
0:     Front Focal Point
1:     Back Focal Point
2:     Front principal plane
3:     Back principal plane
4:     Front nodal point (front principal plane for system in air)
5:     Back nodal point (back principal plane for system in air)
draw(self)
Method to draw the surfaces and add the paraxial planes.
focalLength(self, wave=0.55)
Method to get the (back) focal length calculated by paraxial matrix mecthods, which for positive lens will be +ve
param wave float, specified wavelength (default is wl.Default). This assumes the current lens is a simgle
compound lens in air so front and back focal lengths are the same.
return float, the focal length.
frontFocalPlane(self, wave=0.55)
Get the Front Focal Plane as an surface.OpticalPlane is global coordinates.
return surface.OpticalPlane in global coordinates.
frontNodalPoint(self, wave=0.55)
Get the front nodal point as ray.Position in gobal cordilanes
return ray.Position in Global coordinates
frontPrincipalPlane(self, wave=0.55)
Get the front principal place as an surface.OpticalPlane in gobal cordilanes
return surface.OpticalPlane in Global coordinates
setFocalLength(self, f, wave=0.55)
Method to set the geometric focal length of the lens by scaling. This assumes that the lens is
in air and we are setting the 'back focal length'. If requested focal length is -ve then
the surface curvatures will be reversed  but the positions will not be altered. This may give odd results
for compound lenses, use with care.
setIris(self, ratio)
Set the iris ratio if there is an IrisApeture in the group; if there is no iris this is ignored without message.

Methods inherited from OpticalGroup:
add(self, s)
Method to add a Surface to the end of the OpticalGroup, it also updates the 
.group variable is the Surface.
param s Surface to be appended.
 
Use this method rather than the underlying append.
entranceAperture(self)
Get the entrance aperture, begin circular aperture at the edge of the first element.
return CircularAperture with reference point in global coordinates.
exitAperture(self)
Get the exit aperture, being a circular aperture at the edge of the last element.
return CircularAperture with reference point in globalcoordinates.
imagePoint(self, op, wave=0.55)
Method to three-dimensional image of a point in obejct space in global coordinates using the ideal paxial
formulas.
param op Position, object point, can also ve Director or Angle where it will assume an onfinite object
return Position the image point.
paraxialGroup(self, wave=None)
Get the paraxial group pf this group at spectified wavelength. This will be
remade if either first call,surface added, or wavelength change.
planePair(self, mag, wave=0.55)
Get the object / image plane pair location on the optical axis
param mag float the magification (usually -ve for imaging system)
param wave float wavelength (default = wl.Default)
scale(self, a)
Scale the whole group, scales all surfaces but NOT the group point, normally
used to set the focal length of contained lens.
param a float, the scaling factor
setPoint(self, pt)
Method to set/reset the group point either with float,int of ray.Position

Data descriptors inherited from OpticalGroup:
__dict__
dictionary for instance variables (if defined)
__weakref__
list of weak references to the object (if defined)

Methods inherited from __builtin__.list:
__add__(...)
x.__add__(y) <==> x+y
__contains__(...)
x.__contains__(y) <==> y in x
__delitem__(...)
x.__delitem__(y) <==> del x[y]
__delslice__(...)
x.__delslice__(i, j) <==> del x[i:j]
 
Use of negative indices is not supported.
__eq__(...)
x.__eq__(y) <==> x==y
__ge__(...)
x.__ge__(y) <==> x>=y
__getattribute__(...)
x.__getattribute__('name') <==> x.name
__getitem__(...)
x.__getitem__(y) <==> x[y]
__getslice__(...)
x.__getslice__(i, j) <==> x[i:j]
 
Use of negative indices is not supported.
__gt__(...)
x.__gt__(y) <==> x>y
__iadd__(...)
x.__iadd__(y) <==> x+=y
__imul__(...)
x.__imul__(y) <==> x*=y
__iter__(...)
x.__iter__() <==> iter(x)
__le__(...)
x.__le__(y) <==> x<=y
__len__(...)
x.__len__() <==> len(x)
__lt__(...)
x.__lt__(y) <==> x<y
__mul__(...)
x.__mul__(n) <==> x*n
__ne__(...)
x.__ne__(y) <==> x!=y
__reversed__(...)
L.__reversed__() -- return a reverse iterator over the list
__rmul__(...)
x.__rmul__(n) <==> n*x
__setitem__(...)
x.__setitem__(i, y) <==> x[i]=y
__setslice__(...)
x.__setslice__(i, j, y) <==> x[i:j]=y
 
Use  of negative indices is not supported.
__sizeof__(...)
L.__sizeof__() -- size of L in memory, in bytes
append(...)
L.append(object) -- append object to end
count(...)
L.count(value) -> integer -- return number of occurrences of value
extend(...)
L.extend(iterable) -- extend list by appending elements from the iterable
index(...)
L.index(value, [start, [stop]]) -> integer -- return first index of value.
Raises ValueError if the value is not present.
insert(...)
L.insert(index, object) -- insert object before index
pop(...)
L.pop([index]) -> item -- remove and return item at index (default last).
Raises IndexError if list is empty or index is out of range.
remove(...)
L.remove(value) -- remove first occurrence of value.
Raises ValueError if the value is not present.
reverse(...)
L.reverse() -- reverse *IN PLACE*
sort(...)
L.sort(cmp=None, key=None, reverse=False) -- stable sort *IN PLACE*;
cmp(x, y) -> -1, 0, 1

Data and other attributes inherited from __builtin__.list:
__hash__ = None
__new__ = <built-in method __new__ of type object>
T.__new__(S, ...) -> a new object with type S, a subtype of T

 
class OpticalGroup(__builtin__.list)
    Class to hold a list of surfaces in order they will be encourtered by a ray.
this is the class typically used to represent a lens or optical system for for full ray tracing.
 
The Group has a group point that defines the start of the group in global coordinates
and the surfaces are located relative to this point. Moving the group point will
move the whole group on-mass.
 
 
Method resolution order:
OpticalGroup
__builtin__.list
__builtin__.object

Methods defined here:
__init__(self, group_pt, *args)
Constrtructor to make an OpticalGroup and add any Surfaces supplied in the argument list.
param group_pt ray Position or float. The Group reference point is in global coordinates if supplied
as a float then (0,0,z) will be used, so will be on the optical axis.
param *args, list of Surfaces to be added to the OpticalGroup in order
__repr__(self)
Implement repr() method with full details, including all surfaces.
add(self, s)
Method to add a Surface to the end of the OpticalGroup, it also updates the 
.group variable is the Surface.
param s Surface to be appended.
 
Use this method rather than the underlying append.
draw(self)
Method to draw the surfaces   (but NOT the paraxial planes, see Lens.draw below)
entranceAperture(self)
Get the entrance aperture, begin circular aperture at the edge of the first element.
return CircularAperture with reference point in global coordinates.
exitAperture(self)
Get the exit aperture, being a circular aperture at the edge of the last element.
return CircularAperture with reference point in globalcoordinates.
imagePoint(self, op, wave=0.55)
Method to three-dimensional image of a point in obejct space in global coordinates using the ideal paxial
formulas.
param op Position, object point, can also ve Director or Angle where it will assume an onfinite object
return Position the image point.
paraxialGroup(self, wave=None)
Get the paraxial group pf this group at spectified wavelength. This will be
remade if either first call,surface added, or wavelength change.
planePair(self, mag, wave=0.55)
Get the object / image plane pair location on the optical axis
param mag float the magification (usually -ve for imaging system)
param wave float wavelength (default = wl.Default)
scale(self, a)
Scale the whole group, scales all surfaces but NOT the group point, normally
used to set the focal length of contained lens.
param a float, the scaling factor
setPoint(self, pt)
Method to set/reset the group point either with float,int of ray.Position

Data descriptors defined here:
__dict__
dictionary for instance variables (if defined)
__weakref__
list of weak references to the object (if defined)

Methods inherited from __builtin__.list:
__add__(...)
x.__add__(y) <==> x+y
__contains__(...)
x.__contains__(y) <==> y in x
__delitem__(...)
x.__delitem__(y) <==> del x[y]
__delslice__(...)
x.__delslice__(i, j) <==> del x[i:j]
 
Use of negative indices is not supported.
__eq__(...)
x.__eq__(y) <==> x==y
__ge__(...)
x.__ge__(y) <==> x>=y
__getattribute__(...)
x.__getattribute__('name') <==> x.name
__getitem__(...)
x.__getitem__(y) <==> x[y]
__getslice__(...)
x.__getslice__(i, j) <==> x[i:j]
 
Use of negative indices is not supported.
__gt__(...)
x.__gt__(y) <==> x>y
__iadd__(...)
x.__iadd__(y) <==> x+=y
__imul__(...)
x.__imul__(y) <==> x*=y
__iter__(...)
x.__iter__() <==> iter(x)
__le__(...)
x.__le__(y) <==> x<=y
__len__(...)
x.__len__() <==> len(x)
__lt__(...)
x.__lt__(y) <==> x<y
__mul__(...)
x.__mul__(n) <==> x*n
__ne__(...)
x.__ne__(y) <==> x!=y
__reversed__(...)
L.__reversed__() -- return a reverse iterator over the list
__rmul__(...)
x.__rmul__(n) <==> n*x
__setitem__(...)
x.__setitem__(i, y) <==> x[i]=y
__setslice__(...)
x.__setslice__(i, j, y) <==> x[i:j]=y
 
Use  of negative indices is not supported.
__sizeof__(...)
L.__sizeof__() -- size of L in memory, in bytes
append(...)
L.append(object) -- append object to end
count(...)
L.count(value) -> integer -- return number of occurrences of value
extend(...)
L.extend(iterable) -- extend list by appending elements from the iterable
index(...)
L.index(value, [start, [stop]]) -> integer -- return first index of value.
Raises ValueError if the value is not present.
insert(...)
L.insert(index, object) -- insert object before index
pop(...)
L.pop([index]) -> item -- remove and return item at index (default last).
Raises IndexError if list is empty or index is out of range.
remove(...)
L.remove(value) -- remove first occurrence of value.
Raises ValueError if the value is not present.
reverse(...)
L.reverse() -- reverse *IN PLACE*
sort(...)
L.sort(cmp=None, key=None, reverse=False) -- stable sort *IN PLACE*;
cmp(x, y) -> -1, 0, 1

Data and other attributes inherited from __builtin__.list:
__hash__ = None
__new__ = <built-in method __new__ of type object>
T.__new__(S, ...) -> a new object with type S, a subtype of T

 
class SimpleSinglet(Singlet)
    Class to make a simple singlet with specified focal length, radius, type / bend
 
 
Method resolution order:
SimpleSinglet
Singlet
Lens
OpticalGroup
__builtin__.list
__builtin__.object

Methods defined here:
__init__(self, pt_or_z, f, r, bend=0.0, index='BK7')
Simple lens:
param pt_or_z location of lens, either ray.Position or location on z-axis
param f focal length
param r radius 
param bend, (default of 0.0, so biconvex). Thsi can also be specified as string, being
"biconvex", "planoconvex", or "convexplano".  (Note if focal length < 0, then the convex surfaces
will actually be concave)
param index refarctiveindex, can be glass key, (default = "BK7")

Methods inherited from Singlet:
__repr__(self)
Implment repr() with useful details in readable form position, focal length, radius, bend, centre / edge
thickness thats than surface deatils
getBend(self)
Get the bend parameter of the lens given buy the back and front curvatures
return float the bend of the lens.
getEdgeThickness(self)
Get the edge thickness
getFNo(self, wave=0.55)
Get the FNo, so focallength / diameter
getRadius(self)
Get the radius of the lens
getThickness(self)
Get the thickness of the lens as the centre
setBend(self, beta)
Set the bend of the lens of the lens by varying the curvatures
param bend the bend parameter.
Note changing the bend will alter the focal length
Standard values are for positive lens are:
0 = byconvex
1 = convex - plano
-1 - plano - convex
setCentreThickness(self, t=0.0)
Method to set the centre thickness
param t the centre thickness, (default = 0.0, set to minumum)
setCurvatures(self, front, back)
re-set the front and back curvatues of the lens
param front the front curvature
param back the back curvature
setEdgeThickness(self, t=0.0)
Method to set the edge thickness by moving the second surface, i
setParameters(self, focal, radius, thick=0.0, wave=0.55)
Method to set the normal optical paramteters of the current lens by scaling
param focal float focal length
param radius the radius
param thick (thickness, either centre of eddge depending of whick is less, default = 0.0 or thinest)
param wave wavelength (default = wl.Default):
Note this is itteraative since that all repend on each other in a non-lienar way !
setRadius(self, r)
Sets max radus of the two surfaces
setThickness(self, t=0.0)
Set lens so that edge / centre is set to to sepcified value. Called with t = 0 (or default)
will set the current lens to the thinnest possible.

Methods inherited from Lens:
backFocalPlane(self, wave=0.55)
Get the back Focal Plane as an surface.OpticalPlane is global coordinates.
return surface.OpticalPlane in global coordinates.
backNodalPoint(self, wave=0.55)
Get the front nodal point as ray.Position in gobal cordilanes
return ray.Position in Global coordinates
backPrincipalPlane(self, wave=0.55)
Get the back principal place in gobal cordilanes as a surface.OpticalPlane in global coordinates
return surface.OpticalPlane in global coordinates
cardinalPoints(self, wave=0.55)
Method to get the six cardinal point of the lens system in global coordinates
Method to get the 6 cardinal points as a list, order is:
0:     Front Focal Point
1:     Back Focal Point
2:     Front principal plane
3:     Back principal plane
4:     Front nodal point (front principal plane for system in air)
5:     Back nodal point (back principal plane for system in air)
draw(self)
Method to draw the surfaces and add the paraxial planes.
focalLength(self, wave=0.55)
Method to get the (back) focal length calculated by paraxial matrix mecthods, which for positive lens will be +ve
param wave float, specified wavelength (default is wl.Default). This assumes the current lens is a simgle
compound lens in air so front and back focal lengths are the same.
return float, the focal length.
frontFocalPlane(self, wave=0.55)
Get the Front Focal Plane as an surface.OpticalPlane is global coordinates.
return surface.OpticalPlane in global coordinates.
frontNodalPoint(self, wave=0.55)
Get the front nodal point as ray.Position in gobal cordilanes
return ray.Position in Global coordinates
frontPrincipalPlane(self, wave=0.55)
Get the front principal place as an surface.OpticalPlane in gobal cordilanes
return surface.OpticalPlane in Global coordinates
setFocalLength(self, f, wave=0.55)
Method to set the geometric focal length of the lens by scaling. This assumes that the lens is
in air and we are setting the 'back focal length'. If requested focal length is -ve then
the surface curvatures will be reversed  but the positions will not be altered. This may give odd results
for compound lenses, use with care.
setIris(self, ratio)
Set the iris ratio if there is an IrisApeture in the group; if there is no iris this is ignored without message.

Methods inherited from OpticalGroup:
add(self, s)
Method to add a Surface to the end of the OpticalGroup, it also updates the 
.group variable is the Surface.
param s Surface to be appended.
 
Use this method rather than the underlying append.
entranceAperture(self)
Get the entrance aperture, begin circular aperture at the edge of the first element.
return CircularAperture with reference point in global coordinates.
exitAperture(self)
Get the exit aperture, being a circular aperture at the edge of the last element.
return CircularAperture with reference point in globalcoordinates.
imagePoint(self, op, wave=0.55)
Method to three-dimensional image of a point in obejct space in global coordinates using the ideal paxial
formulas.
param op Position, object point, can also ve Director or Angle where it will assume an onfinite object
return Position the image point.
paraxialGroup(self, wave=None)
Get the paraxial group pf this group at spectified wavelength. This will be
remade if either first call,surface added, or wavelength change.
planePair(self, mag, wave=0.55)
Get the object / image plane pair location on the optical axis
param mag float the magification (usually -ve for imaging system)
param wave float wavelength (default = wl.Default)
scale(self, a)
Scale the whole group, scales all surfaces but NOT the group point, normally
used to set the focal length of contained lens.
param a float, the scaling factor
setPoint(self, pt)
Method to set/reset the group point either with float,int of ray.Position

Data descriptors inherited from OpticalGroup:
__dict__
dictionary for instance variables (if defined)
__weakref__
list of weak references to the object (if defined)

Methods inherited from __builtin__.list:
__add__(...)
x.__add__(y) <==> x+y
__contains__(...)
x.__contains__(y) <==> y in x
__delitem__(...)
x.__delitem__(y) <==> del x[y]
__delslice__(...)
x.__delslice__(i, j) <==> del x[i:j]
 
Use of negative indices is not supported.
__eq__(...)
x.__eq__(y) <==> x==y
__ge__(...)
x.__ge__(y) <==> x>=y
__getattribute__(...)
x.__getattribute__('name') <==> x.name
__getitem__(...)
x.__getitem__(y) <==> x[y]
__getslice__(...)
x.__getslice__(i, j) <==> x[i:j]
 
Use of negative indices is not supported.
__gt__(...)
x.__gt__(y) <==> x>y
__iadd__(...)
x.__iadd__(y) <==> x+=y
__imul__(...)
x.__imul__(y) <==> x*=y
__iter__(...)
x.__iter__() <==> iter(x)
__le__(...)
x.__le__(y) <==> x<=y
__len__(...)
x.__len__() <==> len(x)
__lt__(...)
x.__lt__(y) <==> x<y
__mul__(...)
x.__mul__(n) <==> x*n
__ne__(...)
x.__ne__(y) <==> x!=y
__reversed__(...)
L.__reversed__() -- return a reverse iterator over the list
__rmul__(...)
x.__rmul__(n) <==> n*x
__setitem__(...)
x.__setitem__(i, y) <==> x[i]=y
__setslice__(...)
x.__setslice__(i, j, y) <==> x[i:j]=y
 
Use  of negative indices is not supported.
__sizeof__(...)
L.__sizeof__() -- size of L in memory, in bytes
append(...)
L.append(object) -- append object to end
count(...)
L.count(value) -> integer -- return number of occurrences of value
extend(...)
L.extend(iterable) -- extend list by appending elements from the iterable
index(...)
L.index(value, [start, [stop]]) -> integer -- return first index of value.
Raises ValueError if the value is not present.
insert(...)
L.insert(index, object) -- insert object before index
pop(...)
L.pop([index]) -> item -- remove and return item at index (default last).
Raises IndexError if list is empty or index is out of range.
remove(...)
L.remove(value) -- remove first occurrence of value.
Raises ValueError if the value is not present.
reverse(...)
L.reverse() -- reverse *IN PLACE*
sort(...)
L.sort(cmp=None, key=None, reverse=False) -- stable sort *IN PLACE*;
cmp(x, y) -> -1, 0, 1

Data and other attributes inherited from __builtin__.list:
__hash__ = None
__new__ = <built-in method __new__ of type object>
T.__new__(S, ...) -> a new object with type S, a subtype of T

 
class Singlet(Lens)
    Class to implement a singlet lens with simpler interface than OpticalGroup and additional 
method to alter the lens.
 
 
Method resolution order:
Singlet
Lens
OpticalGroup
__builtin__.list
__builtin__.object

Methods defined here:
__init__(self, pt_or_z, cl, t, cr, rad=10.0, index='BK7')
Basic constructor for Singlet
param pt_or_z the group point
param c1 float curvature of front
param t thickness at centre
param cr float curvature of back
param radius max radius (defaults = 10.0)
param index, may be RefrativeIndex or material key, (default = "BK7")
__repr__(self)
Implment repr() with useful details in readable form position, focal length, radius, bend, centre / edge
thickness thats than surface deatils
getBend(self)
Get the bend parameter of the lens given buy the back and front curvatures
return float the bend of the lens.
getEdgeThickness(self)
Get the edge thickness
getFNo(self, wave=0.55)
Get the FNo, so focallength / diameter
getRadius(self)
Get the radius of the lens
getThickness(self)
Get the thickness of the lens as the centre
setBend(self, beta)
Set the bend of the lens of the lens by varying the curvatures
param bend the bend parameter.
Note changing the bend will alter the focal length
Standard values are for positive lens are:
0 = byconvex
1 = convex - plano
-1 - plano - convex
setCentreThickness(self, t=0.0)
Method to set the centre thickness
param t the centre thickness, (default = 0.0, set to minumum)
setCurvatures(self, front, back)
re-set the front and back curvatues of the lens
param front the front curvature
param back the back curvature
setEdgeThickness(self, t=0.0)
Method to set the edge thickness by moving the second surface, i
setParameters(self, focal, radius, thick=0.0, wave=0.55)
Method to set the normal optical paramteters of the current lens by scaling
param focal float focal length
param radius the radius
param thick (thickness, either centre of eddge depending of whick is less, default = 0.0 or thinest)
param wave wavelength (default = wl.Default):
Note this is itteraative since that all repend on each other in a non-lienar way !
setRadius(self, r)
Sets max radus of the two surfaces
setThickness(self, t=0.0)
Set lens so that edge / centre is set to to sepcified value. Called with t = 0 (or default)
will set the current lens to the thinnest possible.

Methods inherited from Lens:
backFocalPlane(self, wave=0.55)
Get the back Focal Plane as an surface.OpticalPlane is global coordinates.
return surface.OpticalPlane in global coordinates.
backNodalPoint(self, wave=0.55)
Get the front nodal point as ray.Position in gobal cordilanes
return ray.Position in Global coordinates
backPrincipalPlane(self, wave=0.55)
Get the back principal place in gobal cordilanes as a surface.OpticalPlane in global coordinates
return surface.OpticalPlane in global coordinates
cardinalPoints(self, wave=0.55)
Method to get the six cardinal point of the lens system in global coordinates
Method to get the 6 cardinal points as a list, order is:
0:     Front Focal Point
1:     Back Focal Point
2:     Front principal plane
3:     Back principal plane
4:     Front nodal point (front principal plane for system in air)
5:     Back nodal point (back principal plane for system in air)
draw(self)
Method to draw the surfaces and add the paraxial planes.
focalLength(self, wave=0.55)
Method to get the (back) focal length calculated by paraxial matrix mecthods, which for positive lens will be +ve
param wave float, specified wavelength (default is wl.Default). This assumes the current lens is a simgle
compound lens in air so front and back focal lengths are the same.
return float, the focal length.
frontFocalPlane(self, wave=0.55)
Get the Front Focal Plane as an surface.OpticalPlane is global coordinates.
return surface.OpticalPlane in global coordinates.
frontNodalPoint(self, wave=0.55)
Get the front nodal point as ray.Position in gobal cordilanes
return ray.Position in Global coordinates
frontPrincipalPlane(self, wave=0.55)
Get the front principal place as an surface.OpticalPlane in gobal cordilanes
return surface.OpticalPlane in Global coordinates
setFocalLength(self, f, wave=0.55)
Method to set the geometric focal length of the lens by scaling. This assumes that the lens is
in air and we are setting the 'back focal length'. If requested focal length is -ve then
the surface curvatures will be reversed  but the positions will not be altered. This may give odd results
for compound lenses, use with care.
setIris(self, ratio)
Set the iris ratio if there is an IrisApeture in the group; if there is no iris this is ignored without message.

Methods inherited from OpticalGroup:
add(self, s)
Method to add a Surface to the end of the OpticalGroup, it also updates the 
.group variable is the Surface.
param s Surface to be appended.
 
Use this method rather than the underlying append.
entranceAperture(self)
Get the entrance aperture, begin circular aperture at the edge of the first element.
return CircularAperture with reference point in global coordinates.
exitAperture(self)
Get the exit aperture, being a circular aperture at the edge of the last element.
return CircularAperture with reference point in globalcoordinates.
imagePoint(self, op, wave=0.55)
Method to three-dimensional image of a point in obejct space in global coordinates using the ideal paxial
formulas.
param op Position, object point, can also ve Director or Angle where it will assume an onfinite object
return Position the image point.
paraxialGroup(self, wave=None)
Get the paraxial group pf this group at spectified wavelength. This will be
remade if either first call,surface added, or wavelength change.
planePair(self, mag, wave=0.55)
Get the object / image plane pair location on the optical axis
param mag float the magification (usually -ve for imaging system)
param wave float wavelength (default = wl.Default)
scale(self, a)
Scale the whole group, scales all surfaces but NOT the group point, normally
used to set the focal length of contained lens.
param a float, the scaling factor
setPoint(self, pt)
Method to set/reset the group point either with float,int of ray.Position

Data descriptors inherited from OpticalGroup:
__dict__
dictionary for instance variables (if defined)
__weakref__
list of weak references to the object (if defined)

Methods inherited from __builtin__.list:
__add__(...)
x.__add__(y) <==> x+y
__contains__(...)
x.__contains__(y) <==> y in x
__delitem__(...)
x.__delitem__(y) <==> del x[y]
__delslice__(...)
x.__delslice__(i, j) <==> del x[i:j]
 
Use of negative indices is not supported.
__eq__(...)
x.__eq__(y) <==> x==y
__ge__(...)
x.__ge__(y) <==> x>=y
__getattribute__(...)
x.__getattribute__('name') <==> x.name
__getitem__(...)
x.__getitem__(y) <==> x[y]
__getslice__(...)
x.__getslice__(i, j) <==> x[i:j]
 
Use of negative indices is not supported.
__gt__(...)
x.__gt__(y) <==> x>y
__iadd__(...)
x.__iadd__(y) <==> x+=y
__imul__(...)
x.__imul__(y) <==> x*=y
__iter__(...)
x.__iter__() <==> iter(x)
__le__(...)
x.__le__(y) <==> x<=y
__len__(...)
x.__len__() <==> len(x)
__lt__(...)
x.__lt__(y) <==> x<y
__mul__(...)
x.__mul__(n) <==> x*n
__ne__(...)
x.__ne__(y) <==> x!=y
__reversed__(...)
L.__reversed__() -- return a reverse iterator over the list
__rmul__(...)
x.__rmul__(n) <==> n*x
__setitem__(...)
x.__setitem__(i, y) <==> x[i]=y
__setslice__(...)
x.__setslice__(i, j, y) <==> x[i:j]=y
 
Use  of negative indices is not supported.
__sizeof__(...)
L.__sizeof__() -- size of L in memory, in bytes
append(...)
L.append(object) -- append object to end
count(...)
L.count(value) -> integer -- return number of occurrences of value
extend(...)
L.extend(iterable) -- extend list by appending elements from the iterable
index(...)
L.index(value, [start, [stop]]) -> integer -- return first index of value.
Raises ValueError if the value is not present.
insert(...)
L.insert(index, object) -- insert object before index
pop(...)
L.pop([index]) -> item -- remove and return item at index (default last).
Raises IndexError if list is empty or index is out of range.
remove(...)
L.remove(value) -- remove first occurrence of value.
Raises ValueError if the value is not present.
reverse(...)
L.reverse() -- reverse *IN PLACE*
sort(...)
L.sort(cmp=None, key=None, reverse=False) -- stable sort *IN PLACE*;
cmp(x, y) -> -1, 0, 1

Data and other attributes inherited from __builtin__.list:
__hash__ = None
__new__ = <built-in method __new__ of type object>
T.__new__(S, ...) -> a new object with type S, a subtype of T