66 using namespace DGtal;
77 for (
Image::Iterator it = image.begin(), itend = image.end();it != itend; ++it)
81 image.setValue(
Point(16,2), 0);
82 image.setValue(
Point(2,11), 0);
83 image.setValue(
Point(30,15), 0);
86 trace.
beginBlock (
"Example toricdomainvolumetric" );
91 Display2DFactory::drawImage<Gray>(board, image, (
unsigned int)0, (
unsigned int)129);
92 board.
saveSVG(
"toric-inputShape.svg");
97 PointPredicate predicate(image,0);
105 DTL2 dtL2(image.domain(), predicate, l2Metric);
107 DTL2Toric dtL2Toric(image.domain(), predicate, l2Metric, {{true, true}} );
115 DTL2ToricX dtL2ToricX( image.domain(), predicate, l2Metric, {{true, false}} );
117 DTL2ToricY dtL2ToricY( image.domain(), predicate, l2Metric, {{false, true}} );
121 const DTL2::Value maxv2 = * (boost::first_max_element(dtL2.constRange().begin(), dtL2.constRange().end()));
122 const DTL2Toric::Value maxvtoric = * (boost::first_max_element(dtL2Toric.constRange().begin(), dtL2Toric.constRange().end()));
123 const DTL2ToricX::Value maxvtoricX = * (boost::first_max_element(dtL2ToricX.constRange().begin(), dtL2ToricX.constRange().end()));
124 const DTL2ToricY::Value maxvtoricY = * (boost::first_max_element(dtL2ToricY.constRange().begin(), dtL2ToricY.constRange().end()));
127 const auto maxvall = std::max( { maxv2, maxvtoric, maxvtoricX, maxvtoricY } );
136 Display2DFactory::drawImage<HueTwice>(board, dtL2, 0.0, maxvall + 1);
137 board.saveSVG (
"toric-example-DT-L2.svg" );
139 trace.
warning() <<
"Full toric maxValue= " << maxvtoric << endl;
141 Display2DFactory::drawImage<HueTwice>(board, dtL2Toric, 0.0, maxvall + 1);
142 board.saveSVG (
"toric-example-DT-L2-toric.svg" );
144 trace.
warning() <<
"1th dimension periodic maxValue= " << maxvtoricX << endl;
146 Display2DFactory::drawImage<HueTwice>(board, dtL2ToricX, 0.0, maxvall + 1);
147 board.saveSVG (
"toric-example-DT-L2-toricX.svg" );
149 trace.
warning() <<
"2nd dimension periodic maxValue= " << maxvtoricY << endl;
151 Display2DFactory::drawImage<HueTwice>(board, dtL2ToricY, 0.0, maxvall + 1);
152 board.saveSVG (
"toric-example-DT-L2-toricY.svg" );
157 ticked.addRegularTicks(3, 0.5);
159 ticked.colormap()->addColor( Color::Red );
160 ticked.colormap()->addColor( Color::Black );
162 for (
auto it = dtL2.domain().begin(), itend = dtL2.domain().end();it != itend; ++it)
167 board.saveSVG(
"toric-example-DT-L2-ticked.svg");
170 for (
auto it = dtL2Toric.domain().begin(), itend = dtL2Toric.domain().end();it != itend; ++it)
175 board.saveSVG(
"toric-example-DT-L2-ticked-toric.svg");
178 for (
auto it = dtL2ToricX.domain().begin(), itend = dtL2ToricX.domain().end();it != itend; ++it)
183 board.saveSVG(
"toric-example-DT-L2-ticked-toricX.svg");
186 for (
auto it = dtL2ToricY.domain().begin(), itend = dtL2ToricY.domain().end();it != itend; ++it)
191 board.saveSVG(
"toric-example-DT-L2-ticked-toricY.svg");
195 board << dtL2.domain();
196 for (
auto it = dtL2.domain().begin(), itend = dtL2.domain().end();it != itend; ++it)
197 if ( dtL2.getVoronoiSite(*it) != *it )
198 Display2DFactory::draw(board,dtL2.getVoronoiSite(*it) - (*it), (*it));
199 board.saveSVG(
"toric-example-Voro-L2.svg");
202 board << dtL2Toric.domain();
203 for (
auto it = dtL2Toric.domain().begin(), itend = dtL2Toric.domain().end();it != itend; ++it)
204 if ( dtL2Toric.getVoronoiSite(*it) != *it )
205 Display2DFactory::draw(board, dtL2Toric.getVoronoiSite(*it) - (*it), (*it));
206 board.saveSVG(
"toric-example-Voro-L2-toric.svg");
209 board << dtL2Toric.domain();
210 for (
auto it = dtL2Toric.domain().begin(), itend = dtL2Toric.domain().end();it != itend; ++it)
211 if ( dtL2Toric.getVoronoiSite(*it) != *it )
212 Display2DFactory::draw(board, dtL2Toric.projectPoint(dtL2Toric.getVoronoiSite(*it)) - (*it), (*it));
213 board.saveSVG(
"toric-example-Voro-L2-toric-projected.svg");
216 board << dtL2ToricX.domain();
217 for (
auto it = dtL2ToricX.domain().begin(), itend = dtL2ToricX.domain().end();it != itend; ++it)
218 if ( dtL2ToricX.getVoronoiSite(*it) != *it )
219 Display2DFactory::draw(board, dtL2ToricX.getVoronoiSite(*it) - (*it), (*it));
220 board.saveSVG(
"toric-example-Voro-L2-toricX.svg");
223 board << dtL2ToricY.domain();
224 for (
auto it = dtL2ToricY.domain().begin(), itend = dtL2ToricY.domain().end();it != itend; ++it)
225 if ( dtL2ToricY.getVoronoiSite(*it) != *it )
226 Display2DFactory::draw(board, dtL2ToricY.getVoronoiSite(*it) - (*it), (*it));
227 board.saveSVG(
"toric-example-Voro-L2-toricY.svg");