diff --git a/Tests/MeshTests.swift b/Tests/MeshTests.swift index 820a6d48..4229c566 100644 --- a/Tests/MeshTests.swift +++ b/Tests/MeshTests.swift @@ -357,4 +357,28 @@ class MeshTests: XCTestCase { XCTAssertFalse(bsp.containsPoint(point)) } } + + // MARK: Reflection + + func testQuadReflectionAlongPlane() { + + let quad = Polygon(unchecked: [ + Vertex(Vector(-0.5, 1.0, 0.5), .unitY, Vector(0.0, 1.0), .black), + Vertex(Vector(0.5, 1.0, 0.5), .unitY, Vector(1.0, 1.0), .black), + Vertex(Vector(0.5, 1.0, -0.5), .unitY, Vector(1.0, 0.0), .white), + Vertex(Vector(-0.5, 1.0, -0.5), .unitY, Vector(0.0, 0.0), .white), + ]) + + let expected = Polygon(unchecked: [ + Vertex(Vector(-0.5, -1.0, -0.5), -.unitY, Vector(0.0, 0.0), .white), + Vertex(Vector(0.5, -1.0, -0.5), -.unitY, Vector(1.0, 0.0), .white), + Vertex(Vector(0.5, -1.0, 0.5), -.unitY, Vector(1.0, 1.0), .black), + Vertex(Vector(-0.5, -1.0, 0.5), -.unitY, Vector(0.0, 1.0), .black), + ]) + + let reflection = quad.reflect(along: .xz) + + XCTAssertEqual(reflection.plane.normal, -.unitY) + XCTAssertEqual(reflection.vertices, expected.vertices) + } }