McEwenIllumination.compute_photoclinometry_jacobian

giant.ray_tracer.illumination:

McEwenIllumination.compute_photoclinometry_jacobian(observations, rotation_to_inertial, max_inc=1.2217304763960306, max_emi=1.2217304763960306, max_phase=2.443460952792061, update=False, update_weight=0.005)[source]

This computes the Jacobian matrix of the change in the illumination values given a change in the surface normal (represented by a change in the surface slope) and a change in the local albedo values.

Mathematically the jacobian is

J=I[hxhyα]=[IhxIhyIα]

where

Ihx=In^n^nnhxIhy=In^n^nnhyIα=α0((1β)nTi+2βnTinTi+nTe)In^=Icos(i)cos(i)n^+Icos(e)cos(e)n^Icos(i)=α0α(2βcosi(cosi+cose)2)Icos(e)=α0α(2βcosi(cosi+cose)2)cos(i)n^=iTcos(e)n^=eTn^n=nnTnTnI(nTn)1.5

cos(i) is the cosine of the incidence angle, cos(e) is the cosine of the exidence angle, and all else is as defined before.

Parameters:
  • observations (ndarray) – The observations as a numpy array with type ILLUM_DTYPE.

  • rotation_to_inertial (ndarray) – The rotation that takes the frame the observations are expressed in into the the local frame for the surface (usually the local east north up frame)

  • max_inc (float) – the maximum incidence angle to consider valid in radians

  • max_emi (float) – the maximum emission angle to consider valid in radians

  • max_phase (float) – the maximum phase angle to consider valid in radians

  • update (bool) – A flag specifying whether to form an update Jacobian

  • update_weight (float) – The weight of the prior values if doing an update

Returns:

the jacobian matrix as a n(+3)x3 array (where n is the number of observations) and a boolean array of length n specifying which rows of the jacobian matrix are valid

Return type:

Tuple[ndarray, ndarray]