| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400 |
- ///////////////////////////////////////////////////////////////////////////////////////////////////
- // OpenGL Mathematics Copyright (c) 2005 - 2010 G-Truc Creation (www.g-truc.net)
- ///////////////////////////////////////////////////////////////////////////////////////////////////
- // Created : 2008-08-31
- // Updated : 2008-08-31
- // Licence : This source is under MIT License
- // File : test/core/func_trigonometric.cpp
- ///////////////////////////////////////////////////////////////////////////////////////////////////
- #include "../precompiled.hpp"
- #include <glm/core/func_trigonometric.hpp>
- namespace glm{
- namespace test{
- static const float epsilon = 0.00001f;
- static const float pi = 3.14159265358979323846f;
- bool test_radians_1()
- {
- float angle = radians(360.f);
- if(angle < 2.0f * pi + epsilon && angle > 2.0f * pi - epsilon)
- return true;
- return false;
- }
- bool test_radians_2()
- {
- vec2 angle = radians(vec2(360.f, 180.f));
- if(angle.x < 2.0f * pi + epsilon && angle.x > 2.0f * pi - epsilon &&
- angle.y < pi + epsilon && angle.y > pi - epsilon)
- return true;
- return false;
- }
- bool test_radians_3()
- {
- vec3 angle = radians(vec3(360.f, 180.f, 0.f));
- if(angle.x < 2.0f * pi + epsilon && angle.x > 2.0f * pi - epsilon &&
- angle.y < pi + epsilon && angle.y > pi - epsilon &&
- angle.z == 0.f)
- return true;
- return false;
- }
- bool test_radians_4()
- {
- vec4 angle = radians(vec4 (360.f, 180.f, 0.f, -180.f));
- if(angle.x < 2.0f * pi + epsilon && angle.x > 2.0f * pi - epsilon &&
- angle.y < pi + epsilon && angle.y > pi - epsilon &&
- angle.z == 0.f &&
- angle.w > -(pi + epsilon) && angle.w < -(pi - epsilon))
- return true;
- return false;
- }
- bool test_degrees_1()
- {
- float angle1 = degrees(pi * 2.f);
- float angle2 = degrees(0.f);
- if(angle1 < 360.1f && angle1 > 359.9f && angle2 == 0.0f)
- return true;
- return false;
- }
- bool test_degrees_2()
- {
- vec2 angle = degrees(vec2 (pi * 2.f, pi));
- if(angle.x < 360.1f && angle.x > 359.9f &&
- angle.y < 180.1f && angle.y > 179.9f)
- return true;
- return false;
- }
- bool test_degrees_3()
- {
- vec3 angle = degrees(vec3 (pi * 2.f, pi, 0.f));
- if(angle.x < 360.1f && angle.x > 359.9f &&
- angle.y < 180.1f && angle.y > 179.9f &&
- angle.z == 0.f)
- return true;
- return false;
- }
- bool test_degrees_4()
- {
- vec4 angle = degrees(vec4 (pi * 2.f, pi, 0.f, -pi));
- if(angle.x < 360.1f && angle.x > 359.9f &&
- angle.y < 180.1f && angle.y > 179.9f &&
- angle.z == 0.f &&
- angle.w > -180.1f && angle.w < -179.9f)
- return true;
- return false;
- }
- bool test_sin_1()
- {
- float sinus = glm::sin(0.f);
- if(sinus <= epsilon && sinus >= -epsilon)
- return true;
- return false;
- }
- bool test_sin_2()
- {
- glm::vec2 sinus = glm::sin(glm::vec2(0.f, 0.f));
- if(sinus.x <= epsilon && sinus.x >= -epsilon &&
- sinus.y <= epsilon && sinus.y >= -epsilon)
- return true;
- return false;
- }
- bool test_sin_3()
- {
- glm::vec3 sinus = glm::sin(glm::vec3(0.f, 0.f, 0.f));
- if(sinus.x <= epsilon && sinus.x >= -epsilon &&
- sinus.y <= epsilon && sinus.y >= -epsilon &&
- sinus.z <= epsilon && sinus.z >= -epsilon)
- return true;
- return false;
- }
- bool test_sin_4()
- {
- glm::vec4 sinus = glm::sin(glm::vec4(0.f, 0.f, 0.f, 0.f));
- if(sinus.x <= epsilon && sinus.x >= -epsilon &&
- sinus.y <= epsilon && sinus.y >= -epsilon &&
- sinus.z <= epsilon && sinus.z >= -epsilon &&
- sinus.w <= epsilon && sinus.w >= -epsilon)
- return true;
- return false;
- }
- bool test_cos_1()
- {
- float cosinus = glm::cos(0.f);
- if(cosinus <= 1.0f + epsilon && cosinus >= 1.0f - epsilon)
- return true;
- return false;
- }
- bool test_cos_2()
- {
- glm::vec2 cosinus = glm::cos(glm::vec2(0.f, 0.f));
- if(cosinus.x <= 1.0f + epsilon && cosinus.x >= 1.0f - epsilon &&
- cosinus.y <= 1.0f + epsilon && cosinus.y >= 1.0f - epsilon)
- return true;
- return false;
- }
- bool test_cos_3()
- {
- glm::vec3 cosinus = glm::cos(glm::vec3(0.f, 0.f, 0.f));
- if(cosinus.x <= 1.0f + epsilon && cosinus.x >= 1.0f - epsilon &&
- cosinus.y <= 1.0f + epsilon && cosinus.y >= 1.0f - epsilon &&
- cosinus.z <= 1.0f + epsilon && cosinus.z >= 1.0f - epsilon)
- return true;
- return false;
- }
- bool test_cos_4()
- {
- glm::vec4 cosinus = glm::cos(glm::vec4(0.f, 0.f, 0.f, 0.f));
- if(cosinus.x <= 1.0f + epsilon && cosinus.x >= 1.0f - epsilon &&
- cosinus.y <= 1.0f + epsilon && cosinus.y >= 1.0f - epsilon &&
- cosinus.z <= 1.0f + epsilon && cosinus.z >= 1.0f - epsilon &&
- cosinus.w <= 1.0f + epsilon && cosinus.w >= 1.0f - epsilon)
- return true;
- return false;
- }
- bool test_tan_1()
- {
- float tangent = glm::tan(0.f);
- if(tangent <= epsilon && tangent >= -epsilon)
- return true;
- return false;
- }
- bool test_tan_2()
- {
- glm::vec2 tangent = glm::tan(glm::vec2(0.f, 0.f));
- if(tangent.x <= epsilon && tangent.x >= -epsilon &&
- tangent.y <= epsilon && tangent.y >= -epsilon)
- return true;
- return false;
- }
- bool test_tan_3()
- {
- glm::vec3 tangent = glm::tan(glm::vec3(0.f, 0.f, 0.f));
- if(tangent.x <= epsilon && tangent.x >= -epsilon &&
- tangent.y <= epsilon && tangent.y >= -epsilon &&
- tangent.z <= epsilon && tangent.z >= -epsilon)
- return true;
- return false;
- }
- bool test_tan_4()
- {
- glm::vec4 tangent = glm::tan(glm::vec4(0.f, 0.f, 0.f, 0.f));
- if(tangent.x <= epsilon && tangent.x >= -epsilon &&
- tangent.y <= epsilon && tangent.y >= -epsilon &&
- tangent.z <= epsilon && tangent.z >= -epsilon &&
- tangent.w <= epsilon && tangent.w >= -epsilon)
- return true;
- return false;
- }
- bool test_asin_1()
- {
- float arc_sinus = glm::asin(0.f);
- if(arc_sinus <= epsilon && arc_sinus >= -epsilon)
- return true;
- return false;
- }
- bool test_asin_2()
- {
- glm::vec2 arc_sinus = glm::asin(glm::vec2(0.f, 0.f));
- if(arc_sinus.x <= epsilon && arc_sinus.x >= -epsilon &&
- arc_sinus.y <= epsilon && arc_sinus.y >= -epsilon)
- return true;
- return false;
- }
- bool test_asin_3()
- {
- glm::vec3 arc_sinus = glm::asin(glm::vec3(0.f, 0.f, 0.f));
- if(arc_sinus.x <= epsilon && arc_sinus.x >= -epsilon &&
- arc_sinus.y <= epsilon && arc_sinus.y >= -epsilon &&
- arc_sinus.z <= epsilon && arc_sinus.z >= -epsilon)
- return true;
- return false;
- }
- bool test_asin_4()
- {
- glm::vec4 arc_sinus = glm::sin(glm::vec4(0.f, 0.f, 0.f, 0.f));
- if(arc_sinus.x <= epsilon && arc_sinus.x >= -epsilon &&
- arc_sinus.y <= epsilon && arc_sinus.y >= -epsilon &&
- arc_sinus.z <= epsilon && arc_sinus.z >= -epsilon &&
- arc_sinus.w <= epsilon && arc_sinus.w >= -epsilon)
- return true;
- return false;
- }
- bool test_acos_1()
- {
- float arc_cosinus = glm::acos(1.f);
- if(arc_cosinus <= epsilon && arc_cosinus >= -epsilon)
- return true;
- return false;
- }
- bool test_acos_2()
- {
- glm::vec2 arc_cosinus = glm::acos(glm::vec2(1.f, 1.f));
- if(arc_cosinus.x <= epsilon && arc_cosinus.x >= -epsilon &&
- arc_cosinus.y <= epsilon && arc_cosinus.y >= -epsilon)
- return true;
- return false;
- }
- bool test_acos_3()
- {
- glm::vec3 arc_cosinus = glm::acos(glm::vec3(1.f, 1.f, 1.f));
- if(arc_cosinus.x <= epsilon && arc_cosinus.x >= -epsilon &&
- arc_cosinus.y <= epsilon && arc_cosinus.y >= -epsilon &&
- arc_cosinus.z <= epsilon && arc_cosinus.z >= -epsilon)
- return true;
- return false;
- }
- bool test_acos_4()
- {
- glm::vec4 arc_cosinus = glm::acos(glm::vec4(1.f, 1.f, 1.f, 1.f));
- if(arc_cosinus.x <= epsilon && arc_cosinus.x >= -epsilon &&
- arc_cosinus.y <= epsilon && arc_cosinus.y >= -epsilon &&
- arc_cosinus.z <= epsilon && arc_cosinus.z >= -epsilon &&
- arc_cosinus.w <= epsilon && arc_cosinus.w >= -epsilon)
- return true;
- return false;
- }
- bool test_atan_1()
- {
- float tangent = glm::atan(0.f);
- if(tangent <= epsilon && tangent >= -epsilon)
- return true;
- return false;
- }
- bool test_atan_2()
- {
- glm::vec2 tangent = glm::atan(glm::vec2(0.f, 0.f));
- if(tangent.x <= epsilon && tangent.x >= -epsilon &&
- tangent.y <= epsilon && tangent.y >= -epsilon)
- return true;
- return false;
- }
- bool test_atan_3()
- {
- glm::vec3 tangent = glm::atan(glm::vec3(0.f, 0.f, 0.f));
- if(tangent.x <= epsilon && tangent.x >= -epsilon &&
- tangent.y <= epsilon && tangent.y >= -epsilon &&
- tangent.z <= epsilon && tangent.z >= -epsilon)
- return true;
- return false;
- }
- bool test_atan_4()
- {
- glm::vec4 tangent = glm::atan(glm::vec4(0.f, 0.f, 0.f, 0.f));
- if(tangent.x <= epsilon && tangent.x >= -epsilon &&
- tangent.y <= epsilon && tangent.y >= -epsilon &&
- tangent.z <= epsilon && tangent.z >= -epsilon &&
- tangent.w <= epsilon && tangent.w >= -epsilon)
- return true;
- return false;
- }
- void main_core_func_trigonometric()
- {
- assert(test_radians_1());
- assert(test_radians_2());
- assert(test_radians_3());
- assert(test_radians_4());
- assert(test_degrees_1());
- assert(test_degrees_2());
- assert(test_degrees_3());
- assert(test_degrees_4());
- assert(test_sin_1());
- assert(test_sin_2());
- assert(test_sin_3());
- assert(test_sin_4());
- assert(test_cos_1());
- assert(test_cos_2());
- assert(test_cos_3());
- assert(test_cos_4());
- assert(test_tan_1());
- assert(test_tan_2());
- assert(test_tan_3());
- assert(test_tan_4());
- assert(test_asin_1());
- assert(test_asin_2());
- assert(test_asin_3());
- assert(test_asin_4());
- assert(test_acos_1());
- assert(test_acos_2());
- assert(test_acos_3());
- assert(test_acos_4());
- assert(test_atan_1());
- assert(test_atan_2());
- assert(test_atan_3());
- assert(test_atan_4());
- }
- }//namespace test
- }//namespace glm
|