Commit 6441b57e authored by Deepak Rangarajan's avatar Deepak Rangarajan
Browse files

Add a unit test for 2d rotation

parent d92f565b
Loading
Loading
Loading
Loading
Loading
+35 −0
Original line number Diff line number Diff line
@@ -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<csg::Tree>();
  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