Shape.find_limbs

giant.ray_tracer.shapes.shape:

Shape.find_limbs(self, scan_center_dir, scan_dirs, observer_position=None)

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.

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 as None.

The returned limbs are expressed as vectors from the observer to the limb point in the current frame.

Parameters:
  • scan_center_dir (np.ndarray) – the unit vector which the scan is to begin at in the current frame as a length 3 array

  • scan_dirs (np.ndarray) – 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[np.ndarray]) – 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:

np.ndarray