Changeset 402 for trunk/src/core/random.cc
- Timestamp:
- 06/13/15 21:51:27 (10 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/core/random.cc
r395 r402 19 19 random::seed_type random::randomize() 20 20 { 21 std::mt19937& rng = *( ( std::mt19937* )m_data);21 std::mt19937& rng = *( reinterpret_cast< std::mt19937* >( m_data ) ); 22 22 seed_type seed = randomized_seed(); 23 23 rng.seed( seed ); … … 27 27 void random::set_seed( random::seed_type seed /*= 0 */ ) 28 28 { 29 std::mt19937& rng = *( ( std::mt19937* )m_data);29 std::mt19937& rng = *( reinterpret_cast<std::mt19937*>( m_data ) ); 30 30 rng.seed( seed == 0 ? randomized_seed() : seed ); 31 31 } … … 39 39 random::result_type random::rand() 40 40 { 41 std::mt19937& rng = *( ( std::mt19937* )m_data);41 std::mt19937& rng = *( reinterpret_cast<std::mt19937*>( m_data ) ); 42 42 return rng(); 43 43 } … … 45 45 sint32 random::srand( sint32 val ) 46 46 { 47 std::mt19937& rng = *( ( std::mt19937* )m_data);47 std::mt19937& rng = *( reinterpret_cast<std::mt19937*>( m_data ) ); 48 48 std::uniform_int_distribution<sint32> dist( 0, val - 1 ); 49 49 return dist( rng ); … … 52 52 uint32 random::urand( uint32 val ) 53 53 { 54 std::mt19937& rng = *( ( std::mt19937* )m_data);54 std::mt19937& rng = *( reinterpret_cast<std::mt19937*>( m_data ) ); 55 55 std::uniform_int_distribution<uint32> dist( 0, val - 1 ); 56 56 return dist( rng ); … … 59 59 f32 random::frand( f32 val ) 60 60 { 61 std::mt19937& rng = *( ( std::mt19937* )m_data);61 std::mt19937& rng = *( reinterpret_cast<std::mt19937*>( m_data ) ); 62 62 std::uniform_real_distribution<f32> dist( 0, val ); 63 63 return dist( rng ); … … 66 66 sint32 random::srange( sint32 min, sint32 max ) 67 67 { 68 std::mt19937& rng = *( ( std::mt19937* )m_data);68 std::mt19937& rng = *( reinterpret_cast<std::mt19937*>( m_data ) ); 69 69 std::uniform_int_distribution<sint32> dist( min, max ); 70 70 return dist( rng ); … … 73 73 uint32 random::urange( uint32 min, uint32 max ) 74 74 { 75 std::mt19937& rng = *( ( std::mt19937* )m_data);75 std::mt19937& rng = *( reinterpret_cast<std::mt19937*>( m_data ) ); 76 76 std::uniform_int_distribution<uint32> dist( min, max ); 77 77 return dist( rng ); … … 80 80 f32 random::frange( f32 min, f32 max ) 81 81 { 82 std::mt19937& rng = *( ( std::mt19937* )m_data);82 std::mt19937& rng = *( reinterpret_cast<std::mt19937*>( m_data ) ); 83 83 std::uniform_real_distribution<f32> dist( min, max ); 84 84 return dist( rng ); … … 87 87 uint32 random::dice( uint32 count, uint32 sides ) 88 88 { 89 std::mt19937& rng = *( ( std::mt19937* )m_data);89 std::mt19937& rng = *( reinterpret_cast<std::mt19937*>( m_data ) ); 90 90 std::uniform_int_distribution<uint32> dist( 1, sides ); 91 91 uint32 result = 0; … … 106 106 nv::vec2 nv::random::precise_unit_vec2() 107 107 { 108 std::mt19937& rng = *( ( std::mt19937* )m_data);108 std::mt19937& rng = *( reinterpret_cast<std::mt19937*>( m_data ) ); 109 109 std::uniform_real_distribution<f32> dist( 0, glm::pi<float>() * 2.f ); 110 110 float angle = dist( rng ); … … 114 114 nv::vec3 nv::random::precise_unit_vec3() 115 115 { 116 std::mt19937& rng = *( ( std::mt19937* )m_data);116 std::mt19937& rng = *( reinterpret_cast<std::mt19937*>( m_data ) ); 117 117 std::uniform_real_distribution<f32> dist11( -1.0f, 1.0f ); 118 118 std::uniform_real_distribution<f32> dist02pi( 0.0f, 2*glm::pi<float>() ); … … 129 129 nv::vec2 nv::random::fast_disk_point() 130 130 { 131 std::mt19937& rng = *( ( std::mt19937* )m_data);131 std::mt19937& rng = *( reinterpret_cast<std::mt19937*>( m_data ) ); 132 132 std::uniform_real_distribution<f32> dist( 0.0f, 1.0f ); 133 133 float r1 = dist( rng ); … … 140 140 nv::vec2 nv::random::precise_disk_point() 141 141 { 142 std::mt19937& rng = *( ( std::mt19937* )m_data);142 std::mt19937& rng = *( reinterpret_cast<std::mt19937*>( m_data ) ); 143 143 std::uniform_real_distribution<f32> unit( 0.0f, 1.0f ); 144 144 std::uniform_real_distribution<f32> angle( 0.0f, glm::pi<float>() ); … … 150 150 nv::vec3 nv::random::fast_sphere_point() 151 151 { 152 std::mt19937& rng = *( ( std::mt19937* )m_data);152 std::mt19937& rng = *( reinterpret_cast<std::mt19937*>( m_data ) ); 153 153 std::uniform_real_distribution<f32> dist01( 0.0f, 1.0f ); 154 154 std::uniform_real_distribution<f32> dist11( -1.0f, 1.0f ); … … 168 168 nv::vec3 nv::random::precise_sphere_point() 169 169 { 170 std::mt19937& rng = *( ( std::mt19937* )m_data);170 std::mt19937& rng = *( reinterpret_cast<std::mt19937*>( m_data ) ); 171 171 std::uniform_real_distribution<f32> dist01( 0.0f, 1.0f ); 172 172 std::uniform_real_distribution<f32> dist11( -1.0f, 1.0f ); … … 185 185 nv::vec2 nv::random::precise_ellipse_point( const vec2& radii ) 186 186 { 187 std::mt19937& rng = *( ( std::mt19937* )m_data);187 std::mt19937& rng = *( reinterpret_cast<std::mt19937*>( m_data ) ); 188 188 std::uniform_real_distribution<f32> distx( -radii.x, radii.x ); 189 189 std::uniform_real_distribution<f32> disty( -radii.y, radii.y ); … … 204 204 nv::vec3 nv::random::precise_ellipsoid_point( const vec3& radii ) 205 205 { 206 std::mt19937& rng = *( ( std::mt19937* )m_data);206 std::mt19937& rng = *( reinterpret_cast<std::mt19937*>( m_data ) ); 207 207 std::uniform_real_distribution<f32> distx( -radii.x, radii.x ); 208 208 std::uniform_real_distribution<f32> disty( -radii.y, radii.y ); … … 225 225 nv::vec2 nv::random::fast_hollow_disk_point( float iradius, float oradius ) 226 226 { 227 std::mt19937& rng = *( ( std::mt19937* )m_data);227 std::mt19937& rng = *( reinterpret_cast<std::mt19937*>( m_data ) ); 228 228 float idist2 = iradius * iradius; 229 229 float odist2 = oradius * oradius; … … 239 239 nv::vec3 nv::random::fast_hollow_sphere_point( float iradius, float oradius ) 240 240 { 241 std::mt19937& rng = *( ( std::mt19937* )m_data);241 std::mt19937& rng = *( reinterpret_cast<std::mt19937*>( m_data ) ); 242 242 float idist3 = iradius * iradius * iradius; 243 243 float odist3 = oradius * oradius * oradius; … … 254 254 nv::vec2 nv::random::fast_hollow_ellipse_point( const vec2& iradii, const vec2& oradii ) 255 255 { 256 std::mt19937& rng = *( ( std::mt19937* )m_data);256 std::mt19937& rng = *( reinterpret_cast<std::mt19937*>( m_data ) ); 257 257 vec2 iradii2 = iradii * iradii; 258 258 vec2 opoint = ellipse_edge( oradii ); … … 275 275 nv::vec3 nv::random::fast_hollow_ellipsoid_point( const vec3& iradii, const vec3& oradii ) 276 276 { 277 std::mt19937& rng = *( ( std::mt19937* )m_data);277 std::mt19937& rng = *( reinterpret_cast<std::mt19937*>( m_data ) ); 278 278 vec3 iradii2 = iradii * iradii; 279 279 vec3 opoint = ellipsoid_edge( oradii );
Note: See TracChangeset
for help on using the changeset viewer.