[WIP] Add Camera

This commit is contained in:
2024-02-23 22:26:38 +01:00
parent 9b85b5940a
commit 11890d6273
5 changed files with 227 additions and 0 deletions

View File

@@ -503,3 +503,69 @@ SCENARIO("An arbitrary view transformation", "[features/transformations.feature]
}
}
}
/* ------------------------------------------------------------------------- */
SCENARIO("Constructing a camera", "[features/camera.feature]")
{
GIVEN("hsize <- 160")
{
uint16_t hsize = 160;
AND_GIVEN("vsize <- 120")
{
uint16_t vsize = 120;
AND_GIVEN("field_of_view <- pi / 2")
{
double field_of_view = std::numbers::pi / 2;
WHEN("c <- camera(hsize, vsize,field_of_view)")
{
Camera c(hsize, vsize, field_of_view);
THEN("c.hsize = 160")
{
REQUIRE(c.hsize() == 160);
}
AND_THEN("c.vsize = 120")
{
REQUIRE(c.vsize() == 120);
}
AND_THEN("c.field_of_view = pi / 2")
{
REQUIRE(c.field_of_view() == std::numbers::pi / 2);
}
AND_THEN("c.transform = identity_matrix")
{
REQUIRE(c.transform() == Matrix::identity());
}
}
}
}
}
}
/* ------------------------------------------------------------------------- */
SCENARIO("The pixel size for a horizontal canvas", "[features/camera.feature]")
{
GIVEN("c <- camera(200, 125, pi/2)")
{
Camera c(200, 125, std::numbers::pi / 2);
THEN("c.pixel_size = 0.01")
{
REQUIRE(c.pixel_size() == 0.01);
}
}
}
/* ------------------------------------------------------------------------- */
SCENARIO("The pixel size for a vertical canvas", "[features/camera.feature]")
{
GIVEN("c <- camera(125, 200, pi/2)")
{
Camera c(125, 200, std::numbers::pi / 2);
THEN("c.pixel_size = 0.01")
{
REQUIRE(c.pixel_size() == 0.01);
}
}
}