|
| template<typename Scalar> |
| Scalar | haversine_distance (const LLA< Scalar > &lla1, const LLA< Scalar > &lla2, double radius=constants::earth::R_mean) |
| template<typename Scalar> |
| Scalar | great_circle_distance (const LLA< Scalar > &lla1, const LLA< Scalar > &lla2, const EarthModel &m=EarthModel::WGS84()) |
| template<typename Scalar> |
| Scalar | initial_bearing (const LLA< Scalar > &lla1, const LLA< Scalar > &lla2, const EarthModel &m=EarthModel::WGS84()) |
| template<typename Scalar> |
| Scalar | final_bearing (const LLA< Scalar > &lla1, const LLA< Scalar > &lla2, const EarthModel &m=EarthModel::WGS84()) |
| template<typename Scalar> |
| LLA< Scalar > | destination_point (const LLA< Scalar > &lla, const Scalar &bearing, const Scalar &distance, const EarthModel &m=EarthModel::WGS84()) |
| template<typename Scalar> |
| Scalar | horizon_distance (const Scalar &altitude, const EarthModel &m=EarthModel::WGS84()) |
| template<typename Scalar> |
| Scalar | is_visible (const LLA< Scalar > &lla_observer, const LLA< Scalar > &lla_target, const EarthModel &m=EarthModel::WGS84()) |
| template<typename Scalar> |
| RayIntersection< Scalar > | ray_ellipsoid_intersection (const Vec3< Scalar > &origin, const Vec3< Scalar > &direction, const EarthModel &m=EarthModel::WGS84()) |
template<typename Scalar>
| LLA< Scalar > vulcan::geodetic::destination_point |
( |
const LLA< Scalar > & | lla, |
|
|
const Scalar & | bearing, |
|
|
const Scalar & | distance, |
|
|
const EarthModel & | m = EarthModel::WGS84() ) |
Compute destination point given start, bearing, and distance
Uses the Vincenty direct formula to compute the endpoint of a geodesic given start point, initial bearing, and distance along the ellipsoid.
- Template Parameters
-
- Parameters
-
| lla | Starting point |
| bearing | Initial azimuth [rad], clockwise from North |
| distance | Distance along ellipsoid [m] |
| m | Earth model (default: WGS84) |
- Returns
- Destination LLA (altitude set to source altitude)
template<typename Scalar>
Great-circle distance using Vincenty formula (accurate to 0.5mm)
Uses Vincenty's inverse formula for geodesic distance on an ellipsoid. This is an iterative algorithm that converges for most point pairs.
Reference: Vincenty, T. (1975). "Direct and inverse solutions of geodesics
on the ellipsoid with application of nested equations"
Note: For symbolic mode, uses a fixed iteration count (20 iterations) rather than convergence checking.
- Template Parameters
-
- Parameters
-
| lla1 | First point (altitude ignored) |
| lla2 | Second point (altitude ignored) |
| m | Earth model (default: WGS84) |
- Returns
- Distance along ellipsoid surface [m]
template<typename Scalar>
Haversine distance (fast spherical approximation)
Uses the haversine formula for great-circle distance on a sphere. Good for short distances (<100km), error <0.3% compared to Vincenty.
Formula: a = sin²(Δφ/2) + cos(φ₁)cos(φ₂)sin²(Δλ/2) c = 2·atan2(√a, √(1−a)) d = R·c
- Template Parameters
-
- Parameters
-
| lla1 | First point (altitude ignored) |
| lla2 | Second point (altitude ignored) |
| radius | Sphere radius [m] (default: WGS84 mean radius) |
- Returns
- Distance along sphere surface [m]
template<typename Scalar>
Check if target is visible from observer (no terrain, pure geometry)
Uses geometric horizon distance and great-circle arc comparison. Returns a value > 0 if visible, ≤ 0 if not visible.
The visibility check accounts for both observer and target altitudes: visible if horizon_distance(alt1) + horizon_distance(alt2) ≥ ground_distance
- Template Parameters
-
- Parameters
-
| lla_observer | Observer position |
| lla_target | Target position |
| m | Earth model (default: WGS84) |
- Returns
- Positive if visible, zero/negative if occluded by Earth