Shape

giant.ray_tracer.shapes.shape:

class giant.ray_tracer.shapes.shape.Shape

This represents the minimum required interface for an object to be considered traceable in GIANT.

This is essentially an abstract base class (though abstract base classes do not actually exist as c extensions). It defines the minimum interface for geometry in GIANT to be considered traceable in the normal Scene setup in GIANT. All of the built in GIANT geometry that is traceable inherits from this class.

In general, a user will never actually use this class unless they are (a) defining a new geometry, in which case they should inherit from this class and override its 4 methods or (b) creating something where they want to accept renderable geometry, in which case they should use this as the base class for the type of class that they accept.

bounding_box: AxisAlignedBoundingBox

The AxisAlignedBoundingBox that fully contains this shape.

Summary of Methods

compute_intersect

This method computes the intersections between a ray and the geometry defined by the class, returning the results as a numpy array with type INTERSECT_DTYPE.

rotate

This method rotates the shape in place.

trace

This method computes the intersections between a series of rays and the geometry defined by the class, returning the results as a numpy array with type INTERSECT_DTYPE.

translate

This method translates the shape in place.

find_limbs

The method determines the limb points (visible edge of the shape) that would be an observed for an observer located at observer_position looking toward scan_center_dir along the directions given by scan_dirs.

compute_limb_jacobian

This method computes the linear change in the limb location given a change in the relative position between the ellipsoid and the shape.