refmod.hapke.roughness#
Surface roughness corrections based on Hapke’s model.
This module provides functions to calculate corrections for macroscopic surface roughness, a key component in photometric modeling as described by Hapke.
??? info “References”
Hapke (1984)
Module Contents#
- refmod.hapke.roughness.__f_exp(x, y)#
Helper function for microscopic roughness calculation.
Calculates exp(-2 * y * x / pi).
- Parameters:
x (npt.NDArray) – Input array.
y (float) – Factor, typically related to cot(roughness).
- Returns:
Result of the exponential function.
- Return type:
npt.NDArray
- refmod.hapke.roughness.__f_exp_2(x, y)#
Helper function for microscopic roughness calculation.
Calculates exp(-(y^2 * x^2) / pi).
- Parameters:
x (npt.NDArray) – Input array.
y (float) – Factor, typically related to cot(roughness), which is squared.
- Returns:
Result of the exponential function.
- Return type:
npt.NDArray
- refmod.hapke.roughness.microscopic_roughness(roughness, incidence_direction, emission_direction, surface_orientation)#
Calculates the microscopic roughness factor for Hapke’s model.
This correction accounts for the effects of sub-resolution roughness on the observed reflectance.
- Parameters:
roughness (float) – The mean slope angle of surface facets, in radians. A value of 0 means a smooth surface.
incidence_direction (npt.NDArray) – Incidence direction vector(s), shape (…, 3). Assumed to be normalized.
emission_direction (npt.NDArray) – Emission direction vector(s), shape (…, 3). Assumed to be normalized.
surface_orientation (npt.NDArray) – Surface normal vector(s), shape (…, 3). Assumed to be normalized.
- Returns:
s (npt.NDArray) – The microscopic roughness factor, shape (…).
mu_0_prime (npt.NDArray) – The modified cosine of the incidence angle ($mu_0^{prime}$), accounting for roughness, shape (…).
mu_prime (npt.NDArray) – The modified cosine of the emission angle ($mu^{prime}$), accounting for roughness, shape (…).
Notes
The calculations are based on Hapke (1984).
The terms $mu_0^{prime}$ (mu_0_s0, mu_0_s) and $mu^{prime}$ (mu_s0, mu_s) are calculated based on different conditions for incidence angle i and emission angle e:
For prime-zero terms ($mu_0^{prime(0)}$, $mu^{prime(0)}$ used in mu_0_s0, mu_s0): See Hapke (1984, Eqs. 48, 49).
For $mu_0^{prime}$ and $mu^{prime}$ when $i < e$: See Hapke (1984, Eqs. 46, 47).
For $mu_0^{prime}$ and $mu^{prime}$ when $i ge e$: See Hapke (1984, Eqs. 50, 51).
Input vectors (incidence_direction, emission_direction, surface_orientation) are normalized internally.
If roughness is 0, s is 1, mu_0_prime is cos(i), and mu_prime is cos(e).
References
Hapke (1984)