McEwenIllumination

giant.ray_tracer.illumination:

class giant.ray_tracer.illumination.McEwenIllumination(global_albedo=1.0)[source]

This illumination model computes the intensity values as the weighted sum between the Lommel-Seeliger and Lambertian models, weighted using the phase angle.

Mathematically this is given by

\[I = \alpha_0\alpha\left(-(1-\beta)\mathbf{n}^T\mathbf{i} + 2\beta\frac{-\mathbf{n}^T\mathbf{i}}{-\mathbf{n}^T\mathbf{i}+\mathbf{n}^T\mathbf{e}}\right)\]

where \(\alpha_0\) is the global albedo value, \(\alpha\) is the local albedo, \(\mathbf{n}\) is the unit normal vector, \(\mathbf{i}\) is the unit incidence vector, \(\mathbf{e}\) is the unit exidence vector, \(\beta=e^{\frac{-a}{60}}\), \(a=\cos^{-1}{-\mathbf{i}^T\mathbf{e}}\) is the phase angle in degrees, and \(I\) is the intensity value.

This class makes use of a global albedo value stored in global_albedo which can be used to scale all outputs from this model. For most cases of OpNav, however, this can be ignored.

Anywhere that is not visible (either because the visible flag was set to False, or the cosine of the incidence angle is less than 0) is set to 0 in the return.

This class also provides methods for both analytic and numeric Jacobian matrices, which can be using as part of photoclinometry to estimate surfaces given intensity values.

Parameters:

global_albedo (float) – The global albedo used to scale all outputs.

global_albedo: float

The global albedo used to scale all outputs

Summary of Methods

compute_photoclinometry_jacobian

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.

numeric_derivative

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 use numeric finite differencing.