Surface64.compute_limb_jacobian¶
giant.ray_tracer.shapes.surface
:
- Surface64.compute_limb_jacobian(self, scan_center_dir, scan_dirs, limb_points, observer_position=None)¶
This method computes the linear change in the limb location given a change in the relative position between the surface and the observer.
The limb Jacobian is approximated using the limb jacobian of the reference ellipsoid for the surface. See
Ellipsoid.compute_limb_jacobian()
for details. In addition, see paper https://seal.rpi.edu/sites/default/files/workshop/2018/papers-abstracts/Limb%20Based%20Optical%20Navigation%20for%20Irregular%20Bodies.pdf for why this is an OK approximation.- 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).limb_points (np.ndarray) – The vectors from the observer to the limb points in the current frame as a 3xn numpy array where each column corresponds to the same column in the
scan_dirs
attribute.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 jacobian matrix as a nx3x3 array where each panel corresponds to the column in the
limb_points
input.