#  Copyright © 2017 Boyd Multerer. All rights reserved.

defmodule Scenic.Math do
  @moduledoc """
  Helper functions that support Scenic mathematical operations.

  The math functions are fairly straightforward. When performance is needed some
  have been broken out into a NIF.

  The NIF functions are currently written for compatibility over top speed and
  as such, there is an opportunity to further improve them by calling out to
  CPU-specific vector instructions in the future.

  @type vector_2 :: {x :: number, y :: number}

  @type point :: {x :: number, y :: number}

  @type line :: {p0 :: point, p1 :: point}

  @type triangle :: {p0 :: point, p1 :: point, p2 :: point}

  @type quad :: {p0 :: point, p1 :: point, p2 :: point, p3 :: point}

  @type matrix :: binary()

  @type matrix_list :: list(number)