pyoptools.raytrace.shape package

Module contents

class pyoptools.raytrace.shape.Shape

Bases: pyoptools.misc.picklable.picklable.Picklable

Abstract superclass for all optical surfaces shapes

Description:

Shape is an abstract superclass to define the different surfaces shapes (circular, rectangulas, etc.). This class defines an API that all subclasses must support.

The methods that must be overloaded in the subclasses are:

Shape.hit
This method must return TRUE if an X,Y point is inside the surface aperture if not it must return FALSE
Shape.polylist
This method should return a point_list, and a poly_list. The point list is a list of tuples (X,Y,Z) containing the coordinates of the points used to build the surface mesh. The poly_list is a list of tuples (n1,n2,n3,n3) containing the indices of the points in the polylist used to build each polygon that will be used to visualize the mesh.

This methods will be called by the Shape.hit method, and to create the Shape.polylist tuple, that will a point_list and a poly_list. The point_list is a list of tuples (X,Y,Z) containing the coordinates of the points used to build the surface mesh. The poly_list is a list of tuples (n1,n2,n3,n3) containing the indices of the points in the polylist used to build each polygon that will be used to visualize the mesh.

The attribute topo, will be initialized for each instance of the class with a function Z(x,y).

fhit()

This method returns TRUE if an p=(x,y,z)point is inside the surface aperture if not it must return FALSE. This is implemented for a point, in cython, to make it fast.

It must be overloaded.

hit()

This method must return TRUE if an p=(x,y,z)point is inside the surface aperture if not it must return FALSE. This must work for a list of points.

It must be overloaded.

limits()

Returns the minimum limits for the aperture It must be overloaded, for each shape

mesh()

The X,Y are a mesh limited by size=(xi,xf,yi,yf) if size is not given (size=None), the size is given by the aperture. topo is the topography function of the surface under study. if not given, a 0 will be returned for points outside the aperture, and 1 inside the aperture

The ndat tuple, gives the number of points in the mesh.

pointlist()

This method should return a point_list that samples adecuately the shape.

The return value must be a tuple (X,Y) where X contains the X coordinates of the points, and Y the y coordinates. It must be overloaded, for each shape

class pyoptools.raytrace.shape.Circular

Bases: pyoptools.raytrace.shape.shape.Shape

Class defining an circular shape.

fhit()

This method returns TRUE if an p=(x,y,z)point is inside the surface aperture if not it must return FALSE. This is implemented for a point, in cython, to make it fast

hit()

Method that returns True if a p=(X,Y,Z) point is inside the aperture, if not it returns False.

limits()

Returns the minimum limits for the aperture

pointlist()

This method should return a point_list that samples adecuately the shape.

The return value must be a tuple (X,Y) where X contains the X coordinates of the points, and Y the y coordinates. It must be overloaded, for each shape

radius
samples
class pyoptools.raytrace.shape.Rectangular

Bases: pyoptools.raytrace.shape.shape.Shape

Class defining an rectangular shape.

fhit()

This method returns TRUE if an p=(x,y,z)point is inside the surface aperture if not it must return FALSE. This is implemented for a point, in cython, to make it fast

hit()

Method that returns True if a p=(x,y,z) point is inside the rectangle, if not it returns False.

limits()

Returns the minimum limits for the aperture

offset
pointlist()

This method should return a point_list that samples adecuately the shape.

The return value must be a tuple (X,Y) where X contains the X coordinates of the points, and Y the y coordinates. It must be overloaded, for each shape

samples
size
class pyoptools.raytrace.shape.Triangular(coord=((0, 0), (0, 100), (100, 0)), samples=10, *args, **kwargs)

Bases: pyoptools.raytrace.shape.shape.Shape

Class defining a triangular shape.

coord
fhit(self, double px, double py, double pz) → bool

This method returns TRUE if an p=(x,y,z)point is inside the surface aperture if not it must return FALSE. This is implemented for a point, in cython, to make it fast

hit(self, p)

Method that returns True if a p=(x,y,z) point is inside the triangle, if not it returns False. taken from http://www.blackpawn.com/texts/pointinpoly/default.html

limits(self)

Returns the minimum limits for the aperture

pointlist(self)
samples
class pyoptools.raytrace.shape.Polygon(coord=((0, 0), (0, 100), (100, 0)), samples=10, *args, **kwargs)

Bases: pyoptools.raytrace.shape.shape.Shape

class defining a polygonal shape

Args:
coords (tuple): Tuple containing the coordinates of the 3 corners
of a triangle. Each coordinate is a(float, float) tuple.
samples (int): Number of subdivitions per side used to sample the
triangle.

Todo

  • This class is a copy of the Triangular class. Need to be implemented correctly.
coord
fhit(self, double px, double py, double pz) → bool

This method returns TRUE if an p=(x,y,z)point is inside the surface aperture if not it must return FALSE. This is implemented for a point, in cython, to make it fast

hit(self, p)

Method that returns True if a p=(x,y,z) point is inside the triangle, if not it returns False. taken from http://www.blackpawn.com/texts/pointinpoly/default.html

limits(self)

Returns the minimum limits for the aperture

pointlist(self)
samples