Code covered by the BSD License
-
[fid, itarget, nsegments, xma...
read finite-burn hyperbolic injection data file
-
asympt (cbmu, rsc, vsc)
c3-scaled outgoing unit asymptote vector
-
atan3 (a, b)
four quadrant inverse tangent
-
eci2mee(mu, reci, veci)
convert eci state vector to modified equinoctial elements
-
eci2orb1 (mu, r, v)
convert eci state vector to six classical orbital
-
energy_event(t, y)
twice specific orbital energy event function
-
escape_shoot1 (x)
c3 targeting - objective function and equality constraints
-
escape_shoot2 (x)
c3 and dla targeting - objective function and equality constraints
-
escape_shoot3 (x)
c3, rla & dla targeting - objective function and equality constraints
-
mee2coe(mee)
convert modified equinoctial elements to classical orbit elements
-
mee2eci(mu, mee)
convert modified equinoctial orbital
-
mee2eci_escape(mu, mee)
convert modified equinoctial orbital elements to eci position
-
meeeqm_coast(t, y)
first-order modified equinoctial equations of "coasting" motion
-
meeeqm_escape(t, y)
first-order modified equinoctial equations of motion
-
meeeqm_ode45(t, y)
first-order modified equinoctial equations of motion
-
meeeqm_rkf78(t, y)
first-order modified equinoctial equations of motion
-
oeprint1(mu, oev, ittype)
print six classical orbital elements
-
om_constants
astrodynamic and utility constants
-
orb2eci(mu, oev)
convert classical orbital elements to eci state vector
-
rkf78 (deq, neq, ti, tf, h, t...
solve first order system of differential equations
-
rv2hyper (mu, rsc, vsc)
convert position and velocity vectors to
-
escape.m
-
View all files
from
Optimal Finite-burn Interplanetary Injection from Earth Orbit
by David Eagle
A MATLAB script for optimizing finite-burn interplanetary injection trajectories.
|
| atan3 (a, b)
|
function y = atan3 (a, b)
% four quadrant inverse tangent
% input
% a = sine of angle
% b = cosine of angle
% output
% y = angle (radians; 0 =< c <= 2 * pi)
% Orbital Mechanics with MATLAB
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
epsilon = 0.0000000001;
pidiv2 = 0.5 * pi;
if (abs(a) < epsilon)
y = (1 - sign(b)) * pidiv2;
return;
else
c = (2 - sign(a)) * pidiv2;
end
if (abs(b) < epsilon)
y = c;
return;
else
y = c + sign(a) * sign(b) * (abs(atan(a / b)) - pidiv2);
end
|
|
Contact us