8 #ifndef UFO_UTILS_GEODESICDISTANCECALCULATOR_H_
9 #define UFO_UTILS_GEODESICDISTANCECALCULATOR_H_
25 float latitudeBinCenter,
float longitudeBinCenter,
27 float )
const override {
31 float q1 = std::cos((obsLongitude - longitudeBinCenter) *
deg2rad);
32 float q2 = std::cos((obsLatitude - latitudeBinCenter) *
deg2rad);
33 float q3 = std::cos((obsLatitude + latitudeBinCenter) *
deg2rad);
35 float geodesicDistance = (re * std::acos(0.5f*((1.0f+q1)*q2 - (1.0f-q1)*q3)) + 1.0f);
36 return geodesicDistance;
40 float )
const override {
45 return componentA + componentB;
48 float finalise(
float combinedComponents)
const override {
49 return combinedComponents;
Calculates distances between observations and centres of bins used during thinning.
float combineDistanceComponents(float componentA, float componentB) const override
float spatialDistanceComponent(float obsLatitude, float obsLongitude, float latitudeBinCenter, float longitudeBinCenter, float, float) const override
float nonspatialDistanceComponent(float, float, float) const override
float finalise(float combinedComponents) const override
real(kind_real), parameter, public deg2rad
static constexpr double deg2rad
static constexpr double mean_earth_rad