You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
52 lines
1.5 KiB
52 lines
1.5 KiB
#include <medusa/bits/domains/BoxShape.hpp>
|
|
#include <medusa/bits/domains/BallShape.hpp>
|
|
#include "medusa/bits/domains/TranslatedShape.hpp"
|
|
|
|
#include "gtest/gtest.h"
|
|
|
|
namespace mm {
|
|
|
|
TEST(Domains, TranslatedContains) {
|
|
BoxShape<Vec2d> box2d({1, 3}, {1.2, 3.5});
|
|
auto t = box2d.translate({-1.1, -3.1});
|
|
|
|
EXPECT_TRUE(t.contains({0, 0}));
|
|
EXPECT_TRUE(t.contains({0.1, 0.4}));
|
|
EXPECT_FALSE(t.contains({1.1, 3.1}));
|
|
}
|
|
|
|
TEST(Domains, TranslatedBbox) {
|
|
BoxShape<Vec2d> box2d({-1.1, -1.1}, {1.1, 1.1});
|
|
Vec2d a = {-1, -2};
|
|
auto t = box2d.translate(a);
|
|
auto bbox = t.bbox();
|
|
EXPECT_LT((box2d.beg()+a - bbox.first).norm(), 1e-15);
|
|
EXPECT_LT((box2d.end()+a - bbox.second).norm(), 1e-15);
|
|
}
|
|
|
|
TEST(Domains, TranslatedShapeCollapse) {
|
|
BoxShape<Vec2d> box2d({1, 3}, {1.2, 3.5});
|
|
auto t = box2d.translate({1, 1}).translate({2, 2});
|
|
EXPECT_NE(nullptr, dynamic_cast<const BoxShape<Vec2d>*>(&t.shape()));
|
|
EXPECT_EQ(Vec2d(3, 3), t.translation());
|
|
}
|
|
|
|
TEST(Domains, TranslatedDiscretize) {
|
|
/// [TranslatedShape usage example]
|
|
BallShape<Vec3d> ball(0, 1);
|
|
auto d = ball.discretizeBoundaryWithStep(0.1).translate(1.0);
|
|
|
|
auto ball2 = ball.translate(1.0);
|
|
auto d2 = ball2.discretizeBoundaryWithStep(0.1);
|
|
std::cout << ball2 << std::endl;
|
|
/// [TranslatedShape usage example]
|
|
|
|
EXPECT_EQ(d2.positions(), d.positions());
|
|
EXPECT_EQ(d2.types(), d.types());
|
|
EXPECT_EQ(d2.normals(), d.normals());
|
|
|
|
d.assert_is_valid();
|
|
d2.assert_is_valid();
|
|
}
|
|
|
|
} // namespace mm
|
|
|