File failed to load: https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.3/config/TeX-MML-AM_CHTML/MathJax.js
DGtal 2.0.0
khalimskySpaceScanner.cpp File Reference
#include <iostream>
#include "DGtal/base/Common.h"
#include "DGtal/topology/KhalimskySpaceND.h"
#include "DGtal/helpers/StdDefs.h"
#include "DGtal/io/Color.h"
#include "DGtal/io/boards/Board2D.h"
Include dependency graph for khalimskySpaceScanner.cpp:

Go to the source code of this file.

Functions

int main (int argc, char **argv)

Detailed Description

This program is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with this program. If not, see http://www.gnu.org/licenses/.

Author
Bertrand Kerautret (kerau.nosp@m.tre@.nosp@m.loria.nosp@m..fr ) LORIA (CNRS, UMR 7503), University of Nancy, France
Date
2011/04/30

An example file named KhalimskySpaceScanner.

This file is part of the DGtal library.

Definition in file khalimskySpaceScanner.cpp.

Function Documentation

◆ main()

int main ( int argc,
char ** argv )

Definition at line 62 of file khalimskySpaceScanner.cpp.

63{
64 trace.beginBlock ( "Example KhalimskySpaceScanner" );
65 trace.info() << "Args:";
66 for ( int i = 0; i < argc; ++i )
67 trace.info() << " " << argv[ i ];
68 trace.info() << endl;
69
70
71 Board2D boardScan1; // for 2D display
72 Board2D boardScan2; // for 2D display
73
74
76 Z2i::Point plow(0,0);
77 Z2i::Point pup(3,2);
78
79 Z2i::Domain dom (plow, pup);
80 boardScan1 << SetMode( dom.className(), "Paving" )
81 << dom;
82 boardScan2 << SetMode( dom.className(), "Paving" )
83 << dom;
84
85 K.init( dom.lowerBound(),dom.upperBound(), true );
86
87
88
89 Z2i::KSpace::Cell q = K.uSpel(plow);
90 Z2i::KSpace::Cell p = K.uSpel(plow);
91
92
93 Z2i::Vector shift;
94 Z2i::KSpace::Cell prec=p;
95 bool first=true;
96 // Simple way to scan Khalimsky space
97 do
98 {
99 boardScan1 << p;
100 if(first){
101 first=false;
102 prec=p;
103 continue;
104 }
105 // Drawing the scan arrows
106 boardScan1.setPenColor( Color( 30, 30, 200 ));
107 shift = K.uCoords(p)-K.uCoords(prec);
108 Display2DFactory::draw(boardScan1, shift, K.uCoords(prec));
109 prec=p;
110 }
111 while ( K.uNext( p, K.uFirst(p), K.uLast(p) ) );
112
113
114
115
116 // Other way to scan Khalimsky space by controlling axis order
117 Z2i::Vector shiftq;
118 Z2i::KSpace::Cell precq = q;
119 bool firstq = true;
120 using KPS = Z2i::KPreSpace;
121 for ( KPS::Cell qq = K.uGetMax(q, 0); K.uIsInside(qq, 0); qq = KPS::uGetDecr(qq, 0) )
122 {
123 for ( KPS::uSetKCoord( qq, K.uFirst( qq, 1 ), 1 ); K.uIsInside(qq, 1); qq = KPS::uGetIncr(qq, 1) )
124 {
125 q = K.uCell( qq );
126 boardScan2 << q;
127 if(firstq){
128 firstq = false;
129 precq = q;
130 continue;
131 }
132 // Drawing the scan arrows
133 shiftq = K.uCoords(q) - K.uCoords(precq);
134 boardScan2.setPenColor( Color( 30, 30, 200 ));
135 Display2DFactory::draw(boardScan2, shiftq, K.uCoords(precq));
136 precq = q;
137 }
138 }
139
140 boardScan1.saveSVG("khalimskySpaceScanner1.svg");
141 boardScan1.saveFIG("khalimskySpaceScanner1.fig");
142
143 boardScan2.saveSVG("khalimskySpaceScanner2.svg");
144 boardScan2.saveFIG("khalimskySpaceScanner2.fig");
145
146 return 0;
147
148}
Aim: This class specializes a 'Board' class so as to display DGtal objects more naturally (with <<)....
Definition Board2D.h:71
Structure representing an RGB triple with alpha component.
Definition Color.h:77
KhalimskyCell< dim, Integer > Cell
Board & setPenColor(const DGtal::Color &color)
Definition Board.cpp:297
void saveFIG(const char *filename, PageSize size=Board::BoundingBox, double margin=10.0, bool includeFIGHeader=true) const
Definition Board.cpp:906
void saveSVG(const char *filename, PageSize size=Board::BoundingBox, double margin=10.0) const
Definition Board.cpp:1011
KhalimskyPreSpaceND< 2, Integer > KPreSpace
Definition StdDefs.h:83
KhalimskySpaceND< 2, Integer > KSpace
Definition StdDefs.h:77
Space::Vector Vector
Definition StdDefs.h:96
Space::Point Point
Definition StdDefs.h:95
HyperRectDomain< Space > Domain
Definition StdDefs.h:99
Trace trace
static void draw(DGtal::Board2D &board, const DGtal::DiscreteExteriorCalculus< dimEmbedded, dimAmbient, TLinearAlgebraBackend, TInteger > &calculus)
Modifier class in a Board2D stream. Useful to choose your own mode for a given class....
Definition Board2D.h:247
KSpace K

References DGtal::HyperRectDomain< TSpace >::className(), DGtal::Display2DFactory::draw(), K, DGtal::HyperRectDomain< TSpace >::lowerBound(), LibBoard::Board::saveFIG(), LibBoard::Board::saveSVG(), LibBoard::Board::setPenColor(), DGtal::trace, and DGtal::HyperRectDomain< TSpace >::upperBound().