Surface.find_limbs¶
giant.ray_tracer.shapes.surface
:
- Surface.find_limbs(self, scan_center_dir, scan_dirs, observer_position=None)¶
This method determines the limb points for a surface (visible edge of the surface) that would be visible for an observer located at
observer_position
looking towardscan_center_dir
along the directions given byscan_dirs
.Typically it is assumed that the location of the observer is at the origin of the current frame and therefore
observer_position
can be left asNone
.This method operates iteratively, as described by
find_limbs_surface()
. To have more control over the accuracy of the limb points you should use thefind_limbs_surface()
function directly.The returned limbs are expressed as vectors from the observer to the limb point in the current frame as a 3xn numpy array.
- Parameters:
scan_center_dir (ARRAY_LIKE) – the unit vector which the scan is to begin at in the current frame as a length 3 array A ray cast along this unit vector from the
observer_position
should be guaranteed to strike the surface and ideally should be towards the center of figure of the surfacescan_dirs (ARRAY_LIKE) – the unit vectors along with the scan is to proceed as a 3xn array in the current frame where each column represents a new limb point we wish to find (should be nearly orthogonal to the
scan_center_dir
in most cases).observer_position (Optional[ARRAY_LIKE]) – The location of the observer in the current frame. If
None
then it is assumed the observer is at the origin of the current frame
- Returns:
the vectors from the observer to the limbs in the current frame as a 3xn array
- Return type:
numpy.ndarray