DGtal 1.4.0
Loading...
Searching...
No Matches
testArithDSS3d.cpp
Go to the documentation of this file.
1
37#include <iostream>
38#include <iterator>
39#include <cstdio>
40#include <cmath>
41#include <fstream>
42#include <vector>
43
44#include "DGtal/base/Common.h"
45#include "DGtal/base/Exceptions.h"
46#include "DGtal/kernel/SpaceND.h"
47#include "DGtal/kernel/domains/HyperRectDomain.h"
48#include "DGtal/geometry/curves/StandardDSS6Computer.h"
49#include "DGtal/geometry/curves/GreedySegmentation.h"
50
51using namespace DGtal;
52using namespace std;
53
54
56// Functions for testing class StandardDSS6Computer.
58
63{
64
66 typedef std::vector<Point>::iterator Iterator;
68
69 std::vector<Point> sequence;
70 sequence.push_back(Point(0,0,0));
71 sequence.push_back(Point(1,0,0));
72 sequence.push_back(Point(2,0,0));
73 sequence.push_back(Point(2,1,0));
74 sequence.push_back(Point(2,1,1));
75 sequence.push_back(Point(3,1,1));
76 sequence.push_back(Point(4,1,1));
77 sequence.push_back(Point(4,2,1));
78 sequence.push_back(Point(4,2,2));
79 sequence.push_back(Point(5,2,2));
80 sequence.push_back(Point(6,2,2));
81 sequence.push_back(Point(6,3,2));
82 sequence.push_back(Point(6,3,3));
83 sequence.push_back(Point(6,4,3));
84 sequence.push_back(Point(6,4,4));
85 sequence.push_back(Point(6,5,4));
86
87 // Adding step
88 trace.beginBlock("Add points while it is possible and display the result");
89
90 SegmentComputer algo;
91 Iterator i = sequence.begin();
92 algo.init(i);
93 trace.info() << "init with " << (*i) << std::endl;
94
95 while ( (algo.end() != sequence.end())
96 && algo.extendFront()) {
97 trace.info() << "extended with " << (*(--algo.end())) << std::endl;
98 }
99
100
101 trace.info() << algo << " " << algo.isValid() << std::endl;
102
103 trace.endBlock();
104
105 return ( algo.isValid() && (algo.end() == (sequence.begin()+13)) );
106}
107
108
115{
116
118 typedef std::vector<Point>::iterator Iterator;
120 typedef GreedySegmentation<SegmentComputer> Decomposition;
121
122 std::vector<Point> sequence;
123 sequence.push_back(Point(0,0,0));
124 sequence.push_back(Point(1,0,0));
125 sequence.push_back(Point(2,0,0));
126 sequence.push_back(Point(2,1,0));
127 sequence.push_back(Point(2,1,1));
128 sequence.push_back(Point(3,1,1));
129 sequence.push_back(Point(4,1,1));
130 sequence.push_back(Point(4,2,1));
131 sequence.push_back(Point(4,2,2));
132 sequence.push_back(Point(5,2,2));
133 sequence.push_back(Point(6,2,2));
134 sequence.push_back(Point(6,3,2));
135 sequence.push_back(Point(6,3,3));
136 sequence.push_back(Point(6,4,3));
137 sequence.push_back(Point(6,4,4));
138 sequence.push_back(Point(6,5,4));
139
140 //Segmentation
141 trace.beginBlock("Segmentation test");
142
143 SegmentComputer algo;
144 Decomposition theDecomposition(sequence.begin(), sequence.end(), algo);
145
146 unsigned int c = 0;
147 Decomposition::SegmentComputerIterator i = theDecomposition.begin();
148 for ( ; i != theDecomposition.end(); ++i) {
149 SegmentComputer currentSegmentComputer(*i);
150 trace.info() << currentSegmentComputer << std::endl; //standard output
151 c++;
152 }
153
154 trace.endBlock();
155 return (c==2);
156}
157
158
160{
162 typedef std::vector<Point>::const_iterator ConstIterator;
164
165 trace.beginBlock("Concept checking");
166
167 BOOST_CONCEPT_ASSERT(( concepts::CForwardSegmentComputer<ArithDSS3d> ));
168
169 trace.endBlock();
170
171}
172
173
174
175int main(int argc, char **argv)
176{
177 trace.beginBlock ( "Testing class ArithmeticalDSSComputer" );
178
180
181 trace.info() << "Args:";
182 for ( int i = 0; i < argc; ++i )
183 trace.info() << " " << argv[ i ];
184 trace.info() << endl;
185
186 bool res = testDSSreco()
188
189 ;
190 trace.emphase() << ( res ? "Passed." : "Error." ) << endl;
191 trace.endBlock();
192
193 return res ? 0 : 1;
194
195}
Aim: This class is a wrapper around ArithmeticalDSS that is devoted to the dynamic recognition of dig...
ConstIterator end() const
void init(const ConstIterator &it)
Aim: Computes the greedy segmentation of a range given by a pair of ConstIterators....
Aim: Implements basic operations that will be used in Point and Vector classes.
Aim: Dynamic recognition of a 3d-digital straight segment (DSS)
void beginBlock(const std::string &keyword="")
std::ostream & emphase()
std::ostream & info()
double endBlock()
MyDigitalSurface::ConstIterator ConstIterator
DGtal is the top-level namespace which contains all DGtal functions and types.
Trace trace
Definition Common.h:153
STL namespace.
Aim: Defines the concept describing a forward segment computer. Like any model of CIncrementalSegment...
void testStandardDSS6ComputerConceptChecking()
bool testDSSreco()
bool testSegmentation()
ArithmeticalDSSComputer< std::vector< Z2i::Point >::const_iterator, int, 4 > SegmentComputer
int main()
Definition testBits.cpp:56
MyPointD Point