HiRISE

HiRISE.HiPlan.HIPHOP
Class Functions

java.lang.Object
  extended by HiRISE.HiPlan.HIPHOP.Functions

public class Functions
extends Object

A collection of mathematical functions used by HIPHOP.

Based on IDL code by Nick Thomas, University of Bern.

Version:
1.15
Author:
Christian Schaller - UA/PIRL

Field Summary
static String ID
          Class identification name with source code version and date.
 
Method Summary
static double azimuth(double incidence, double emission, double phase)
          Computes the azimuth angle for a set of incidence, emission, and phase angles.
static double cboe_function(double phase, Hapke_Parameters hapke)
          Computes the coherent backscatter opposition effect for a given phase angle and set of Hapke parameters.
static double H_function(double x, double albedo, boolean use_simple)
          Computes the value of the H-function for the given inputs.
static double illumination_shadow(double azimuth)
          Computes the fraction of illumination shadow hidden in the visibility shadow.
static double M_function(double mu_0, double mu, Hapke_Parameters hapke)
          Computes the Hapke M-function for a given μ0, μ, and set of Hapke parameters.
static void main(String[] args)
          Performs simple tests of the HIPHOP functions.
static Mu_Parameters mu_rough(double incidence, double emission, double phase, double mean_slope)
          Computes the μ parameters for a rough surface.
static double normalized_derivative(double incidence)
          Computes the change in reflectance per degree of incidence angle, used in surface roughness calculations.
static double p_function(double x, Hapke_Parameters hapke, boolean is_emitter)
          Computes the Hapke p-function for a given value and set of Hapke parameters.
static double P_function(Hapke_Parameters hapke)
          Computes the Hapke P-function for a given set of Hapke parameters.
static double phase(double incidence, double emission, double azimuth)
          Computes the phase angle for a set of incidence, emission, and azimuth angles.
static double reflectance(double mu_0, double mu, double phase, Hapke_Parameters hapke)
          Computes the Hapke reflectance for a given μ0, μ, phase angle, and set of Hapke parameters.
static double scatter(double phase, Hapke_Parameters hapke)
          Computes the single-particle scattering for the given input phase angle and Hapke parameters.
static double shoe_function(double phase, Hapke_Parameters hapke)
          Computes the shadow hiding opposition effect for a given phase angle and set of Hapke parameters.
static double standard_deviation_factor(double contrast_ratio)
          Computes the standard deviation factor from contrast ratio.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

ID

public static final String ID
Class identification name with source code version and date.

See Also:
Constant Field Values
Method Detail

phase

public static double phase(double incidence,
                           double emission,
                           double azimuth)
Computes the phase angle for a set of incidence, emission, and azimuth angles. The phase angle is computed as such, for incidence angle i, emission angle e, azimuth angle a, and phase angle p:
p = acos (cos i * cos e + sin i * sin e * cos a)

The term in parentheses is limited to the range [-1.0, 1.0]; if it evaluates outside that range, it is set to the nearest boundary. This method thus never returns Double.NaN.

Parameters:
incidence - the incidence angle in radians.
emission - the emission angle in radians.
azimuth - the azimuth angle in radians.
Returns:
the phase angle in radians.

azimuth

public static double azimuth(double incidence,
                             double emission,
                             double phase)
Computes the azimuth angle for a set of incidence, emission, and phase angles. The azimuth angle is the angle between the projection onto the surface of the indicence and emission angles. This value is the result of equation 3 in Hapke, 1984.

Note that if either incidence or emission is small (less than 0.0001), this function returns an azimuth of 0.0. Furthermore, if the input photometric angles are incompatible (e.g., not representative of a real physical photometric arrangement), this function may not return a meaningful result; it assumes real geometry, so it always returns a value in the range [0, π].

Parameters:
incidence - the incidence angle in radians.
emission - the emission angle in radians.
phase - the phase angle in radians.
Returns:
the azimuth angle in radians.
See Also:
"Hapke, B. 1984. Bidirectional Reflectance Spectroscopy. 3. Correction for Macroscopic Roughness. Icarus 59, 41-59."

illumination_shadow

public static double illumination_shadow(double azimuth)
Computes the fraction of illumination shadow hidden in the visibility shadow. This value is the result of equation 32 in Hapke, 1984.

Parameters:
azimuth - the azimuth angle in radians.
Returns:
the faction of illumination shadow.
See Also:
"Hapke, B. 1984. Bidirectional Reflectance Spectroscopy. 3. Correction for Macroscopic Roughness. Icarus 59, 41-59."

mu_rough

public static Mu_Parameters mu_rough(double incidence,
                                     double emission,
                                     double phase,
                                     double mean_slope)
Computes the μ parameters for a rough surface. These values are the results of equations 46-51 in Hapke, 1984.

Parameters:
incidence - the incidence angle in radians.
emission - the emission angle in radians.
phase - the phase angle in radians.
mean_slope - the mean slope angle in radians.
Returns:
μ parameters for a rough surface.
See Also:
"Hapke, B. 1984. Bidirectional Reflectance Spectroscopy. 3. Correction for Macroscopic Roughness. Icarus 59, 41-59."

scatter

public static double scatter(double phase,
                             Hapke_Parameters hapke)
Computes the single-particle scattering for the given input phase angle and Hapke parameters. The Hapke parameters indicate which scattering function to use.

Parameters:
phase - the input phase angle in radians.
hapke - the input set of Hapke parameters.
Returns:
the single-particle scattering.
See Also:
"Hapke, B. 2002. Bidirectional Reflectance Spectroscopy. 5. The Coherent Backscatter Opposition Effect and Anisotropic Scattering. Icarus 157, 523-534."

cboe_function

public static double cboe_function(double phase,
                                   Hapke_Parameters hapke)
Computes the coherent backscatter opposition effect for a given phase angle and set of Hapke parameters. This value is the result of equations 32 and 33 in Hapke, 2002.

Parameters:
phase - the phase angle in radians.
hapke - the Hapke parameters.
Returns:
the CBOE.
See Also:
"Hapke, B. 2002. Bidirectional Reflectance Spectroscopy. 5. The Coherent Backscatter Opposition Effect and Anisotropic Scattering. Icarus 157, 523-534."

shoe_function

public static double shoe_function(double phase,
                                   Hapke_Parameters hapke)
Computes the shadow hiding opposition effect for a given phase angle and set of Hapke parameters. This value is the result of equations 28 and 29 in Hapke, 2002.

Parameters:
phase - the phase angle in radians.
hapke - the Hapke parameters.
Returns:
the SHOE.
See Also:
"Hapke, B. 2002. Bidirectional Reflectance Spectroscopy. 5. The Coherent Backscatter Opposition Effect and Anisotropic Scattering. Icarus 157, 523-534."

H_function

public static double H_function(double x,
                                double albedo,
                                boolean use_simple)
Computes the value of the H-function for the given inputs. This value is the result of equation 2 (simple) or equations 12 and 13 in Hapke, 2002.

If use_simple is true, this function uses the simple approximation for the H-function; this approximation is equation 2 in Hapke, 2002.

If use_simple is false, the Ambartsumian-Chandrasekhar approximation is used for the H-function; this approximation is equations 12 and 13 in Hapke, 2002.

Parameters:
x - the input parameter for the H-function, e.g., the cosine of the incidence angle or of the emission angle.
albedo - the single-scattering albedo.
use_simple - use the simple approximation if true; otherwise use the Ambartsumian-Chandrasekhar approximation.
Returns:
the value of the H-function.
See Also:
"Hapke, B. 2002. Bidirectional Reflectance Spectroscopy. 5. The Coherent Backscatter Opposition Effect and Anisotropic Scattering. Icarus 157, 523-534."

p_function

public static double p_function(double x,
                                Hapke_Parameters hapke,
                                boolean is_emitter)
Computes the Hapke p-function for a given value and set of Hapke parameters. This value is the result of equation 15 in Hapke, 2002.

Parameters:
x - the value for which to calculate the p-function, usually cos e or cos i.
hapke - the Hapke parameters.
is_emitter - true if the source is an emission.
Returns:
the Hapke p-function evaluated at x.
See Also:
"Hapke, B. 2002. Bidirectional Reflectance Spectroscopy. 5. The Coherent Backscatter Opposition Effect and Anisotropic Scattering. Icarus 157, 523-534."

P_function

public static double P_function(Hapke_Parameters hapke)
Computes the Hapke P-function for a given set of Hapke parameters. This value is the result of equation 16 in Hapke, 2002.

Warning: This function takes several minutes to complete! It takes roughly 10 minutes on a Mac Pro with dual 2.8 GHz quad-core Intel Xeon CPUs running Java version 1.5.0.13.

Parameters:
hapke - the Hapke parameters.
Returns:
the Hapke P-function.
See Also:
"Hapke, B. 2002. Bidirectional Reflectance Spectroscopy. 5. The Coherent Backscatter Opposition Effect and Anisotropic Scattering. Icarus 157, 523-534."

M_function

public static double M_function(double mu_0,
                                double mu,
                                Hapke_Parameters hapke)
Computes the Hapke M-function for a given μ0, μ, and set of Hapke parameters. This value is the result of equation 17 in Hapke, 2002.

Note: This function uses a precalculated value for the value of the P-function; see the caveats in the Hapke_Parameters class.

Parameters:
mu_0 - the function's μ0, assumed to be cos i.
mu - the function's μ, assumed to be cos e.
hapke - the Hapke parameters.
Returns:
the Hapke M-function.
See Also:
"Hapke, B. 2002. Bidirectional Reflectance Spectroscopy. 5. The Coherent Backscatter Opposition Effect and Anisotropic Scattering. Icarus 157, 523-534."

reflectance

public static double reflectance(double mu_0,
                                 double mu,
                                 double phase,
                                 Hapke_Parameters hapke)
Computes the Hapke reflectance for a given μ0, μ, phase angle, and set of Hapke parameters. This value is the result of equation 38 in Hapke, 2002.

This reflectance is the bidirectional reflectance (I/F) and not pil/F.

Note: This function uses a precalculated value for the value of the P-function; see the caveats in the Hapke_Parameters class.

Parameters:
mu_0 - the function's μ0, assumed to be cos i.
mu - the function's μ, assumed to be cos e.
phase - the phase angle (in radians) under consideration.
hapke - the Hapke parameters.
Returns:
the Hapke M-function.
See Also:
"Hapke, B. 2002. Bidirectional Reflectance Spectroscopy. 5. The Coherent Backscatter Opposition Effect and Anisotropic Scattering. Icarus 157, 523-534."

normalized_derivative

public static double normalized_derivative(double incidence)
Computes the change in reflectance per degree of incidence angle, used in surface roughness calculations.

Parameters:
incidence - the incidence angle in degrees.
Returns:
the normalized derivative of reflectance.

standard_deviation_factor

public static double standard_deviation_factor(double contrast_ratio)
Computes the standard deviation factor from contrast ratio.

If A is the mean value of a distribution, and if C, the contrast ratio, is Amax/Amin, then the standard deviation σ is given by

σ = A (C - 1)/[2 (C + 1)]

This function computes σ/A.

Parameters:
contrast_ratio - the contrast ratio.
Returns:
the standard deviation factor, σ/A.

main

public static void main(String[] args)
Performs simple tests of the HIPHOP functions.

These tests are conducted with the following inputs, based on an observation on orbit 9484 at planetographic latitude 4.933, longitude 350.969 E, with a roll of -21.72 degrees.

In some cases, an artificial phase angle is necessary for conditions that HiRISE does not encounter. For example, the test of the coherent backscatter opposition effect is performed using p = 4.424.

Compare the results of these tests with the equivalent calls of the IDL HIPHOP.

Usage

Functions

Command-line arguments are ignored. The system parameter TEST_BIG_P may be set to true to test the big-P function. Note that doing so takes several minutes.

Parameters:
args - command-line arguments, ignored.

HiRISE

Copyright (C) Arizona Board of Regents on behalf of the Planetary Image Research Laboratory, Lunar and Planetary Laboratory at the University of Arizona