Defaults need fixing, there is a small bias in the current approach with the Arccos function, which does not give the exact isotropic distribution of reorientations in 3D (although it's quite close, explaining why it took so long to catch it).
it seems apparently impossible (without some inconvenient tricks in add_agent!) to provide a default that correctly gives isotropic reorientations for both 2D and 3D tumbles; tumbles will therefore lack a default value for the angle distribution.
provide an Isotropic2D and an Isotropic3D function for quick construction of isotropic tumbles in the two cases; Isotropic2D will only alias Uniform(-π,π), whereas Isotropic3D will be a particular case of a new Spherical distribution
the new Spherical(a,b) distribution will give uniform angles on the spherical sector between limit angles a and b. Isotropic3D will then alias Spherical(0,π).
azimuthal will be removed from public API since in any reasonable scenario it will be Uniform(-π,+π). It can still be set by manually constructing custom motile states if needed
Defaults need fixing, there is a small bias in the current approach with the
Arccos
function, which does not give the exact isotropic distribution of reorientations in 3D (although it's quite close, explaining why it took so long to catch it).add_agent!
) to provide a default that correctly gives isotropic reorientations for both 2D and 3D tumbles; tumbles will therefore lack a default value for the angle distribution.Isotropic2D
and anIsotropic3D
function for quick construction of isotropic tumbles in the two cases;Isotropic2D
will only aliasUniform(-π,π)
, whereasIsotropic3D
will be a particular case of a newSpherical
distributionSpherical(a,b)
distribution will give uniform angles on the spherical sector between limit anglesa
andb
.Isotropic3D
will then aliasSpherical(0,π)
.azimuthal
will be removed from public API since in any reasonable scenario it will beUniform(-π,+π)
. It can still be set by manually constructing custom motile states if needed