From 6441b57e4a583ef6e244b91774bc49bc6d0dc326 Mon Sep 17 00:00:00 2001 From: Deepak Rangarajan Date: Sat, 16 Apr 2022 13:40:55 -0400 Subject: [PATCH] Add a unit test for 2d rotation --- src/csg/tests/levelset/extrude.t.cpp | 35 ++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) diff --git a/src/csg/tests/levelset/extrude.t.cpp b/src/csg/tests/levelset/extrude.t.cpp index f057d78..b53656d 100644 --- a/src/csg/tests/levelset/extrude.t.cpp +++ b/src/csg/tests/levelset/extrude.t.cpp @@ -354,4 +354,39 @@ TEST_CASE("linear with twist", "[Levelset Extrude]") { } } +TEST_CASE("linear with mulmatrix rotation", "[Levelset Extrude]") { + double height = 1, size = 2; + csg::LinearExtrude my_lin_ext; + my_lin_ext.height = height; + my_lin_ext.center = false; + my_lin_ext.scale = {1, 1}; + my_lin_ext.group = csg::Union2D(); + + csg::Square my_sq; + my_sq.size = {2, 2}; + my_sq.center = true; + + // 30 degree rotation + auto my_mat = csg::Mulmatrix2D({{0.866025, -0.5}}, {{0.5, 0.866025}}); + + my_mat.translation = {0, 0}; + my_mat.group.objs.push_back(my_sq); + my_lin_ext.group.objs.push_back(my_mat); + + auto my_tree = std::make_shared(); + my_tree->top.objs.push_back(my_lin_ext); + csg::CsgIF my_levelset(my_tree); + + SECTION("Outside") { + CHECK(0 < my_levelset(-1.2 * 0.5 * height, 0, 0.5 * height)); + CHECK(0 < my_levelset(0.5 * height, 0.25 * height, 0.5 * height)); + } + + SECTION("Inside") { + CHECK(0 < my_levelset(0, 0, 0.5 * height)); + CHECK(0 < my_levelset(-1.1 * 0.5 * height, 0, 0.5 * height)); + CHECK(0 < my_levelset(0.5 * height, 0.5 * height, 0.5 * height)); + } +} + } // namespace -- GitLab