예제 #1
0
    TEST_CASE_F(Triangulate_GivenSelfCrossingTriangle_ReturnsFalse, Fixture)
    {
        Polygon3 polygon;
        polygon.push_back(Vector3Type(0.0, 0.0, 1.0));
        polygon.push_back(Vector3Type(3.0, 2.0, 2.0));
        polygon.push_back(Vector3Type(3.0, 3.0, 3.0));
        polygon.push_back(Vector3Type(1.0, 0.0, 0.0));

        TriangulatorType triangulator;
        TriangulatorType::IndexArray triangles;

        const bool success = triangulator.triangulate(polygon, triangles);

        EXPECT_FALSE(success);
    }
예제 #2
0
    TEST_CASE_F(Triangulate_GivenQuadWithCoincidentVertices_KeepDegenerateTrianglesIsTrue_ReturnsTwoTriangles, Fixture)
    {
        Polygon3 polygon;
        polygon.push_back(Vector3Type(0.0, 0.0, 0.0));
        polygon.push_back(Vector3Type(0.0, 1.0, 0.0));
        polygon.push_back(Vector3Type(1.0, 1.0, 0.0));
        polygon.push_back(Vector3Type(0.0, 0.0, 0.0));

        TriangulatorType triangulator(TriangulatorType::KeepDegenerateTriangles);
        TriangulatorType::IndexArray triangles;

        const bool success = triangulator.triangulate(polygon, triangles);

        ASSERT_TRUE(success);
        EXPECT_EQ(2 * 3, triangles.size());
    }
예제 #3
0
    TEST_CASE_F(Triangulate_GivenComplexConcavePolygon_ReturnsTrue, Fixture)
    {
        Polygon3 polygon;
        polygon.push_back(Vector3Type(0.137498, -1.09128, 0.0));
        polygon.push_back(Vector3Type(0.124257, -1.10419, 0.0));
        polygon.push_back(Vector3Type(0.124257, -1.31878, 0.0));
        polygon.push_back(Vector3Type(0.240957, -1.30956, 0.0));
        polygon.push_back(Vector3Type(0.240957, 1.3116, 0.0));
        polygon.push_back(Vector3Type(0.124256, 1.30447, 0.0));
        polygon.push_back(Vector3Type(0.124256, 1.08131, 0.0));
        polygon.push_back(Vector3Type(0.137498, 1.0684, 0.0));
        polygon.push_back(Vector3Type(0.160558, 1.02428, 0.0));
        polygon.push_back(Vector3Type(0.168503, 0.975371, 0.0));
        polygon.push_back(Vector3Type(0.168503, -0.998254, 0.0));
        polygon.push_back(Vector3Type(0.160558, -1.04716, 0.0));

        TriangulatorType triangulator;
        TriangulatorType::IndexArray triangles;

        const bool success = triangulator.triangulate(polygon, triangles);

        EXPECT_TRUE(success);
    }