init commit
This commit is contained in:
@@ -0,0 +1,79 @@
|
||||
#include <math/dvc_math_util.h>
|
||||
#include <math/dvc_matrix4.h>
|
||||
#include <math/dvc_vector3.h>
|
||||
#include <math/dvc_vector4.h>
|
||||
|
||||
#include <gtest/gtest.h>
|
||||
#include <glm/glm.hpp>
|
||||
#include <glm/gtc/matrix_transform.hpp>
|
||||
|
||||
#include "dvt_unit_common.h"
|
||||
|
||||
using namespace davinci;
|
||||
|
||||
//-------------------------------------------------------------------------------------
|
||||
TEST(MathUtil, Basic)
|
||||
{
|
||||
|
||||
//lookat view matrix
|
||||
{
|
||||
float dEye[3] = { 0.0f, 4.0f, -10.0f };
|
||||
float dAt[3] = { 0.0f, 1.0f, 0.0f };
|
||||
float dUp[3] = { 0.0f, 1.0f, 0.0f };
|
||||
|
||||
fMatrix4 m1 = MathUtil::lookatRH(
|
||||
fVector3(THREE_ELEMENT(dEye)),
|
||||
fVector3(THREE_ELEMENT(dAt)),
|
||||
fVector3(THREE_ELEMENT(dUp)));
|
||||
|
||||
glm::mat4 gm1 = glm::lookAtRH(glm::vec3(THREE_ELEMENT(dEye)), glm::vec3(THREE_ELEMENT(dAt)), glm::vec3(THREE_ELEMENT(dUp)));
|
||||
EXPECT_EQ_4X4_T(m1, gm1);
|
||||
}
|
||||
|
||||
//lookat view matrix(random)
|
||||
{
|
||||
for (int i = 0; i < 10; i++) {
|
||||
fVector3 dEye, dAt, dUp;
|
||||
do {
|
||||
dEye[0] = _randomFloat(); dEye[1] = _randomFloat(); dEye[2] = _randomFloat();
|
||||
dAt[0] = _randomFloat(); dAt[1] = _randomFloat(); dAt[2] = _randomFloat();
|
||||
dUp[0] = _randomFloat(); dUp[1] = _randomFloat(); dUp[2] = _randomFloat();
|
||||
|
||||
} while ((dEye == dAt) || (dUp == fVector3::ZERO));
|
||||
|
||||
fMatrix4 m1 = MathUtil::lookatRH(
|
||||
fVector3(THREE_ELEMENT(dEye)),
|
||||
fVector3(THREE_ELEMENT(dAt)),
|
||||
fVector3(THREE_ELEMENT(dUp)));
|
||||
|
||||
glm::mat4 gm1 = glm::lookAtRH(glm::vec3(THREE_ELEMENT(dEye)), glm::vec3(THREE_ELEMENT(dAt)), glm::vec3(THREE_ELEMENT(dUp)));
|
||||
|
||||
EXPECT_EQ_4X4_T_APPROX(m1, gm1, std::numeric_limits<float>::epsilon() * 1000);
|
||||
}
|
||||
}
|
||||
|
||||
//perspective
|
||||
{
|
||||
float width = 640.f, height = 480.f;
|
||||
|
||||
fMatrix4 m1 = MathUtil::perspectiveFovRH(MathUtil::PI_DIV4, width / height, 0.01f, 100.f);
|
||||
glm::mat4 gm1 = glm::perspectiveRH(MathUtil::PI_DIV4, width / height, 0.01f, 100.f);
|
||||
|
||||
EXPECT_EQ_4X4_T_APPROX(m1, gm1, std::numeric_limits<float>::epsilon());
|
||||
}
|
||||
|
||||
//perspective(random)
|
||||
{
|
||||
for (int i = 0; i < 10; i++) {
|
||||
float fov = MathUtil::rangeRandom(0.1f, MathUtil::PI);
|
||||
float aspect = MathUtil::rangeRandom(0.1f, 100.f);
|
||||
float zNear = MathUtil::rangeRandom(0.00001f, 0.01f);
|
||||
float zFar = MathUtil::rangeRandom(100.f, 10000.f);
|
||||
|
||||
fMatrix4 m1 = MathUtil::perspectiveFovRH(fov, aspect, zNear, zFar);
|
||||
glm::mat4 gm1 = glm::perspectiveRH(fov, aspect, zNear, zFar);
|
||||
|
||||
EXPECT_EQ_4X4_T_APPROX(m1, gm1, std::numeric_limits<float>::epsilon() * 100);
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user