lib/azan/math_utils.ex
defmodule Azan.MathUtils do
@moduledoc """
Documentation for `MathUtils`.
"""
def normalize_to_scale(num, max) do
num - max * Float.floor(num / max)
end
def unwind_angle(angle) do
angle |> normalize_to_scale(360)
end
def quadrant_shift_angle(angle) when angle >= -180 and angle <= 180 do
angle
end
def quadrant_shift_angle(angle) do
angle - 360 * Float.round(angle / 360)
end
def sin_deg(deg) do
deg |> Math.deg2rad() |> Math.sin()
end
def cos_deg(deg) do
deg |> Math.deg2rad() |> Math.cos()
end
def sign(num) when num > 0, do: 1
def sign(num) when num < 0, do: -1
def sign(_), do: 0
end