/**
Copyright: Copyright (c) 2016-2018 Andrey Penechko.
License: $(WEB boost.org/LICENSE_1_0.txt, Boost License 1.0).
Authors: Andrey Penechko.
*/
module voxelman.math;

public import std.algorithm : clamp, min, max, swap;
public import std.math : std_abs = abs, isNaN, floor, ceil, sqrt, PI, cos, sin, atan2;

public import gfm.integers.half;

public import dlib.math.transformation : translationMatrix, orthoMatrix, perspectiveMatrix;
public import dlib.math.interpolation : lerp;
public import dlib.math.matrix;
public import dlib.math.quaternion;
public import dlib.math.utils;
public import dlib.math.vector;

public import voxelman.geometry.rect;
public import voxelman.math.box;
public import voxelman.math.offset4;
public import voxelman.math.simplex;
public import voxelman.math.utils;

enum double SQRT_2 = sqrt(2.0);

alias bvec3 = Vector!(byte, 3);
alias hvec3 = Vector!(half, 3);
alias svec2 = Vector!(short, 2);
alias svec3 = Vector!(short, 3);
alias svec4 = Vector!(short, 4);
alias ubvec3 = Vector!(ubyte, 3);
alias ubvec4 = Vector!(ubyte, 4);