ICAROUS
|
#include <KinematicsLatLon.h>
Static Public Member Functions | |
static std::pair< LatLonAlt, Velocity > | linear (const LatLonAlt &so, const Velocity &vo, double t) |
static std::pair< LatLonAlt, Velocity > | linear (std::pair< LatLonAlt, Velocity > sv0, double t) |
static double | turnRadiusByRate (double speed, double omega) |
static std::pair< LatLonAlt, Velocity > | turnOmega (const LatLonAlt &so, const Velocity &vo, double t, double omega) |
static std::pair< LatLonAlt, Velocity > | turnOmega (std::pair< LatLonAlt, Velocity > sv0, double t, double omega) |
static std::pair< LatLonAlt, Velocity > | turnByDist2D (const LatLonAlt &so, const LatLonAlt ¢er, int dir, double d, double gsAtd) |
static LatLonAlt | turnByDist2D (const LatLonAlt &so, const LatLonAlt ¢er, int dir, double d) |
static LatLonAlt | turnByAngle2D (const LatLonAlt &so, const LatLonAlt ¢er, double alpha) |
static std::pair< LatLonAlt, Velocity > | turn (LatLonAlt s0, Velocity v0, double t, double R, bool turnRight) |
static std::pair< LatLonAlt, Velocity > | turn (std::pair< LatLonAlt, Velocity > sv0, double t, double R, bool turnRight) |
static std::pair< LatLonAlt, Velocity > | turnUntilTimeOmega (std::pair< LatLonAlt, Velocity > svo, double t, double turnTime, double omega) |
static std::pair< LatLonAlt, Velocity > | turnUntilTimeOmega (const LatLonAlt &so, const Velocity &vo, double t, double turnTime, double omega) |
static std::pair< LatLonAlt, Velocity > | turnUntil (std::pair< LatLonAlt, Velocity > svo, double t, double goalTrack, double maxBank) |
static std::pair< LatLonAlt, Velocity > | turnUntil (const LatLonAlt &so, const Velocity &vo, double t, double goalTrack, double maxBank) |
static std::pair< LatLonAlt, Velocity > | turnUntilTimeRadius (const std::pair< LatLonAlt, Velocity > &svo, double t, double turnTime, double R, bool turnRight) |
static LatLonAlt | center (const LatLonAlt &s0, double trk, double radius, int dir) |
static LatLonAlt | center (const LatLonAlt &s0, const Velocity &v0, double omega) |
static double | closestTimeOnTurn (const LatLonAlt &s0, const Velocity &v0, double omega, const LatLonAlt &x, double endTime) |
static double | closestDistOnTurn (const LatLonAlt &s0, const Velocity &v0, double R, int dir, const LatLonAlt &x, double maxDist) |
static std::pair< LatLonAlt, Velocity > | gsAccel (const LatLonAlt &so, const Velocity &vo, double t, double a) |
static std::pair< LatLonAlt, Velocity > | gsAccelUntil (const LatLonAlt &so, const Velocity &vo, double t, double goalGS, double gsAccel_d) |
static std::pair< LatLonAlt, Velocity > | gsAccelUntil (std::pair< LatLonAlt, Velocity > sv0, double t, double goalGs, double gsAccel) |
static std::pair< LatLonAlt, Velocity > | vsAccel (const LatLonAlt &so, const Velocity &vo, double t, double a) |
static std::pair< LatLonAlt, Velocity > | vsAccel (std::pair< LatLonAlt, Velocity > svo, double t, double a) |
static std::pair< LatLonAlt, Velocity > | vsAccelUntil (const LatLonAlt &so, const Velocity &vo, double t, double goalVs, double vsAccel) |
static std::pair< LatLonAlt, Velocity > | vsAccelUntil (std::pair< LatLonAlt, Velocity > sv0, double t, double goalVs, double vsAccel) |
static std::pair< LatLonAlt, Velocity > | vsLevelOut (std::pair< LatLonAlt, Velocity > sv0, double t, double climbRate, double targetAlt, double accelUp, double accelDown, bool allowClimbRateChange) |
static std::pair< LatLonAlt, Velocity > | vsLevelOut (std::pair< LatLonAlt, Velocity > sv0, double t, double climbRate, double targetAlt, double a, bool allowClimbRateChange) |
static std::pair< LatLonAlt, Velocity > | vsLevelOut (std::pair< LatLonAlt, Velocity > sv0, double t, double climbRate, double targetAlt, double a) |
Static Public Attributes | |
static bool | chordalSemantics = false |
Static Private Member Functions | |
static std::pair< LatLonAlt, Velocity > | vsLevelOutCalculation (std::pair< LatLonAlt, Velocity > sv0, double targetAlt, double a1, double a2, double t1, double t2, double t3, double t) |
A library of functions to aid the computation of the kinematics of an aircraft. This library is currently under development and is far from complete. The majority of the functions handle constant velocity turns and movement with constant ground speed acceleration.
Unless otherwise noted, all kinematics function parameters are in internal units – angles are in radians, linear speeds are in m/s, distances are in meters, time is in seconds.
|
static |
center of turn
s0 | point on turn |
v0 | velocity at point |
omega | turn rate |
|
static |
return center of turn from position on turn (and it track) and radius
s0 | point on turn |
trk | track at point |
radius | radius of turn |
dir | +1 clockwise, -1 counterclockwise |
|
static |
EXPERMENTAL Calculate when during the turn we will be closest to the given point.
s0 | turn start position |
v0 | turn start velocity |
R | radius |
dir | direction of turn |
x | point of interest |
maxDist | time at which turn finishes. If ≤ 0, assume a full turn is allowed. |
|
static |
EXPERMENTAL Calculate when during the turn we will be closest to the given point.
s0 | turn start position |
v0 | turn start velocity |
omega | rate of turn (+ = right, - = left) |
x | point of interest |
endTime | time at which turn finishes. If ≤ 0, assume a full turn is allowed. |
|
static |
Final 3D position after a constant GS acceleration for t seconds
so3 | current position |
vo3 | current velocity |
a | acceleration, i.e. a positive or negative acceleration |
t | amount of time accelerating |
|
static |
Position after t time units where there is first an acceleration or deceleration to the target ground speed goalGs and then continuing at that speed for the remainder of the time, if any.
so | current position |
vo | current velocity |
goalGs | the ground speed where the acceleration stops |
gsAccel | the ground speed acceleration (a positive value) |
t | time point of interest |
|
static |
Position after t time units where there is first an acceleration or deceleration to the target ground speed goalGs and then continuing at that speed for the remainder of the time, if any.
svo | initial position and velocity |
goalGs | the ground speed where the acceleration stops |
gsAccel | the ground speed acceleration (a positive value) |
t | time point of interest |
|
static |
Linearly project the given position and velocity to a new position and velocity
sv0 | initial position and velocity |
t | time |
|
static |
Linearly project the given position and velocity to a new position and velocity
sv0 | initial position and velocity |
t | time |
|
static |
Position/Velocity after turning t time units right or left with radius R in the direction turnRight
s0 | starting position |
v0 | initial velocity |
t | time of turn |
R | turn radius (positive) |
turnRight | true iff only turn direction is to the right |
|
static |
Position/Velocity after turning t time units right or left with with radius R in the direction turnRight
sv0 | Pair (initial position, initial velocity) |
t | time point of interest |
R | turn radius (positive) |
turnRight | true iff only turn direction is to the right |
|
static |
Position/Velocity after turning (does not compute altitude!!)
Note: will be used in a context where altitude is computing subsequently
so | starting position |
center | center of turn |
alpha | angle |
|
static |
Position/Velocity after turning (does not compute altitude!!)
Note: will be used in a context where altitude is computing subsequently
so | starting position |
center | center of turn |
dir | direction of turn |
d | distance into turn (non-negative) |
|
static |
Position/Velocity after turning (does not compute altitude!!)
Note: will be used in a context where altitude is computing subsequently
so | starting position |
center | center of turn |
R | radius |
d | distance into turn (sign indicates direction) |
|
static |
Position/Velocity after turning t time units according to track rate omega
s0 | starting position |
v0 | initial velocity |
t | time into turn |
omega | rate of change of track, sign indicates direction |
|
static |
Position/Velocity after turning t time units according to track rate omega
s0 | starting position |
v0 | initial velocity |
t | time of turn |
omega | rate of change of track, sign indicates direction |
|
static |
Determine the earth-surface radius of a turn given the ground speed and omega (angular velocity).
speed | |
omega |
|
static |
Position/Velocity after t time units turning in minimal direction until goalTrack is reached, after that continue in a straight line
so | starting position |
vo | initial velocity |
t | maneuver time [s] |
goalTrack | the track angle where the turn stops |
maxBank | the bank angle of the aircraft making the turn (positive) |
|
static |
Position/Velocity after t time units turning in minimal direction until goalTrack is reached, after that continue in a straight line. The the time t is not long enough to complete the turn, then a position/velocity towards the goal track is returned.
svo | starting position and velocity |
t | maneuver time [s] |
goalTrack | the track angle where the turn stops |
maxBank | the maximum bank angle of the aircraft, must be in (0,pi/2) |
|
static |
Position/Velocity after t time units turning at the rate of "omega," after that continue in a straight line. This function can make a turn greater than 180 deg
so | starting position |
vo | initial velocity |
t | time point of interest |
turnTime | total time of turn [secs] |
omega | turn rate |
|
static |
Position/Velocity after t time units turning at the rate of "omega," after that continue in a straight line. This function can make a turn greater than 180 deg
so | initial position and velocity |
t | time point of interest |
turnTime | total time of turn [secs] |
omega | turn rate |
|
static |
Position/Velocity after t time units turning in direction "turnRight" for a total of turnTime, after that continue in a straight line. This function can make a turn greater than 180 deg
so | starting position |
vo | initial velocity |
t | time point of interest |
turnTime | total time of turn [secs] |
R | turn radius (positive) |
turnRight | true iff only turn direction is to the right |
|
static |
Position/Velocity after a constant vertical speed acceleration for t seconds
so | current position |
vo | current velocity |
t | amount of time accelerating |
a | acceleration, i.e. a positive or negative acceleration |
|
static |
Position/Velocity after t time units where there is first an acceleration or deceleration to the target vertical speed goalVs and then continuing at that speed for the remainder of the time, if any.
so | starting position |
vo | initial velocity |
goalVs | vertical speed where the acceleration stops |
vsAccel | vertical speed acceleration (a positive value) |
t | time of the point of interest |
|
static |
returns Pair that contains position and velocity at time t due to level out maneuver
sv0 | current position and velocity vectors |
t | time point of interest |
climbRate | climb rate |
targetAlt | target altitude |
accelUp | first acceleration |
accelDown | second acceleration |
allowClimbRateChange | allows climbRate to change to initial velocity if it can help. |
|
staticprivate |
returns Pair that contains position and velocity at time t due to level out maneuver based on vsLevelOutTimesAD
sv0 | current position and velocity vectors |
t | time point of interest |
climbRate | climb rate |
targetAlt | target altitude |
a1 | first acceleration |
a2 | second acceleration |
allowClimbRateChange | allows climbRate to change to initial velocity if it can help. |