Surface¶
giant.ray_tracer.shapes.surface:
- class giant.ray_tracer.shapes.surface.Surface¶
- This defines the basic interface expected of all surfaces in GIANT. - In GIANT, a surface is considered anything that is represented by tesselation. As such, it has a few distinguishing characteristics. (1) limbs are found iteratively instead of analytically, (2) the limb jacobian is approximated, and (3) we have a - reference_ellipsoidwhich is the best fit ellipsoid to the surface used for approximating that jacobian. This class makes these distinctions explicit.- You cannot directly use this class in GIANT (it doesn’t even have an init method). Instead, you should either use it for instance checks (all surfaces and surface acceleration structures inherit from this class) or you should subclass it in you adding a new surface. When you do subclass you should no longer have to worry about implementing methods - find_limbs()or- compute_limb_jacobian()as they are already implemented for you. In general you should only directly inherit from this if you are defining a new surface acceleration structure. If you are defining a new surface in general you should instead from- Surface32or- Surface64which subsequently inherit from this class.- bounding_box: AxisAlignedBoundingBox¶
- The - AxisAlignedBoundingBoxthat fully contains this solid.
 
Summary of Methods
| compute_intersect(self, ray) | |
| compute_limb_jacobian(self, scan_center_dir, scan_dirs, limb_points, observer_position=None) | |
| find_limbs(self, scan_center_dir, scan_dirs, observer_position=None) | |
| This method rotates the shape in place. | |
| trace(self, rays, omp=True) | |
| This method translates the shape in place. | 
