BehaviourComposer: ignore everything before this.
Begin micro-behaviour:
Begin description:
sets the elements of a body to result in a more elliptical orbit.
End description
Process Keplerian elements
Begin NetLogo code:
set my-mass my-earth-mass * 5.97219e24 set size (6371 * my-earth-radius) / distance-scale ; convert to kilometres and then scale let semi-major-axis my-semi-major-in-au * 149597871; km let longitude semi-major-axis mod 360 ; longitude of the ascending body not known so arbitrary value let argument 90 ; of periapsis since unknown let mean-anomaly my-mass mod 360 ; need arbitrary value since most bodies should have different degrees set my-number-from-the-sun position last my-name ["a" "b" "c" "d" "e" "f" "g" "h" "i"] set color 5 + my-number-from-the-sun * 10 set my-length-of-year-in-seconds my-orbital-period-in-days * 24 * 60 * 60 ; enter in days let state-vector convert-orbital-elements-to-state-vectors my-eccentricity (semi-major-axis * 1000) my-inclination-in-degrees longitude argument mean-anomaly let x item 0 state-vector / (distance-scale * 1000) let y item 1 state-vector / (distance-scale * 1000) let z item 2 state-vector / ( distance-scale * 1000 ) if x != 0 or y != 0 [ set my-initial-heading atan x y ] ; converting from m/s to km/s set my-initial-x-velocity item 3 state-vector / 1000 set my-initial-y-velocity item 4 state-vector / 1000 set my-initial-z-velocity item 5 state-vector / 1000 if not the-world-is-3-d? [ ifelse abs x < abs y and abs x < abs z [ set x z set my-initial-x-velocity my-initial-z-velocity ] [ if abs y < abs x and abs y < abs z [ set y z set my-initial-y-velocity my-initial-z-velocity ]] setxy x y ] if the-world-is-3-d? [setxyz x y z ; distance from center facexyz my-initial-x-velocity my-initial-y-velocity my-initial-z-velocity set my-initial-velocity-pitch pitch ] let initial-speed ( sqrt ( my-initial-x-velocity ^ 2 + my-initial-y-velocity ^ 2 + my-initial-z-velocity ^ 2 ) / distance-scale) * time-scale if initial-speed > the-maximum-speed [set the-maximum-speed initial-speed] let f ( my-eccentricity * semi-major-axis ) set my-minimum-distance-to-com semi-major-axis - f set my-maximum-distance-to-com semi-major-axis + f
End NetLogo code
Authored by Ethan Edwards and Ken Kahn. Based on a micro-behaviour by Maria Marinari and Ken Kahn
BehaviourComposer: ignore everything after this.