Skip to the visualization

ECE 6390 · Interactive learning lab

One acceleration. Two local components.

Keep the physical vector fixed, rotate the satellite’s local axes, and see why the code uses cosine and sine.

Independent geometry demonstration. Use the angle controls or return to the orbit to import a moment.

Back to Orbit & Code

Interactive orbital geometry

One acceleration. Two local components.

The solar acceleration has one direction in the fixed plane. The satellite’s radial and tangential axes point in different directions as it moves. Change either angle to see how the projections change.

Earth → satellite, measured from fixed +x.

φ = FORCE_PHASE + OMEGA_SUN × time.

Try a relative angle:

Fixed orbital plane

Both θ and φ are measured from the same fixed +x direction.

Earth and satellite in the fixed orbital plane Earth is at the center. The satellite is at 35 degrees. Its outward radial axis points at 35 degrees, its positive tangential axis at 125 degrees, and the solar acceleration at 80 degrees. fixed +x +y φ θ Earth +r a_solar satellite

The dashed orange ray is a parallel copy of the acceleration direction, drawn at Earth only to show φ. It is not another acceleration.

Satellite’s local frame

Rotate the view by −θ. Now outward radial is to the right.

Solar acceleration projected onto radial and tangential axes The radial axis points right and the positive tangential axis up. The solar vector is 45 degrees from radial. Both normalized components equal 0.7071. + radial + tangential − radial − tangential a_r a_θ a_solar δ satellite

Same acceleration, different coordinates. δ = relative = φ − θ. The dashed guides meet at the solar-vector tip; the components are its two projections.

Solar acceleration Radial direction / component Tangential direction / component
Relative angle · δ
45°
80° − 35° = 45°
45° counterclockwise from outward radial.
Radial fraction · ar / asolar
+0.7071
cos(δ)
Positive: away from Earth.
Tangential fraction · aθ / asolar
+0.7071
sin(δ)
Positive: toward increasing θ.

The arrow lengths use asolar = 1. Multiply each fraction by self.acceleration to obtain its acceleration component. The degrees here are for display; Python’s trigonometric functions use radians.

Relative angle 45 degrees. Radial fraction 0.7071. Tangential fraction 0.7071.

Why subtract θ?

φ tells you where the acceleration points relative to fixed +x. θ tells you where outward radial points relative to that same +x. Their difference is the angle between the radial axis and the acceleration.

The radial projection is the adjacent component, so it uses cosine. The tangential projection is the perpendicular component, so it uses sine. The signs tell you which way along each axis the acceleration points.

Try this: leave φ alone and move θ. The orange arrow keeps its fixed-plane direction, but its radial and tangential components change.

Your code, in the same notation

phi = FORCE_PHASE + OMEGA_SUN * time
relative = phi - theta

a_r = self.acceleration * math.cos(relative)
a_theta = self.acceleration * math.sin(relative)
FORCE_PHASE
The modeled acceleration direction at time = 0.
OMEGA_SUN × time
The change in that modeled direction since time = 0.
theta
The satellite’s position angle, not its physical orientation.
Geometry demonstration, not a trajectory simulation. The dashed circle in the left view is a position-angle guide, not a prediction of the orbit. Positive angles are counterclockwise. + tangential is the direction of increasing θ, not necessarily the direction of the satellite’s velocity.