Changeset 451 for trunk/nv/stl/math.hh


Ignore:
Timestamp:
07/30/15 19:47:02 (10 years ago)
Author:
epyon
Message:
  • math library started
File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/nv/stl/math.hh

    r417 r451  
    1111
    1212#include <nv/common.hh>
    13 
    14 #if NV_COMPILER == NV_GNUC
    15 #pragma GCC system_header
    16 #elif NV_COMPILER == NV_CLANG
    17 #pragma clang system_header
    18 #endif
    19 
    20 #include <glm/glm.hpp>
    21 #include <glm/gtc/matrix_transform.hpp>
    22 #include <glm/gtc/type_ptr.hpp>
    23 #include <glm/gtc/quaternion.hpp>
    24 #include <glm/gtx/vector_angle.hpp>
    25 
    26 namespace nv
    27 {
    28 #if 0
    29         template < typename T > using tvec2 = ::glm::detail::tvec2<T, glm::precision::highp>;
    30         template < typename T > using tvec3 = ::glm::detail::tvec3<T, glm::precision::highp>;
    31         template < typename T > using tvec4 = ::glm::detail::tvec4<T, glm::precision::highp>;
    32         template < typename T > using tmat2 = ::glm::detail::tmat2x2<T, glm::precision::highp>;
    33         template < typename T > using tmat3 = ::glm::detail::tmat3x3<T, glm::precision::highp>;
    34         template < typename T > using tmat4 = ::glm::detail::tmat4x4<T, glm::precision::highp>;
    35         template < typename T > using tquat = ::glm::detail::tmat4x4<T, glm::precision::highp>;
    36 #else
    37         template < typename T > using tvec2 = ::glm::tvec2<T>;
    38         template < typename T > using tvec3 = ::glm::tvec3<T>;
    39         template < typename T > using tvec4 = ::glm::tvec4<T>;
    40         template < typename T > using tmat2 = ::glm::tmat2x2<T>;
    41         template < typename T > using tmat3 = ::glm::tmat3x3<T>;
    42         template < typename T > using tmat4 = ::glm::tmat4x4<T>;
    43         template < typename T > using tquat = ::glm::tmat4x4<T>;
    44 #endif
    45 
    46         using ::glm::mat3_cast;
    47         using ::glm::mat4_cast;
    48         using ::glm::quat_cast;
    49         using ::glm::make_vec2;
    50         using ::glm::make_vec3;
    51         using ::glm::make_vec4;
    52         using ::glm::make_mat2;
    53         using ::glm::make_mat3;
    54         using ::glm::make_mat4;
    55 
    56         typedef tvec2<sint8> i8vec2;
    57         typedef tvec3<sint8> i8vec3;
    58         typedef tvec4<sint8> i8vec4;
    59 
    60         typedef tvec2<sint16> i16vec2;
    61         typedef tvec3<sint16> i16vec3;
    62         typedef tvec4<sint16> i16vec4;
    63 
    64         typedef tvec2<uint8> u8vec2;
    65         typedef tvec3<uint8> u8vec3;
    66         typedef tvec4<uint8> u8vec4;
    67 
    68         typedef tvec2< float > vec2;
    69         typedef tvec3< float > vec3;
    70         typedef tvec4< float > vec4;
    71 
    72         typedef tvec2< int > ivec2;
    73         typedef tvec3< int > ivec3;
    74         typedef tvec4< int > ivec4;
    75 
    76         typedef tmat2< float > mat2;
    77         typedef tmat3< float > mat3;
    78         typedef tmat4< float > mat4;
    79 
    80         typedef glm::quat quat;
     13#include <nv/stl/math/common.hh>
     14#include <nv/stl/math/constants.hh>
     15#include <nv/stl/math/matrix_transform.hh>
     16#include <nv/stl/math/cast.hh>
     17
     18namespace nv {
    8119
    8220        template <typename T>
     
    8927
    9028        template <typename T>
    91         struct datatype_traits< tvec2<T> >
    92         {
    93                 typedef tvec2<T> type;
     29        struct datatype_traits< math::tvec2<T> >
     30        {
     31                typedef math::tvec2<T> type;
    9432                typedef typename type::value_type base_type;
    9533                static const size_t size = 2;
     
    9735
    9836        template <typename T>
    99         struct datatype_traits< tvec3<T> >
    100         {
    101                 typedef tvec3<T> type;
     37        struct datatype_traits< math::tvec3<T> >
     38        {
     39                typedef math::tvec3<T> type;
    10240                typedef typename type::value_type base_type;
    10341                static const size_t size = 3;
     
    10543
    10644        template <typename T>
    107         struct datatype_traits< tvec4<T> >
    108         {
    109                 typedef tvec4<T> type;
     45        struct datatype_traits< math::tvec4<T> >
     46        {
     47                typedef math::tvec4<T> type;
    11048                typedef typename type::value_type base_type;
    11149                static const size_t size = 4;
     
    282220
    283221        template <typename T>
    284         tvec3<T> normalize_safe(
    285                 const tvec3<T>& x,
    286                 const tvec3<T>& def = vec3()
     222        math::tvec3<T> normalize_safe(
     223                const math::tvec3<T>& x,
     224                const math::tvec3<T>& def = vec3()
    287225        )
    288226        {
    289                 typename tvec3<T>::value_type sqr = x.x * x.x + x.y * x.y + x.z * x.z;
     227                typename math::tvec3<T>::value_type sqr = x.x * x.x + x.y * x.y + x.z * x.z;
    290228                return ( sqr > 0 ? x * glm::inversesqrt(sqr) : def );
    291229        }
Note: See TracChangeset for help on using the changeset viewer.