00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038
00039 #pragma once
00040
00041
00042 #include "../glm.hpp"
00043 #include "../gtc/quaternion.hpp"
00044
00045 #if(defined(GLM_MESSAGES) && !defined(GLM_EXT_INCLUDED))
00046 # pragma message("GLM: GLM_GTX_compatibility extension included")
00047 #endif
00048
00049 #if(GLM_COMPILER & GLM_COMPILER_VC)
00050 # include <cfloat>
00051 #elif(GLM_COMPILER & GLM_COMPILER_GCC)
00052 # include <cmath>
00053 # if(GLM_PLATFORM & GLM_PLATFORM_ANDROID)
00054 # undef isfinite
00055 # endif
00056 #endif//GLM_COMPILER
00057
00058 namespace glm
00059 {
00062
00063 template <typename T> GLM_FUNC_QUALIFIER T lerp(T x, T y, T a){return mix(x, y, a);}
00064 template <typename T, precision P> GLM_FUNC_QUALIFIER detail::tvec2<T, P> lerp(const detail::tvec2<T, P>& x, const detail::tvec2<T, P>& y, T a){return mix(x, y, a);}
00065
00066 template <typename T, precision P> GLM_FUNC_QUALIFIER detail::tvec3<T, P> lerp(const detail::tvec3<T, P>& x, const detail::tvec3<T, P>& y, T a){return mix(x, y, a);}
00067 template <typename T, precision P> GLM_FUNC_QUALIFIER detail::tvec4<T, P> lerp(const detail::tvec4<T, P>& x, const detail::tvec4<T, P>& y, T a){return mix(x, y, a);}
00068 template <typename T, precision P> GLM_FUNC_QUALIFIER detail::tvec2<T, P> lerp(const detail::tvec2<T, P>& x, const detail::tvec2<T, P>& y, const detail::tvec2<T, P>& a){return mix(x, y, a);}
00069 template <typename T, precision P> GLM_FUNC_QUALIFIER detail::tvec3<T, P> lerp(const detail::tvec3<T, P>& x, const detail::tvec3<T, P>& y, const detail::tvec3<T, P>& a){return mix(x, y, a);}
00070 template <typename T, precision P> GLM_FUNC_QUALIFIER detail::tvec4<T, P> lerp(const detail::tvec4<T, P>& x, const detail::tvec4<T, P>& y, const detail::tvec4<T, P>& a){return mix(x, y, a);}
00071
00072 template <typename T, precision P> GLM_FUNC_QUALIFIER T slerp(detail::tquat<T, P> const & x, detail::tquat<T, P> const & y, T const & a){return mix(x, y, a);}
00073
00074 template <typename T, precision P> GLM_FUNC_QUALIFIER T saturate(T x){return clamp(x, T(0), T(1));}
00075 template <typename T, precision P> GLM_FUNC_QUALIFIER detail::tvec2<T, P> saturate(const detail::tvec2<T, P>& x){return clamp(x, T(0), T(1));}
00076 template <typename T, precision P> GLM_FUNC_QUALIFIER detail::tvec3<T, P> saturate(const detail::tvec3<T, P>& x){return clamp(x, T(0), T(1));}
00077 template <typename T, precision P> GLM_FUNC_QUALIFIER detail::tvec4<T, P> saturate(const detail::tvec4<T, P>& x){return clamp(x, T(0), T(1));}
00078
00079 template <typename T, precision P> GLM_FUNC_QUALIFIER T atan2(T x, T y){return atan(x, y);}
00080 template <typename T, precision P> GLM_FUNC_QUALIFIER detail::tvec2<T, P> atan2(const detail::tvec2<T, P>& x, const detail::tvec2<T, P>& y){return atan(x, y);}
00081 template <typename T, precision P> GLM_FUNC_QUALIFIER detail::tvec3<T, P> atan2(const detail::tvec3<T, P>& x, const detail::tvec3<T, P>& y){return atan(x, y);}
00082 template <typename T, precision P> GLM_FUNC_QUALIFIER detail::tvec4<T, P> atan2(const detail::tvec4<T, P>& x, const detail::tvec4<T, P>& y){return atan(x, y);}
00083
00084 template <typename genType> GLM_FUNC_DECL bool isfinite(genType const & x);
00085 template <typename T, precision P> GLM_FUNC_DECL detail::tvec2<bool, P> isfinite(const detail::tvec2<T, P>& x);
00086 template <typename T, precision P> GLM_FUNC_DECL detail::tvec3<bool, P> isfinite(const detail::tvec3<T, P>& x);
00087 template <typename T, precision P> GLM_FUNC_DECL detail::tvec4<bool, P> isfinite(const detail::tvec4<T, P>& x);
00088
00089 typedef bool bool1;
00090 typedef detail::tvec2<bool, highp> bool2;
00091 typedef detail::tvec3<bool, highp> bool3;
00092 typedef detail::tvec4<bool, highp> bool4;
00093
00094 typedef bool bool1x1;
00095 typedef detail::tmat2x2<bool, highp> bool2x2;
00096 typedef detail::tmat2x3<bool, highp> bool2x3;
00097 typedef detail::tmat2x4<bool, highp> bool2x4;
00098 typedef detail::tmat3x2<bool, highp> bool3x2;
00099 typedef detail::tmat3x3<bool, highp> bool3x3;
00100 typedef detail::tmat3x4<bool, highp> bool3x4;
00101 typedef detail::tmat4x2<bool, highp> bool4x2;
00102 typedef detail::tmat4x3<bool, highp> bool4x3;
00103 typedef detail::tmat4x4<bool, highp> bool4x4;
00104
00105 typedef int int1;
00106 typedef detail::tvec2<int, highp> int2;
00107 typedef detail::tvec3<int, highp> int3;
00108 typedef detail::tvec4<int, highp> int4;
00109
00110 typedef int int1x1;
00111 typedef detail::tmat2x2<int, highp> int2x2;
00112 typedef detail::tmat2x3<int, highp> int2x3;
00113 typedef detail::tmat2x4<int, highp> int2x4;
00114 typedef detail::tmat3x2<int, highp> int3x2;
00115 typedef detail::tmat3x3<int, highp> int3x3;
00116 typedef detail::tmat3x4<int, highp> int3x4;
00117 typedef detail::tmat4x2<int, highp> int4x2;
00118 typedef detail::tmat4x3<int, highp> int4x3;
00119 typedef detail::tmat4x4<int, highp> int4x4;
00120
00121 typedef float float1;
00122 typedef detail::tvec2<float, highp> float2;
00123 typedef detail::tvec3<float, highp> float3;
00124 typedef detail::tvec4<float, highp> float4;
00125
00126 typedef float float1x1;
00127 typedef detail::tmat2x2<float, highp> float2x2;
00128 typedef detail::tmat2x3<float, highp> float2x3;
00129 typedef detail::tmat2x4<float, highp> float2x4;
00130 typedef detail::tmat3x2<float, highp> float3x2;
00131 typedef detail::tmat3x3<float, highp> float3x3;
00132 typedef detail::tmat3x4<float, highp> float3x4;
00133 typedef detail::tmat4x2<float, highp> float4x2;
00134 typedef detail::tmat4x3<float, highp> float4x3;
00135 typedef detail::tmat4x4<float, highp> float4x4;
00136
00137 typedef double double1;
00138 typedef detail::tvec2<double, highp> double2;
00139 typedef detail::tvec3<double, highp> double3;
00140 typedef detail::tvec4<double, highp> double4;
00141
00142 typedef double double1x1;
00143 typedef detail::tmat2x2<double, highp> double2x2;
00144 typedef detail::tmat2x3<double, highp> double2x3;
00145 typedef detail::tmat2x4<double, highp> double2x4;
00146 typedef detail::tmat3x2<double, highp> double3x2;
00147 typedef detail::tmat3x3<double, highp> double3x3;
00148 typedef detail::tmat3x4<double, highp> double3x4;
00149 typedef detail::tmat4x2<double, highp> double4x2;
00150 typedef detail::tmat4x3<double, highp> double4x3;
00151 typedef detail::tmat4x4<double, highp> double4x4;
00152
00154 }
00155
00156 #include "compatibility.inl"