Libraries‎ > ‎orbits‎ > ‎

Orbital converter

BehaviourComposer: ignore everything before this.

Begin micro-behaviour:

Begin description:

Converts orbital elements of a body given at www.exoplanets.org to state vectors which we use in this model.

End description

Orbital converter 

Begin NetLogo code:

to-report convert-orbital-elements-to-state-vectors [ ecc a i upper-omega lower-omega m0 ]    set m0 m0 * pi / 180    let Mass [ my-mass ] of the-sun + my-mass    let eca m0 + ecc / 2    let diff 10000    let eps 0.000001    let e1 0    let eca-degrees 0    while [ diff > eps ]          [ set eca-degrees eca * 180 / pi            set e1 eca - ( eca - ecc * sin ( eca-degrees ) - m0 ) / ( 1 - ecc * cos ( eca-degrees ) )            set diff abs ( e1 - eca )            set eca e1 ]    let ceca cos ( eca-degrees )    let seca sin ( eca-degrees )    set e1 a * sqrt ( abs ( 1 - ecc * ecc ) )    let xw a * ( ceca - ecc )    let yw e1 * seca    let edot sqrt ( ( g-in-standard-units * Mass ) / a ) / ( a * ( 1 - ecc * ceca ) )    let xdw -1 * a * edot * seca    let ydw (a * sqrt ( abs ( 1 - ecc * ecc )))  * edot * ceca    let Cw cos ( upper-omega )    let Sw sin ( upper-omega )    let co cos ( lower-omega )    let so sin ( lower-omega )    let ci cos ( i )    let si sin ( i )    let swci Sw * ci    let cwci Cw * ci    let pX Cw * co - so * swci    let pY Cw * so + co * swci    let pZ Sw * si    let qx -1 * Sw * co - so * cwci    let qy -1 * Sw * so + co * cwci    let qz Cw * si    let x xw * pX + yw * qx    let y xw * pY + yw * qy    let z xw * pZ + yw * qz    let xd xdw * pX + ydw * qx    let yd xdw * pY + ydw * qy    let zd xdw * pZ + ydw * qz    report ( list x y z xd yd zd )end

End NetLogo code

Implements the conversion used in http://orbitsimulator.com/formulas/OrbitalElements.html
Information about orbital elements and there uses can be found at http://en.wikipedia.org/wiki/Orbital_elements

Authored by Maria Marinari and Ken Kahn.

BehaviourComposer: ignore everything after this.