SpaceObject¶
-
class
sorts.space_object.
SpaceObject
(propagator, propagator_options={}, propagator_args={}, parameters={}, epoch=<Time object: scale='utc' format='mjd' value=57125.7729>, oid=1, **kwargs)[source]¶ Bases:
object
Encapsulates a object in space who’s dynamics is governed in time by a propagator.
The relation between the Cartesian and Kepler states are a direct transformation according to the below orientation rules. If the Kepler elements are given in a Inertial system, to reference the Cartesian to a Earth-fixed system a earth rotation transformation must be applied externally of the method.
#TODO: THIS DOC MUST BE UPDATED TOO
- Orientation of the ellipse in the coordinate system:
For zero inclination \(i\): the ellipse is located in the x-y plane.
The direction of motion as True anoamly \(\nu\): increases for a zero inclination \(i\): orbit is anti-coockwise, i.e. from +x towards +y.
If the eccentricity \(e\): is increased, the periapsis will lie in +x direction.
If the inclination \(i\): is increased, the ellipse will rotate around the x-axis, so that +y is rotated toward +z.
An increase in Longitude of ascending node \(\Omega\): corresponds to a rotation around the z-axis so that +x is rotated toward +y.
Changing argument of perihelion \(\omega\): will not change the plane of the orbit, it will rotate the orbit in the plane.
The periapsis is shifted in the direction of motion.
True anomaly measures from the +x axis, i.e \(\nu = 0\) is located at periapsis and \(\nu = \pi\) at apoapsis.
All anomalies and orientation angles reach between 0 and \(2\pi\)
Reference: “Orbital Motion” by A.E. Roy.
- Variables:
\(a\): Semi-major axis
\(e\): Eccentricity
\(i\): Inclination
\(\omega\): Argument of perihelion
\(\Omega\): Longitude of ascending node
\(\nu\): True anoamly
- Variables
orbit (pyorb.Orbit) – Orbit instance
oid (int) – Identifying object ID
C_D (float) – Drag coefficient
C_R (float) – Radiation pressure coefficient
A (float) – Area [\(m^2\)]
m (float) – Mass [kg]
d (float) – Diameter [m]
mjd0 (float) – Epoch for state [BC-relative JD]
prop (float) – Propagator instance, child of
PropagatorBase
propagator_options (dict) – Propagator initialization keyword arguments
propagator_args (dict) – Propagator call keyword arguments
The constructor creates a space object using Kepler elements.
- Parameters
A (float) – Area in square meters
m (float) – Mass in kg
C_D (float) – Drag coefficient
C_R (float) – Radiation pressure coefficient
mjd0 (float) – Epoch for state
oid (int) – Identifying object ID
d (float) – Diameter in meters
propagator (PropagatorBase) – Propagator class pointer
propagator_options (dict) – Propagator initialization keyword arguments
propagator_args (dict) – Keyword arguments to be passed to the propagator call
kwargs (dict) – All additional keywords are used to initialize the orbit
- Keyword arguments
a (
float
) – Semi-major axis in meterse (
float
) – Eccentricityi (
float
) – Inclination in degreesaop (
float
) – Argument of perigee in degreesraan (
float
) – Right ascension of the ascending node in degreesmu0 (
float
) – Mean anomaly in degreesx (
float
) – X-positiony (
float
) – Y-positionz (
float
) – Z-positionvx (
float
) – X-velocityvy (
float
) – Y-velocityvz (
float
) – Z-velocity
Methods
__init__
(propagator[, propagator_options, …])Initialize self.
copy
()Returns a copy of the SpaceObject instance.
get_position
(t)Gets position at specified times using propagator instance.
get_state
(t)Gets ECEF state at specified times using propagator instance.
get_velocity
(t)Gets velocity at specified times using propagator instance.
propagate
(dt)Propagate and change the epoch of this space object if the state is a pyorb.Orbit.
update
(**kwargs)If a pyorb.Orbit is present, updates the orbital elements and Cartesian state vector of the space object.
Attributes
Object mass, if changed the Kepler elements stays constant