#include <boost/test/auto_unit_test.hpp>
#include <gslib/glsl_math/glsl_math.h>
Include dependency graph for test_glsl_math.cpp:
Go to the source code of this file.
Defines | |
#define | BOOST_AUTO_TEST_MAIN |
Functions | |
bool | isNearEqual (float a, float b) |
template<size_t Size> bool | isNearEqual (const tuple< Size > &a, const tuple< Size > &b) |
BOOST_AUTO_UNIT_TEST (test_glsl_math) |
|
Definition at line 1 of file test_glsl_math.cpp. |
|
Definition at line 15 of file test_glsl_math.cpp. References gslib::glsl_math::cross(), gslib::glsl_math::inverse(), isNearEqual(), gslib::glsl_math::length(), and gslib::glsl_math::lerp().
00015 { 00016 vec4 a( 1, 2, 3, 4 ); 00017 vec4::iterator it = a.begin(); 00018 float len = length( a ); 00019 BOOST_CHECK( isNearEqual( sqrtf( 1 + 4 + 9 + 16 ), len ) ); 00020 vec4 b( a ); 00021 b.operator *= ( 2 ); 00022 BOOST_CHECK( isNearEqual( vec4( 2, 4, 6, 8 ), b ) ); 00023 a *= b; 00024 BOOST_CHECK( isNearEqual( vec4( 2, 8, 18, 32 ), a ) ); 00025 00026 // test 'cross' 00027 BOOST_CHECK( isNearEqual( vec3( 0, 0, 1 ), cross( vec3( 1, 0, 0 ), vec3( 0, 1, 0 ) ) ) ); 00028 BOOST_CHECK( isNearEqual( vec3( 1, 0, 0 ), cross( vec3( 0, 1, 0 ), vec3( 0, 0, 1 ) ) ) ); 00029 BOOST_CHECK( isNearEqual( vec3( 0, 1, 0 ), cross( vec3( 0, 0, 1 ), vec3( 1, 0, 0 ) ) ) ); 00030 00031 mat2 m( 1, 2, 3, 4 ); 00032 vec2 v( 1, 2 ); 00033 00034 // m * v = ( 1, 3 ) * ( 1 ) 00035 // ( 2, 4 ) ( 2 ) 00036 BOOST_CHECK( isNearEqual( vec2( 7, 10 ), m * v ) ); 00037 00038 // v * m = ( 1, 2 ) * ( 1, 3 ) 00039 // ( 2, 4 ) 00040 BOOST_CHECK( isNearEqual( vec2( 5, 11 ), v * m ) ); 00041 00042 mat2 m2( 5, 6, 7, 8 ); 00043 BOOST_CHECK( isNearEqual( mat2( 19, 43, 22, 50 ), m * m2 ) ); 00044 BOOST_CHECK( isNearEqual( mat2( 23, 31, 34, 46 ), m2 * m ) ); 00045 00046 // quat 00047 quat q1( 1, 0, 0, 0 ); 00048 quat r( vec3( 0, 0, 1 ), radians( 90 ) ); 00049 BOOST_CHECK( isNearEqual( quat( 0, 1, 0, 0 ), r * q1 * conj( r ) ) ); 00050 quat q2( 1, 2, 3, 4 ); 00051 BOOST_CHECK( isNearEqual( quat::identity(), inverse( q2 ) * q2 ) ); 00052 00053 // inverse 00054 mat2 invM = inverse( m ); 00055 BOOST_CHECK( isNearEqual( mat2::identity(), m * invM ) ); 00056 mat3 m3( 1, 2, 3, 4, 0, 6, 7, 8, 9 ); 00057 mat3 invM3 = inverse( m3 ); 00058 BOOST_CHECK( isNearEqual( mat3::identity(), m3 * invM3 ) ); 00059 mat4 m4( 1, 2, 3, 4, 0, 6, 7, 8, 9, 10, 11, 12, -13, 14, -15, 16 ); 00060 mat4 invM4 = inverse( m4 ); 00061 BOOST_CHECK( isNearEqual( mat4::identity(), m4 * invM4 ) ); 00062 00063 // lerp 00064 BOOST_CHECK( isNearEqual( 100, lerp( 100, 200, 0 ) ) ); 00065 BOOST_CHECK( isNearEqual( 150, lerp( 100, 200, 0.5 ) ) ); 00066 BOOST_CHECK( isNearEqual( 200, lerp( 100, 200, 1 ) ) ); 00067 { 00068 vec3 a( 1, 2, 3 ), b( 4, 5, 6 ); 00069 BOOST_CHECK( isNearEqual( a, lerp( a, b, 0 ) ) ); 00070 BOOST_CHECK( isNearEqual( b, lerp( a, b, 1 ) ) ); 00071 BOOST_CHECK( isNearEqual( ( a + b ) * 0.5f, lerp( a, b, 0.5f ) ) ); 00072 } 00073 } |
Here is the call graph for this function:
|
Definition at line 11 of file test_glsl_math.cpp. References gslib::glsl_math::distance(). Referenced by BOOST_AUTO_UNIT_TEST().
00011 { 00012 return distance( a, b ) < 0.0001f; 00013 } |
Here is the call graph for this function:
|
Definition at line 7 of file test_glsl_math.cpp.
00007 {
00008 return fabsf( a - b ) < 0.0001f;
00009 }
|