[go: up one dir, main page]

File: Prism.cpp

package info (click to toggle)
libformfactor 0.3.1-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 1,288 kB
  • sloc: cpp: 17,289; python: 382; makefile: 15
file content (34 lines) | stat: -rw-r--r-- 1,267 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
#include "ff/Prism.h"
#include "ff/Face.h"
#include "ff/Polyhedron.h"
#include "ff/Topology.h"
#include "test/3rdparty/catch.hpp"

#define CHECK_NEAR(a, b, eps) CHECK(fabs((a)-(b)) < eps);

TEST_CASE("asPolyhedron.prism", "")
{
    ff::Prism prism(false, 1, {{-0.5, -0.5, 0}, {-0.5, 0.5, 0}, {0.5, 0.5, 0}, {0.5, -0.5, 0}});
    ff::Polyhedron* polyhedron = prism.asPolyhedron();

    CHECK(polyhedron->faces().size() == 6);

    CHECK_NEAR(polyhedron->vertices()[4].z(), 0.5, 1E-13);
    CHECK_NEAR(polyhedron->vertices()[5].z(), 0.5, 1E-13);
    CHECK_NEAR(polyhedron->vertices()[6].z(), 0.5, 1E-13);
    CHECK_NEAR(polyhedron->vertices()[7].z(), 0.5, 1E-13);

    CHECK(polyhedron->faces()[0].normal() == R3(0, 0, -1));
    CHECK(polyhedron->faces()[1].normal() == R3(-1, 0, 0));
    CHECK(polyhedron->faces()[2].normal() == R3(0, 1, 0));
    CHECK(polyhedron->faces()[3].normal() == R3(1, 0, 0));
    CHECK(polyhedron->faces()[4].normal() == R3(0, -1, 0));
    CHECK(polyhedron->faces()[5].normal() == R3(0, 0, 1));
}

TEST_CASE("asPolyhedron.symmetricPrism", "")
{
    ff::Prism prism(true, 1, {{-0.5, -0.5, 0}, {-0.5, 0.5, 0}, {0.5, 0.5, 0}, {0.5, -0.5, 0}});
    ff::Polyhedron* polyhedron = prism.asPolyhedron();
    CHECK(polyhedron->faces().size() == 3);
}