Changeset 451 for trunk/src


Ignore:
Timestamp:
07/30/15 19:47:02 (10 years ago)
Author:
epyon
Message:
  • math library started
Location:
trunk/src
Files:
6 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/core/random.cc

    r443 r451  
    110110nv::vec2 nv::random::precise_unit_vec2()
    111111{
    112         float angle = frand( glm::pi<float>() * 2.f );
    113         return vec2( glm::cos( angle ), glm::sin( angle ) );
     112        f32 angle = frand( math::pi<f32>() * 2.f );
     113        return vec2( math::cos( angle ), math::sin( angle ) );
    114114}
    115115
    116116nv::vec3 nv::random::precise_unit_vec3()
    117117{
    118         float cos_theta = frange( -1.0f, 1.0f );
    119         float sin_theta = glm::sqrt( 1.0f - cos_theta * cos_theta );
    120         float phi       = frand( 2 * glm::pi<float>() );
     118        f32 cos_theta = frange( -1.0f, 1.0f );
     119        f32 sin_theta = math::sqrt( 1.0f - cos_theta * cos_theta );
     120        f32 phi       = frand( 2 * math::pi<f32>() );
    121121        return vec3(
    122                 sin_theta * glm::sin(phi),
    123                 sin_theta * glm::cos(phi),
     122                sin_theta * math::sin(phi),
     123                sin_theta * math::cos(phi),
    124124                cos_theta
    125125                );
     
    128128nv::vec2 nv::random::fast_disk_point()
    129129{
    130         float r1 = frand();
    131         float r2 = frand();
     130        f32 r1 = frand();
     131        f32 r2 = frand();
    132132        if ( r1 > r2 ) swap( r1, r2 );
    133         float rf = 2*glm::pi<float>()*(r1/r2);
    134         return vec2( r2*glm::cos( rf ), r2*glm::sin( rf ) );
     133        f32 rf = 2* math::pi<f32>()*(r1/r2);
     134        return vec2( r2*math::cos( rf ), r2*math::sin( rf ) );
    135135}
    136136
    137137nv::vec2 nv::random::precise_disk_point()
    138138{
    139         float r = glm::sqrt( frand() );
    140         float rangle = frand( glm::pi<float>() );
    141         return vec2( r*glm::cos( rangle ), r*glm::sin( rangle ) );
     139        f32 r = math::sqrt( frand() );
     140        f32 rangle = frand( math::pi<f32>() );
     141        return vec2( r*math::cos( rangle ), r*math::sin( rangle ) );
    142142}
    143143
    144144nv::vec3 nv::random::fast_sphere_point()
    145145{
    146         float rad     = frand();
    147         float pi      = glm::pi<float>();
    148         float phi     = glm::asin( frange( -1.0f, 1.0f ) ) + pi*.5f;
    149         float theta   = frange( 0.0f, 2 * glm::pi<float>() );
    150         float sin_phi = glm::sin( phi );
     146        f32 rad     = frand();
     147        f32 pi      = math::pi<f32>();
     148        f32 phi     = math::asin( frange( -1.0f, 1.0f ) ) + pi*.5f;
     149        f32 theta   = frange( 0.0f, 2 * math::pi<f32>() );
     150        f32 sin_phi = math::sin( phi );
    151151        return vec3(
    152                 rad * glm::cos(theta) * sin_phi,
    153                 rad * glm::sin(theta) * sin_phi,
    154                 rad * glm::cos(phi)
     152                rad * math::cos(theta) * sin_phi,
     153                rad * math::sin(theta) * sin_phi,
     154                rad * math::cos(phi)
    155155        );
    156156}
     
    158158nv::vec3 nv::random::precise_sphere_point()
    159159{
    160         float radius = glm::pow( frand(), 1.f/3.f );
    161         float cos_theta = frange( -1.0f, 1.0f );
    162         float sin_theta = glm::sqrt( 1.0f - cos_theta * cos_theta );
    163         float phi       = frange( 0.0f, 2 * glm::pi<float>() );
     160        f32 radius = math::pow( frand(), 1.f/3.f );
     161        f32 cos_theta = frange( -1.0f, 1.0f );
     162        f32 sin_theta = math::sqrt( 1.0f - cos_theta * cos_theta );
     163        f32 phi       = frange( 0.0f, 2 * math::pi<f32>() );
    164164        return vec3(
    165                 radius * sin_theta * glm::sin(phi),
    166                 radius * sin_theta * glm::cos(phi),
     165                radius * sin_theta * math::sin(phi),
     166                radius * sin_theta * math::cos(phi),
    167167                radius * cos_theta
    168168                );
     
    199199}
    200200
    201 nv::vec2 nv::random::fast_hollow_disk_point( float iradius, float oradius )
    202 {
    203         float idist2 = iradius * iradius;
    204         float odist2 = oradius * oradius;
    205         float rdist  = glm::sqrt( frange( idist2, odist2 ) );
     201nv::vec2 nv::random::fast_hollow_disk_point( f32 iradius, f32 oradius )
     202{
     203        f32 idist2 = iradius * iradius;
     204        f32 odist2 = oradius * oradius;
     205        f32 rdist  = math::sqrt( frange( idist2, odist2 ) );
    206206        return rdist * precise_unit_vec2();
    207207}
    208208
    209 nv::vec2 nv::random::precise_hollow_disk_point( float iradius, float oradius )
     209nv::vec2 nv::random::precise_hollow_disk_point( f32 iradius, f32 oradius )
    210210{
    211211        return fast_hollow_disk_point( iradius, oradius );
    212212}
    213213
    214 nv::vec3 nv::random::fast_hollow_sphere_point( float iradius, float oradius )
    215 {
    216         float idist3 = iradius * iradius * iradius;
    217         float odist3 = oradius * oradius * oradius;
    218         float rdist  = glm::pow( frange( idist3, odist3 ), 1.f/3.f );
     214nv::vec3 nv::random::fast_hollow_sphere_point( f32 iradius, f32 oradius )
     215{
     216        f32 idist3 = iradius * iradius * iradius;
     217        f32 odist3 = oradius * oradius * oradius;
     218        f32 rdist  = math::pow( frange( idist3, odist3 ), 1.f/3.f );
    219219        return rdist * precise_unit_vec3();
    220220}
    221221
    222 nv::vec3 nv::random::precise_hollow_sphere_point( float iradius, float oradius )
     222nv::vec3 nv::random::precise_hollow_sphere_point( f32 iradius, f32 oradius )
    223223{
    224224        return fast_hollow_sphere_point( iradius, oradius );
     
    232232        vec2 opoint2    = opoint * opoint;
    233233        vec2 odir       = glm::normalize( opoint );
    234         float odist2    = opoint2.x + opoint2.y;
    235 
    236         float low    = iradii2.y * opoint2.x + iradii2.x * opoint2.y;
    237         float idist2 = ((iradii2.x * iradii2.y) / low ) * odist2;
    238 
    239         float rdist     = glm::sqrt( frange( idist2, odist2 ) );
     234        f32 odist2    = opoint2.x + opoint2.y;
     235
     236        f32 low    = iradii2.y * opoint2.x + iradii2.x * opoint2.y;
     237        f32 idist2 = ((iradii2.x * iradii2.y) / low ) * odist2;
     238
     239        f32 rdist     = math::sqrt( frange( idist2, odist2 ) );
    240240        return odir * rdist;   
    241241}
     
    252252        vec3 opoint2    = opoint * opoint;
    253253        vec3 odir       = glm::normalize( opoint );
    254         float odist2    = opoint2.x + opoint2.y + opoint2.z;
    255 
    256         float low    =
     254        f32 odist2    = opoint2.x + opoint2.y + opoint2.z;
     255
     256        f32 low    =
    257257                iradii2.y * iradii2.z * opoint2.x +
    258258                iradii2.x * iradii2.z * opoint2.y +
    259259                iradii2.x * iradii2.y * opoint2.z;
    260         float idist2 = ((iradii2.x * iradii2.y * iradii2.z) / low ) * odist2;
    261 
    262         float odist3 = odist2 * glm::sqrt( odist2 );
    263         float idist3 = idist2 * glm::sqrt( idist2 );
    264 
    265         float rdist     = glm::pow( frange( idist3, odist3 ), 1.f/3.f );
     260        f32 idist2 = ((iradii2.x * iradii2.y * iradii2.z) / low ) * odist2;
     261
     262        f32 odist3 = odist2 * math::sqrt( odist2 );
     263        f32 idist3 = idist2 * math::sqrt( idist2 );
     264
     265        f32 rdist     = math::pow( frange( idist3, odist3 ), 1.f/3.f );
    266266        return odir * rdist;   
    267267}
  • trunk/src/engine/particle_engine.cc

    r439 r451  
    231231        datap->plane_normal = normalize_safe( datap->plane_normal, vec3(0.0f,1.0f,0.0f) );
    232232        datap->bounce       = table->get<float>("bounce", 0.0f );
    233         datap->distance     = -glm::dot( datap->plane_normal, datap->plane_point ) / glm::sqrt(glm::dot( datap->plane_normal, datap->plane_normal ) );
     233        datap->distance     = -glm::dot( datap->plane_normal, datap->plane_point ) / math::sqrt(glm::dot( datap->plane_normal, datap->plane_normal ) );
    234234        return true;
    235235}
     
    411411                                edata.dir          = glm::normalize( element.get<vec3>("direction", vec3(0,1,0) ) );
    412412                               
    413                                 edata.odir = glm::vec3( 0, 0, 1 );
     413                                edata.odir = vec3( 0, 0, 1 );
    414414                                if ( edata.dir != vec3( 0, 1, 0 ) && edata.dir != vec3( 0, -1, 0 ) )
    415415                                        edata.odir = glm::normalize( glm::cross( edata.dir, vec3( 0, 1, 0 ) ) );                edata.cdir = glm::cross( edata.dir, edata.odir );
     
    750750                                        {
    751751                                                float emission_angle = glm::radians( edata.angle );
    752                                                 float cos_theta = r.frange( glm::cos( emission_angle ), 1.0f );
    753                                                 float sin_theta = glm::sqrt(1.0f - cos_theta * cos_theta );
    754                                                 float phi       = r.frange( 0.0f, 2*glm::pi<float>() );
     752                                                float cos_theta = r.frange( math::cos( emission_angle ), 1.0f );
     753                                                float sin_theta = math::sqrt(1.0f - cos_theta * cos_theta );
     754                                                float phi       = r.frange( 0.0f, 2* math::pi<float>() );
    755755                                                pinfo.velocity  = orient *
    756                                                         ( edata.odir * ( glm::cos(phi) * sin_theta ) +
    757                                                         edata.cdir * ( glm::sin(phi)*sin_theta ) +
     756                                                        ( edata.odir * ( math::cos(phi) * sin_theta ) +
     757                                                        edata.cdir * ( math::sin(phi)*sin_theta ) +
    758758                                                        edata.dir  * cos_theta );
    759759                                        }
  • trunk/src/formats/assimp_loader.cc

    r432 r451  
    139139                        vec2 s = assimp_st_cast( mesh->mTextureCoords[0][i] );
    140140
    141                         glm::vec3 t_i = glm::normalize( t - n * glm::dot( n, t ) );
     141                        vec3 t_i = glm::normalize( t - n * glm::dot( n, t ) );
    142142                        float det = ( glm::dot( glm::cross( n, t ), b ) );
    143143                        det = ( det < 0.0f ? -1.0f : 1.0f );
     
    440440//      if ( node->mNumScalingKeys > 0 )
    441441//      {
    442 //              nv::vec3 scale_vec0 = assimp_vec3_cast( node->mScalingKeys[0].mValue );
    443 //              float scale_value   = glm::length( glm::abs( scale_vec0 - nv::vec3(1,1,1) ) );
     442//              vec3 scale_vec0 = assimp_vec3_cast( node->mScalingKeys[0].mValue );
     443//              float scale_value   = glm::length( math::abs( scale_vec0 - vec3(1,1,1) ) );
    444444//              if ( node->mNumScalingKeys > 1 || scale_value > 0.001 )
    445445//              {
  • trunk/src/formats/md3_loader.cc

    r431 r451  
    240240        if ( !s_normal_ready )
    241241        {
    242                 float pi      = glm::pi<float>();
     242                float pi      = math::pi<float>();
    243243                float convert = (2 * pi) / 255.0f;
    244244                int n = 0;
     
    246246                {
    247247                        float flat    = lat * convert;
    248                         float sin_lat = glm::sin( flat );
    249                         float cos_lat = glm::cos( flat );
     248                        float sin_lat = math::sin( flat );
     249                        float cos_lat = math::cos( flat );
    250250                        for ( int lng = 0; lng < 256; ++lng, ++n )
    251251                        {
    252252                                float flng    = lng * convert;
    253                                 float sin_lng = glm::sin( flng );
    254                                 float cos_lng = glm::cos( flng );
     253                                float sin_lng = math::sin( flng );
     254                                float cos_lng = math::cos( flng );
    255255                                s_normal_cache[n].x = cos_lat * sin_lng;
    256256//                              s_normal_cache[n].y = sin_lat * sin_lng;
  • trunk/src/gfx/keyframed_mesh.cc

    r430 r451  
    9393                        }
    9494                }
    95                 m_last_frame    = static_cast<uint32>( glm::floor( tick_time ) + anim->get_start() );
     95                m_last_frame    = static_cast<uint32>( math::floor( tick_time ) + anim->get_start() );
    9696                m_next_frame    = m_last_frame + 1;
    9797                if ( m_next_frame > static_cast<uint32>( anim->get_end() ) ) m_next_frame = static_cast<uint32>( anim->get_start() );
    98                 m_interpolation = tick_time - glm::floor( tick_time );
     98                m_interpolation = tick_time - math::floor( tick_time );
    9999        }
    100100}
  • trunk/src/lua/lua_glm.cc

    r449 r451  
    5656        static inline T unit() { return T( 1, 1, 1 ); }
    5757        static inline T construct( lua_State* L, int index ) {
    58                 typedef nv::tvec2<typename T::value_type> vec2;
     58                typedef nv::math::tvec2<typename T::value_type> vec2;
    5959                if ( lua_type( L, index ) == LUA_TUSERDATA )
    6060                {
     
    7777        static inline T unit() { return T( 1, 1, 1, 1 ); }
    7878        static inline T construct( lua_State* L, int index ) {
    79                 typedef nv::tvec2<typename T::value_type> vec2;
    80                 typedef nv::tvec3<typename T::value_type> vec3;
     79                typedef nv::math::tvec2<typename T::value_type> vec2;
     80                typedef nv::math::tvec3<typename T::value_type> vec3;
    8181                if ( lua_type( L, index ) == LUA_TUSERDATA )
    8282                {
     
    242242        {
    243243                switch (len) {
    244                 case 2 : push_vec( L, nv::tvec2<typename T::value_type>( (*v)[nlua_swizzel_lookup[key[0]]], (*v)[nlua_swizzel_lookup[key[1]]] ) ); return 1;
    245                 case 3 : push_vec( L, nv::tvec3<typename T::value_type>( (*v)[nlua_swizzel_lookup[key[0]]], (*v)[nlua_swizzel_lookup[key[1]]], (*v)[nlua_swizzel_lookup[key[2]]] ) ); return 1;
    246                 case 4 : push_vec( L, nv::tvec4<typename T::value_type>( (*v)[nlua_swizzel_lookup[key[0]]], (*v)[nlua_swizzel_lookup[key[1]]], (*v)[nlua_swizzel_lookup[key[2]]], (*v)[nlua_swizzel_lookup[key[3]]] ) ); return 1;
     244                case 2 : push_vec( L, nv::math::tvec2<typename T::value_type>( (*v)[nlua_swizzel_lookup[key[0]]], (*v)[nlua_swizzel_lookup[key[1]]] ) ); return 1;
     245                case 3 : push_vec( L, nv::math::tvec3<typename T::value_type>( (*v)[nlua_swizzel_lookup[key[0]]], (*v)[nlua_swizzel_lookup[key[1]]], (*v)[nlua_swizzel_lookup[key[2]]] ) ); return 1;
     246                case 4 : push_vec( L, nv::math::tvec4<typename T::value_type>( (*v)[nlua_swizzel_lookup[key[0]]], (*v)[nlua_swizzel_lookup[key[1]]], (*v)[nlua_swizzel_lookup[key[2]]], (*v)[nlua_swizzel_lookup[key[3]]] ) ); return 1;
    247247                default: break;
    248248                }
     
    258258int nlua_vec_newindex( lua_State* L )
    259259{
    260         typedef nv::tvec2<typename T::value_type> vec2;
    261         typedef nv::tvec3<typename T::value_type> vec3;
    262         typedef nv::tvec4<typename T::value_type> vec4;
     260        typedef nv::math::tvec2<typename T::value_type> vec2;
     261        typedef nv::math::tvec3<typename T::value_type> vec3;
     262        typedef nv::math::tvec4<typename T::value_type> vec4;
    263263
    264264        T* v = to_pvec<T>( L, 1 );
Note: See TracChangeset for help on using the changeset viewer.