angle v0.3.0 Angle.DMS

Functions relating to dealing with angles in Degrees, Minutes and Seconds.

Link to this section Summary

Functions

Convert the angle to it’s absolute value by discarding complete revolutions and converting negatives

Ensure that a DMS representation is present for this angle, otherwise calculate one

Initialize an Angle from integer d degrees

Initialize an Angle from integer d degrees, optionally followed by integer m minutes

Initialize an Angle from integer d degrees, followed by integer m minutes and s seconds

Attempt to parse a string of degrees, minutes and seconds

Returns the DMS representation of the Angle

Link to this section Functions

Link to this function abs(angle)
abs(Angle.t()) :: Angle.t()

Convert the angle to it’s absolute value by discarding complete revolutions and converting negatives.

Examples

iex> ~a(-270,15,45)dms
...> |> Angle.DMS.abs()
#Angle<90° 45 15>

iex> ~a(1170,0,0)dms
...> |> Angle.DMS.abs()
#Angle<90°>
Link to this function ensure(angle)
ensure(Angle.t()) :: Angle.t()

Ensure that a DMS representation is present for this angle, otherwise calculate one.

Examples

iex> ~a(90.5)d
...> |> ensure()
...> |> Map.get(:dms)
{90, 30, 0.0}

iex> ~a(166.7662400)d
...> |> ensure()
...> |> Map.get(:dms)
{166, 45, 58.464000000037686}

iex> ~a(1.579522973054868)r
...> |> ensure()
...> |> Map.get(:dms)
{90, 30, 0.0}

iex> ~a(100.55555555555556)g
...> |> ensure()
...> |> Map.get(:dms)
{90, 30, 0.0}

Initialize an Angle from integer d degrees.

Examples

iex> init(13)
#Angle<13°>
Link to this function init(d, m)
init(integer(), integer()) :: Angle.t()

Initialize an Angle from integer d degrees, optionally followed by integer m minutes.

Examples

iex> init(13, 30)
#Angle<13° 30>
Link to this function init(d, m, s)
init(integer(), integer(), number()) :: Angle.t()

Initialize an Angle from integer d degrees, followed by integer m minutes and s seconds.

Examples

iex> init(13, 30, 45)
#Angle<13° 30 45>
Link to this function parse(value)
parse(String.t()) :: {:ok, Angle.t()} | {:error, term()}

Attempt to parse a string of degrees, minutes and seconds.

Examples

iex> "166 45 58.46" |> parse() |> inspect()
"{:ok, #Angle<166° 45′ 58.46″>}"

iex> "166,45,58.46" |> parse() |> inspect()
"{:ok, #Angle<166° 45′ 58.46″>}"

iex> "166° 45′ 58.46″" |> parse() |> inspect()
"{:ok, #Angle<166° 45′ 58.46″>}"

iex> "166°45′58.46″" |> parse() |> inspect()
"{:ok, #Angle<166° 45′ 58.46″>}"

iex> "-166° 45′ 58.46″" |> parse() |> inspect()
"{:ok, #Angle<-166° 45′ 58.46″>}"
Link to this function to_dms(angle)
to_dms(Angle.t()) :: {Angle.t(), {integer(), integer(), number()}}

Returns the DMS representation of the Angle.

Examples

iex> ~a(0.5)r
...> |> to_dms()
...> |> inspect()
"{#Angle<28.64788975654116°>, {28, 38, 52.403123548181156}}"