Tunable Rayleigh-like approximation to underwater polarization
Source:R/polarization.R
underwater_polarization.RdA lightweight, analytic single-scattering model of linear polarization in the
water column. The degree of polarization follows the Rayleigh-like form
$$DoP(\Theta) = DoP_{max}\,\frac{\sin^2\Theta}{1 + \cos^2\Theta},$$
where \(\Theta\) is the scattering angle between the line of sight and the
refracted solar beam (scattering_angle); polarization is maximal
at \(\Theta = 90^\circ\) and vanishes toward the sun and anti-sun. With
depth, multiple scattering randomizes the field, so the model relaxes toward an
asymptotic floor:
$$DoP(z) = DoP_{asym} + (DoP(\Theta) - DoP_{asym})\,e^{-z/z_p}.$$
The e-vector (angle of polarization) is perpendicular to the scattering plane.
Usage
underwater_polarization(
view_zenith,
view_azimuth = 0,
sun_zenith,
sun_azimuth = 0,
depth = 0,
dop_max = 0.4,
dop_asym = 0.03,
z_p = 20,
n = 1.333
)Arguments
- view_zenith, view_azimuth
Viewing direction in degrees (zenith: 0 = up, 90 = horizontal, 180 = down). Vectorised. Scalars are broadcast; implicit partial recycling is rejected.
- sun_zenith
In-air solar zenith angle in degrees. Refracted internally via
refracted_solar_angle.- sun_azimuth
Solar azimuth in degrees. Default 0.
- depth
Depth in metres (\(\geq 0\)). Default 0.
- dop_max
Maximum (surface, 90-degree-scattering) degree of polarization. Default 0.4 is an illustrative value at the upper end of the approximately 0.25–0.40 maxima reported at 15 m in clear tropical marine water by Cronin and Shashar (2001). Because this model defines
dop_maxat depth zero, that observation does not constitute a calibration of the default. The value is not transferable to other water types.- dop_asym
Asymptotic deep-field degree of polarization. Default 0.03 is a heuristic illustrative floor, not an empirically calibrated constant.
- z_p
Depth scale (m) over which DoP relaxes toward
dop_asym. Default 20 is a heuristic illustrative scale, not an empirical attenuation length. Site-specific use requires calibration.- n
Refractive index of water. Default 1.333 is a conventional visible- light approximation. Refractive index varies with wavelength, temperature, and salinity.
Value
A data frame with one row per viewing direction and columns
scattering_angle (deg), dop (0–1), and aop (deg,
(-90, 90]; NA when looking along the solar beam). The data
frame has a "luxR.polarization" attribute recording model status,
model version, parameters, and the validity statement.
Details
This is an explicitly uncalibrated, first-order approximation for teaching, geometry exploration, and field intuition. It is not a vector radiative-transfer solution and must not be interpreted as a quantitative prediction without calibration to measurements from the relevant site, wavelength, water type, surface state, and viewing geometry. It omits the wavelength dependence of scattering and refraction, particulate and dissolved constituents, surface waves and polarized skylight, bottom reflection, and a physical multiple-scattering calculation.
References
Cronin TW, Shashar N (2001) The linearly polarized light field in clear, tropical marine waters. Journal of Experimental Biology 204:2461-2467.
Johnsen S (2012) The Optics of Life. Princeton University Press, ch. 8.
Examples
# DoP across viewing zenith with the sun overhead, near the surface:
underwater_polarization(view_zenith = seq(0, 90, 15), view_azimuth = 0,
sun_zenith = 0, depth = 1)
#> scattering_angle dop aop
#> 1 0 0.001463117 NA
#> 2 15 0.014648812 90
#> 3 30 0.055819084 90
#> 4 45 0.128293707 90
#> 5 60 0.229758179 90
#> 6 75 0.334179031 90
#> 7 90 0.381954887 90