79 lines
1.4 KiB
C++
79 lines
1.4 KiB
C++
/* -----------------------------------------------------------------------------
|
|
GSFramework
|
|
Copyright 2001-2013 Emmanuel Julien. All Rights Reserved.
|
|
----------------------------------------------------------------------------- */
|
|
|
|
|
|
#ifndef __NMATH__
|
|
#define __NMATH__
|
|
|
|
|
|
#include "unit/nunit.h"
|
|
|
|
|
|
/*
|
|
@short Math namespace.
|
|
@author Emmanuel Julien (ejulien@gsworks.fr)
|
|
*/
|
|
namespace GS {
|
|
namespace Math {
|
|
|
|
static const float Pi = 3.1415926535f;
|
|
|
|
/// Euler angles rotation order.
|
|
enum rOrder
|
|
{
|
|
rOrder_ZYX = 0,
|
|
rOrder_YZX,
|
|
rOrder_ZXY,
|
|
rOrder_XZY,
|
|
rOrder_YXZ,
|
|
rOrder_XYZ,
|
|
rOrder_XY,
|
|
|
|
rOrder_Default = rOrder_YXZ // Y then X then Z.
|
|
};
|
|
|
|
enum Axis
|
|
{
|
|
AxisX, // Do not modify X, Y and Z order.
|
|
AxisY,
|
|
AxisZ,
|
|
AxisNone
|
|
};
|
|
|
|
void Init();
|
|
|
|
/// Return the reverse rotation order from a given input order.
|
|
rOrder ReverserRotationOrder(rOrder r);
|
|
|
|
float Sqrt(float v);
|
|
|
|
float TestEqual(float a, float b, float e = 0.000001f);
|
|
bool EqualZero(float v, float e = 0.000001f);
|
|
|
|
float Pow(float v, float exp);
|
|
|
|
float Ceil(float);
|
|
float Floor(float);
|
|
float Mod(float);
|
|
|
|
float RangeAdjust(float v, float old_min, float old_max, float new_min, float new_max);
|
|
|
|
float Quantize(float v, float q);
|
|
|
|
float Sin(float);
|
|
float ASin(float);
|
|
float Cos(float);
|
|
float ACos(float);
|
|
float Tan(float);
|
|
float ATan(float);
|
|
|
|
bool IsFinite(float);
|
|
|
|
} // Math
|
|
} // GS
|
|
|
|
|
|
#endif // __NMATH__
|