11#ifndef ANTHOCNET_CORE_LINK_LIFETIME_H
12#define ANTHOCNET_CORE_LINK_LIFETIME_H
28 const double dx = b.
x - a.
x, dy = b.
y - a.
y, dz = b.
z - a.
z;
29 const double vx = b.
vx - a.
vx, vy = b.
vy - a.
vy, vz = b.
vz - a.
vz;
30 const double c = dx * dx + dy * dy + dz * dz - range * range;
31 if (c > 0.0)
return 0.0;
32 const double qa = vx * vx + vy * vy + vz * vz;
33 if (qa <= 0.0)
return std::numeric_limits<double>::infinity();
34 const double qb = 2.0 * (dx * vx + dy * vy + dz * vz);
37 return (-qb + std::sqrt(qb * qb - 4.0 * qa * c)) / (2.0 * qa);
45 if (!(horizon > 0.0) || let >= horizon)
return 1.0;
46 const double w = let / horizon;
47 return w < floor ? floor : w;
double linkLifetimeWeight(double let, double horizon, double floor)
The next-hop weight for a link expected to live let seconds: 1 at or beyond horizon,...
double linkExpiryTime(const Kinematics &a, const Kinematics &b, double range)
Seconds until a and b are range metres apart, moving as they move now.
AntHistoryTracker: (src, seqNum) duplicate detection.
A node's position (m) and velocity (m/s) in the adapter's Cartesian frame (ADR-0025).