improved mesh class

This commit is contained in:
2025-11-29 16:28:06 +03:00
parent b98093b244
commit ba267cbcb8
10 changed files with 120 additions and 63 deletions

View File

@@ -7,20 +7,32 @@
TEST(UnitTestColider, CheckToWorld)
{
omath::source_engine::Mesh mesh = {std::vector<omath::Vector3<float>>{{1.f, 1.f, 1.f}, {-1.f, -1.f, -1.f}}, {}};
omath::source_engine::Mesh mesh = {
std::vector<omath::primitives::Vertex>{
{ { 1.f, 1.f, 1.f }, {}, {} },
{ {-1.f, -1.f, -1.f }, {}, {} }
},
{}
};
mesh.set_origin({0, 2, 0});
const omath::source_engine::MeshCollider collider(mesh);
const auto vertex = collider.find_abs_furthest_vertex({1.f, 0.f, 0.f});
const auto vertex = collider.find_abs_furthest_vertex({1.f, 0.f, 0.f}).position;
EXPECT_EQ(vertex, omath::Vector3<float>(1.f, 3.f, 1.f));
}
TEST(UnitTestColider, FindFurthestVertex)
{
const omath::source_engine::Mesh mesh = {{{1.f, 1.f, 1.f}, {-1.f, -1.f, -1.f}}, {}};
const omath::source_engine::Mesh mesh = {
{
{ { 1.f, 1.f, 1.f }, {}, {} }, // position, normal, uv
{ {-1.f, -1.f, -1.f }, {}, {} }
},
{}
};
const omath::source_engine::MeshCollider collider(mesh);
const auto vertex = collider.find_furthest_vertex({1.f, 0.f, 0.f});
const auto vertex = collider.find_furthest_vertex({1.f, 0.f, 0.f}).position;
EXPECT_EQ(vertex, omath::Vector3<float>(1.f, 1.f, 1.f));
}

View File

@@ -14,8 +14,16 @@ using EPA = omath::collision::Epa<Collider>;
TEST(UnitTestEpa, TestCollisionTrue)
{
// Unit cube [-1,1]^3
std::vector<omath::Vector3<float>> vbo = {{-1, -1, -1}, {-1, -1, 1}, {-1, 1, -1}, {-1, 1, 1},
{1, 1, 1}, {1, 1, -1}, {1, -1, 1}, {1, -1, -1}};
std::vector<omath::primitives::Vertex> vbo = {
{ {-1.f, -1.f, -1.f}, {}, {} },
{ {-1.f, -1.f, 1.f}, {}, {} },
{ {-1.f, 1.f, -1.f}, {}, {} },
{ {-1.f, 1.f, 1.f}, {}, {} },
{ { 1.f, 1.f, 1.f}, {}, {} },
{ { 1.f, 1.f, -1.f}, {}, {} },
{ { 1.f, -1.f, 1.f}, {}, {} },
{ { 1.f, -1.f, -1.f}, {}, {} }
};
std::vector<omath::Vector3<std::size_t>> vao; // not needed
Mesh a(vbo, vao, {1, 1, 1});
@@ -80,8 +88,16 @@ TEST(UnitTestEpa, TestCollisionTrue)
}
TEST(UnitTestEpa, TestCollisionTrue2)
{
std::vector<omath::Vector3<float>> vbo = {{-1, -1, -1}, {-1, -1, 1}, {-1, 1, -1}, {-1, 1, 1},
{1, 1, 1}, {1, 1, -1}, {1, -1, 1}, {1, -1, -1}};
std::vector<omath::primitives::Vertex> vbo = {
{ { -1.f, -1.f, -1.f }, {}, {} },
{ { -1.f, -1.f, 1.f }, {}, {} },
{ { -1.f, 1.f, -1.f }, {}, {} },
{ { -1.f, 1.f, 1.f }, {}, {} },
{ { 1.f, 1.f, 1.f }, {}, {} },
{ { 1.f, 1.f, -1.f }, {}, {} },
{ { 1.f, -1.f, 1.f }, {}, {} },
{ { 1.f, -1.f, -1.f }, {}, {} }
};
std::vector<omath::Vector3<std::size_t>> vao; // not needed
Mesh a(vbo, vao, {1, 1, 1});

View File

@@ -8,15 +8,18 @@
namespace
{
const omath::source_engine::Mesh mesh = {
{{-1.f, -1.f, -1.f},
{-1.f, -1.f, 1.f},
{-1.f, 1.f, -1.f},
{-1.f, 1.f, 1.f},
{1.f, 1.f, 1.f},
{1.f, 1.f, -1.f},
{1.f, -1.f, 1.f},
{1.f, -1.f, -1.f}},
{}};
{
{ {-1.f, -1.f, -1.f}, {}, {} },
{ {-1.f, -1.f, 1.f}, {}, {} },
{ {-1.f, 1.f, -1.f}, {}, {} },
{ {-1.f, 1.f, 1.f}, {}, {} },
{ { 1.f, 1.f, 1.f}, {}, {} },
{ { 1.f, 1.f, -1.f}, {}, {} },
{ { 1.f, -1.f, 1.f}, {}, {} },
{ { 1.f, -1.f, -1.f}, {}, {} }
},
{}
};
}
TEST(UnitTestGjk, TestCollisionTrue)
{