úΖx‘(\      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[ <The Object module contains the type definition of a Object. CC0frosch03@frosch03.de experimental Safe-InferredAn  is something named.\Make  an instance of ]\\.This module contains some auxiliary functions.CC0frosch03@frosch03.de experimental Safe-Inferred The function Í takes a test function and a list of values. It returns all elements that do not pass the test function until it reaches the first one that passes the test function, otherwise it returns the empty list. returns of a list of ^ values the first actual _- value or nothing if none is within the list.The Orbit* module contains the type definition of a . CC0frosch03@frosch03.de experimental Safe-InferredThe " is the height above ground level.@The 'Orbit a' data type defines an orbit around a central body . is the body the orbit is around 1 is the height of the heighest point of the orbit / is the height of the lowest point of the orbit J is the angle that the orbit is inclined against the aquatorial plane ' is the longitude of the ascending node ! is the argument of the periapsisN takes a body as well as apoapsis and periapsis and of that creates an orbit. is similar to 7 with the difference that it creates a circular orbit.`NAn orbit is only showable if the type of the centerBody is also showable. As  a  should normaly be a Body that should be not a problem.  `   ` "This module defines a system type.CC0frosch03@frosch03.de experimental Safe-InferredThe System* module contains the type definition of a . aeMaking 'System b' a member of class functor. With this instance, one could use map over 'System b'. bA X could be shown, if both type parameters are also filled with types, that are showable.abab 8The Body module contains the type definition of a Body. CC0frosch03@frosch03.de experimental Safe-InferredThe Q type defines a celestial object within this library. Every celestial object has0 [m] the radius (from the bodys center) in meter+ [kg] the mass of the object in kilo gramms [m] the sphere of influence of the object in meter) empty or a system of surronding objects.The K type is the central data type within the KSP library. It could be either  or ‰ is everything withing ksp that is a star, a planet or a moon. They are static in their orbits and are therefore called railed.ÿ is every other part in ksp, that is physical. Here they include deltaV counter, but are also modelled as celestial objects. Actually in ksp orbits around movable parts arent possible. Anyhow, within this data type such constructs are doable.cc is an alias for a d value.eMake  an instance of ShowfMake  an instance of Equaltycefccef The Module System.KSP.DataConstructorsO imports everything that is a data constructor and exports them.CC0frosch03@frosch03.de experimental Safe-Inferred  - creates a data constructor, that binds the    to a    of    s around  s.!!D is the type of the gravitation constant, which is obious a double. !   !" !  !6This module contains basic orbital mechanic functions.CC0frosch03@frosch03.de experimental Safe-Inferred "" is an alias for d## of  at the current Position$$Z [Nm^2/kg^2] is the Gravitation constant in newton meter squared over kilo gramms squared%%, calculates the semi major axis of an orbit.&&t takes an orbit and a radius (from the center of the centerBody) and calculates the orbital speed at that position.''- calculates the escape velocity of that body.(burnProgradeFromCircOrb_ calculates the transformed orbit, after the supplied delta V is applied to the initial orbit.+A prograde burn is done through a positive "= parameter, a retrograde burn respective through a negative ".))ˆ is a function that takes an orbit and two heights. It updates the apoapsis with the bigger height and the periapsis with the smaller.*** calculates the new orbit after a burn of "( delta V is applied to the given orbit.f… is the function that calculates returns the distance of the body within orbit, to the center body. Typical this is one of   or  o is the initial orbitdV1 is the amount of delta V to apply to the orbit. +++ calculates the new orbit after a burn of "8 delta V is applied to the given orbit at the periapsis.,** calculates the new orbit after a burn of "8 delta V is applied to the given orbit at the apoapsis.--x takes two orbits around the same centerBody. It calculates both (v1 and v2 ) delta V changes for a hohmann transfair. "#$%&'()*+,- "#$%&'()*+,- #"$%&'()*+,- "#$%&'()*+,-6This module defines functions to deconstruct the typesCC0frosch03@frosch03.de experimental Safe-Inferred .. takes a   system and a 6. It returns the body that the supplied body orbits. gB is returned if the supplied body is not found within the system.// takes a   system and a @. It returns the chain of body's that are orbiting each other. 00 takes a   system and a from  and a to 0. For both bodys, the path up is calculated by /f and the position, where they reach the same body is returned (as Position and with the actual body).11 takes a body, a  2 system and maybe returns the orbit of the body. 22 takes a   system and a from  and a to . If one want's to reach the to body from fromN body the bodys between and their orbit around their centerBody are returnd.33 takes a   system and a from  and a to . If one want's to reach the to body from from¶ body the bodys between and their orbit around their centerBody are returnd. They are returnd as triple, with the overlapping body in the center of the triple and the path of the from; body in the first element of the triple. The path of the to( body in the last element of the triple.44 takes a   system and a from  and a to . If one want's to reach the to body from from@ body the bodys between are returnd, including the common body.55 takes a   system and a from  and a to . If one want's to reach the to body from from> body the bodys between are returnd, without the common body.64 takes a   system and from  and a to . If one want's to reach the to body from from¶ body the bodys between and their orbit around their centerBody are returnd. They are returnd as triple, with the overlapping body in the center of the triple and the path of the from; body in the first element of the triple. The path of the to) body in the last element of the triple.771 returns the orbital velocity of the given orbit.88 takes the result of 22 and calculates the corresponding orbital speeds. ./012345678()*+,./012345678./012356487)(*,+ ./0123456786Helper module to get data types and functions on them.CC0frosch03@frosch03.de experimental Safe-Inferred*  !./01235678, ! ./01235687`This module contains planets moons and kerbol as well as the corresponding orbitsCC0frosch03@frosch03.de experimental Safe-Inferred!99 is the definition of Moho:: is the definition of Gilly;; is the definition of Eve<< is the definition of Mun== is the definition of Minmus>> is the definition of Kerbin?? is the definition of Ike@@ is the definition of DresAA is the definition of DunaBB is the definition of LaytheCC is the definition of VallDD is the definition of TyloEE is the definition of BopFF is the definition of PolGG is the definition of JoolHH is the definition of EelooII is the definition of KerbolJJ( is the definition of the Orbit of GillyKK& is the definition of the Orbit of MunLL) is the definition of the Orbit of MinmusMM& is the definition of the Orbit of IkeNN) is the definition of the Orbit of LaytheOO' is the definition of the Orbit of VallPP' is the definition of the Orbit of TyloQQ& is the definition of the Orbit of BopRR& is the definition of the Orbit of PolSS' is the definition of the Orbit of MohoTT& is the definition of the Orbit of EveUU) is the definition of the Orbit of KerbinVV' is the definition of the Orbit of DunaWW' is the definition of the Orbit of DresXX' is the definition of the Orbit of JoolYY( is the definition of the Orbit of Eeloo!9:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXY!9:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXY!9:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXY!9:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYwKind of the main module. Start the interactive haskell session with this module loaded to try things out.CC0frosch03@frosch03.de experimental Safe-InferredZFTo calculate the orbital velocity of a circular orbit around kerbin, Z uses [ with > as default parameter.[[0 calculates the velocity within an orbit around  b,  h meters above the ground.Z[Z[Z[Z[h       ! " # $  % & ' ( )*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghigjkgjlm n o pqrs t ugjvwKSP-0.1System.KSP.DataConstructorsSystem.KSP.AuxiliarySystem.KSP.OrbitalMechanicsSystem.KSP.DataDestructorsSystem.KSP.UniverseSystem.KSP.KSPSystem.KSP.Datatype.ObjectSystem.KSP.Datatype.OrbitSystem.KSP.Datatype.SystemSystem.KSP.Datatype.BodySystem.KSP.DatatypeSystemOrbitBodySystem.KSP.DatatypesObjectname takeUntil firstJustHeightO centerBodyapoapsis periapsis inclination omega_big omega_smallLandedmkOrbit mkCircOrbitEmpty CelestialrmsoisystemMovabledeltaVRailedobject celestialKSystem GravConstSpeedRadiusvar_G semiMajorvv_eburnFromCircOrb updateOrbitburnAtburnAtPeriapsisburnAtApoapsishohmann getNextUp getPathUpgetDividsOrbitInSystem pathOBetween pathOBetween' pathBetween pathBetween_ pathBetween' orbitalSpeed pathSpeedskMohokGillykEvekMunkMinmuskKerbinkIkekDreskDunakLaythekVallkTylokBopkPolkJoolkEelookKerbol kGillyOrbit kMunOrbit kMinmusOrbit kIkeOrbit kLaytheOrbit kVallOrbit kTyloOrbit kBopOrbit kPolOrbit kMohoOrbit kEveOrbit kKerbinOrbit kDunaOrbit kDresOrbit kJoolOrbit kEelooOrbit v_orbKerbinv_orb $fShowObjectbaseGHC.ShowShow Data.MaybeMaybeJust $fShowOrbit$fFunctorSystem $fShowSystemDeltaVghc-prim GHC.TypesDouble $fShowBody$fEqBodyNothing