Packages

Simple elixir package for calculating circular Earth orbit

Current section

Files

Jump to
orbit_calc lib orbit_calc.ex
Raw

lib/orbit_calc.ex

defmodule OrbitCalc do
@moduledoc """
Documentation for `OrbitCalc`.
"""
@doc """
Hello world.
## Examples
iex> OrbitCalc.hello()
:world
"""
alias Decimal, as: D
@earth_mass D.new("5.9722E+24")
@earth_radius D.new("6.371E+6")
@g_const D.new("6.674301515151515E-11")
def circular_earth_orbit(height, precision) do
D.set_context(%D.Context{D.get_context | precision: precision, rounding: :half_up})
radius = D.add(height, @earth_radius)
speed = D.mult(@g_const, @earth_mass) |> D.div(radius) |> D.sqrt()
time = D.from_float(:math.pi) |> D.mult(2) |> D.mult(radius) |> D.div(speed)
%{:speed => speed, :time => time}
end
end