DGtal 1.4.0
Loading...
Searching...
No Matches
testWindingNumbersShape.cpp
Go to the documentation of this file.
1
31#include <iostream>
32#include "DGtal/base/Common.h"
33#include "ConfigTest.h"
34#include "DGtalCatch.h"
35#include "DGtal/helpers/StdDefs.h"
36
37#include <DGtal/shapes/WindingNumbersShape.h>
38#include <DGtal/shapes/GaussDigitizer.h>
39
41
42using namespace std;
43using namespace DGtal;
44using namespace Z3i;
45
47// Functions for testing class WindingNumbersShape.
49
50TEST_CASE( "Testing WindingNumbersShape" )
51{
52 using WNShape = WindingNumbersShape<Z3i::Space>;
53
54 SECTION("Checking concept")
55 {
57 }
58
59 SECTION("Simple testof the API")
60 {
61 Eigen::MatrixXd points(4,3);
62 points << 0,0,0,
63 0,1,0,
64 1,0,0,
65 1,1,1;
66 Eigen::MatrixXd normals(4,3);
67 normals << 0,0,-1,
68 0,0,-1,
69 0,0,-1,
70 0,0,1;
71
72 WNShape wnshape(points,normals);
73
74 RealPoint p(-2.0,-2.0,-2.0);
75 DGtal::Orientation ori = wnshape.orientation(p);
76 REQUIRE( ori == DGtal::OUTSIDE);
77
78 p = RealPoint(2.0,2.0,2.0);
79 ori = wnshape.orientation(p);
80 REQUIRE( ori == DGtal::OUTSIDE);
81
82 RealPoint q= RealPoint(.2,.2,.2);
83 auto ori2 = wnshape.orientation(q);
84 REQUIRE( ori2 == DGtal::INSIDE);
85 }
86
87 SECTION("Tesing with the GaussDigitizer")
88 {
89 Eigen::MatrixXd points(4,3);
90 points << 0,0,0,
91 0,1,0,
92 1,0,0,
93 1,1,1;
94 Eigen::MatrixXd normals(4,3);
95 normals << 0,0,-1,
96 0,0,-1,
97 0,0,-1,
98 0,0,1;
99
100 WNShape wnshape(points,normals);
102 gauss.attach(wnshape);
103 gauss.init(Z3i::RealPoint(0,0,0),Z3i::RealPoint(1.5,1.5,1.5), 0.5);
104 auto cpt=0;
105 for(auto p: gauss.getDomain())
106 if (gauss.orientation(p) == DGtal::INSIDE)
107 ++cpt;
108 REQUIRE( cpt == 8);
109 }
110};
111
Aim: A class for computing the Gauss digitization of some Euclidean shape, i.e. its intersection with...
Orientation orientation(const Point &p) const
void attach(ConstAlias< EuclideanShape > shape)
void init(const RealPoint &xLow, const RealPoint &xUp, typename RealVector::Component gridStep)
Domain getDomain() const
Aim: Implements basic operations that will be used in Point and Vector classes.
Space::RealPoint RealPoint
Definition StdDefs.h:170
DGtal is the top-level namespace which contains all DGtal functions and types.
Orientation
Definition Common.h:141
@ INSIDE
Definition Common.h:141
@ OUTSIDE
Definition Common.h:141
STL namespace.
Aim: model of a CEuclideanOrientedShape from an implicit function from an oriented point cloud....
Aim: characterizes models of digital oriented shapes. For example, models should provide an orientati...
SECTION("Testing constant forward iterators")
REQUIRE(domain.isInside(aPoint))
TEST_CASE("Testing WindingNumbersShape")