lib/azan/qibla.ex
defmodule Azan.Qibla do
@moduledoc """
Documentation for `Qibla`.
"""
alias Azan.{
Coordinate,
MathUtils
}
def find(%Coordinate{latitude: latitude, longitude: longitude}) do
makkah = %Coordinate{latitude: 21.4225, longitude: 39.8261}
longitude_radian = longitude |> Math.deg2rad()
latitude_radian = latitude |> Math.deg2rad()
makkah_latitude_radian = makkah.latitude |> Math.deg2rad()
makkah_longitude_radian = makkah.longitude |> Math.deg2rad()
longitude_difference = makkah_longitude_radian - longitude_radian
term1 = longitude_difference |> Math.sin()
term2 = latitude_radian |> :math.cos() |> Kernel.*(makkah_latitude_radian |> :math.tan())
term3 = latitude_radian |> :math.sin() |> Kernel.*(longitude_difference |> :math.cos())
term1 |> :math.atan2(term2 - term3) |> Math.rad2deg() |> MathUtils.unwind_angle()
end
end