<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> <meta http-equiv="X-UA-Compatible" content="IE=9"/> <meta name="generator" content="Doxygen 1.9.1"/> <meta name="viewport" content="width=device-width, initial-scale=1"/> <title>DGtal: geometry/volumes/fullConvexityLUT2D.cpp</title> <link href="tabs.css" rel="stylesheet" type="text/css"/> <script type="text/javascript" src="jquery.js"></script> <script type="text/javascript" src="dynsections.js"></script> <link href="navtree.css" rel="stylesheet" type="text/css"/> <script type="text/javascript" src="resize.js"></script> <script type="text/javascript" src="navtreedata.js"></script> <script type="text/javascript" src="navtree.js"></script> <link href="search/search.css" rel="stylesheet" type="text/css"/> <script type="text/javascript" src="search/searchdata.js"></script> <script type="text/javascript" src="search/search.js"></script> <script type="text/x-mathjax-config"> MathJax.Hub.Config({ extensions: ["tex2jax.js", "TeX/AMSmath.js", "TeX/AMSsymbols.js"], jax: ["input/TeX","output/HTML-CSS"], }); </script> <script type="text/javascript" async="async" src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.3/MathJax.js?config=TeX-MML-AM_CHTML/MathJax.js"></script> <link href="doxygen.css" rel="stylesheet" type="text/css" /> <link href="doxygen-awesome.css" rel="stylesheet" type="text/css"/> </head> <body> <div id="top"><!-- do not remove this div, it is closed by doxygen! --> <div id="titlearea"> <table cellspacing="0" cellpadding="0"> <tbody> <tr style="height: 56px;"> <td id="projectalign" style="padding-left: 0.5em;"> <div id="projectname">DGtal  <span id="projectnumber">1.4.2</span> </div> </td> </tr> </tbody> </table> </div> <!-- end header part --> <!-- Generated by Doxygen 1.9.1 --> <script type="text/javascript"> /* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&dn=gpl-2.0.txt GPL-v2 */ var searchBox = new SearchBox("searchBox", "search",false,'Search','.html'); /* @license-end */ </script> <script type="text/javascript" src="menudata.js"></script> <script type="text/javascript" src="menu.js"></script> <script type="text/javascript"> /* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&dn=gpl-2.0.txt GPL-v2 */ $(function() { initMenu('',true,false,'search.php','Search'); $(document).ready(function() { init_search(); }); }); /* @license-end */</script> <div id="main-nav"></div> </div><!-- top --> <div id="side-nav" class="ui-resizable side-nav-resizable"> <div id="nav-tree"> <div id="nav-tree-contents"> <div id="nav-sync" class="sync"></div> </div> </div> <div id="splitbar" style="-moz-user-select:none;" class="ui-resizable-handle"> </div> </div> <script type="text/javascript"> /* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&dn=gpl-2.0.txt GPL-v2 */ $(document).ready(function(){initNavTree('geometry_2volumes_2fullConvexityLUT2D_8cpp-example.html',''); initResizable(); }); /* @license-end */ </script> <div id="doc-content"> <!-- window showing the filter options --> <div id="MSearchSelectWindow" onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()" onkeydown="return searchBox.OnSearchSelectKey(event)"> </div> <!-- iframe showing the search results (closed by default) --> <div id="MSearchResultsWindow"> <iframe src="javascript:void(0)" frameborder="0" name="MSearchResults" id="MSearchResults"> </iframe> </div> <div class="header"> <div class="headertitle"> <div class="title">geometry/volumes/fullConvexityLUT2D.cpp</div> </div> </div><!--header--> <div class="contents"> <p>This example creates precomputed tables for determining whether some 3x3 neighborhood of a point is fully convex, collapsible, etc. More precisely it produces the following tables, if the neighbor points are the possible 8 points around the point of interest.</p> <ul> <li>table-fcvx-with-center : 'true' iff the center point and its neighbor points are fully convex ;</li> <li>table-fcvx-without-center" : 'true' iff the neighbor points without the center point are fully convex ;</li> <li>table-complementary-fcvx-with-center : 'true' iff the center point and the complementary points of its neighbor points are fully convex ;</li> <li>table-complementary-fcvx-without-center : 'true' iff the complementary points of the neighbor points are full convex ;</li> <li>table-fcvx-regular : 'true' if the point is <b>regular</b>, meaning that the center point and its neighbor points are fully convex, while the complementary points of the neighbor points are fully convex ;</li> <li>table-fcvx-collapsible : 'true' if the point is <b>collapsible</b>, meaning that the center and its neighbor points are fully convex, the neighbor points without the center point are also fully convex, and the center point is not isolated.</li> </ul> <dl class="section see"><dt>See also</dt><dd><a class="el" href="moduleDigitalConvexityApplications.html">Applications of full digital convexity</a></dd></dl> <div class="fragment"><div class="line"> </div> <div class="line"><span class="preprocessor">#include <vector></span></div> <div class="line"><span class="preprocessor">#include <fstream></span></div> <div class="line"><span class="preprocessor">#include "DGtal/shapes/Shapes.h"</span></div> <div class="line"><span class="preprocessor">#include "DGtal/io/boards/Board2D.h"</span></div> <div class="line"><span class="preprocessor">#include "DGtal/io/Color.h"</span></div> <div class="line"><span class="preprocessor">#include "DGtal/geometry/volumes/DigitalConvexity.h"</span></div> <div class="line"><span class="preprocessor">#include "DGtal/geometry/volumes/NeighborhoodConvexityAnalyzer.h"</span></div> <div class="line"><span class="preprocessor">#include "DGtal/helpers/Shortcuts.h"</span></div> <div class="line"><span class="preprocessor">#include "ConfigExamples.h"</span></div> <div class="line"> </div> <div class="line"><span class="comment">// Using standard 2D digital space.</span></div> <div class="line"><span class="comment"></span> </div> <div class="line"><span class="keyword">using namespace </span>std;</div> <div class="line"><span class="keyword">using namespace </span><a class="code" href="namespaceDGtal.html">DGtal</a>;</div> <div class="line"><span class="keyword">using namespace </span>Z2i;</div> <div class="line"> </div> <div class="line"><span class="keyword">typedef</span> std::vector<bool> <a name="a0"></a><a class="code" href="fullConvexityLUT2D_8cpp.html#a9999f95807b8ad274a6b3d925fa509ad">ConfigMap</a>;</div> <div class="line"><span class="keyword">typedef</span> <a name="_a1"></a><a class="code" href="classDGtal_1_1DigitalConvexity.html">DigitalConvexity< KSpace ></a> <a name="a2"></a><a class="code" href="fullConvexityCollapsiblePoints2D_8cpp.html#a35fb186c7414287732acbcb4380b2c4f">DConv</a>;</div> <div class="line"><span class="keyword">typedef</span> Shortcuts<KSpace> <a name="a3"></a><a class="code" href="fullConvexityCollapsiblePoints2D_8cpp.html#aee2cfe204e7b72bdbca6ca8671c96a42">SH2</a>;</div> <div class="line"><span class="keyword">typedef</span> NeighborhoodConvexityAnalyzer<KSpace,1> <a name="a4"></a><a class="code" href="fullConvexityCollapsiblePoints2D_8cpp.html#a056d16d3be9cfab5cbe53d99ea152075">NCA1</a>;</div> <div class="line"> </div> <div class="line"> </div> <div class="line"><span class="keywordtype">void</span></div> <div class="line"><a name="a5"></a><a class="code" href="fullConvexityLUT2D_8cpp.html#ada9492cdda05959a6927580ea1a82e41">outputTableAsArray</a>( ostream & out,</div> <div class="line"> <span class="keyword">const</span> <span class="keywordtype">string</span> & tableName,</div> <div class="line"> <span class="keyword">const</span> <a class="code" href="fullConvexityLUT2D_8cpp.html#a9999f95807b8ad274a6b3d925fa509ad">ConfigMap</a> & map )</div> <div class="line">{</div> <div class="line"> out << <span class="stringliteral">"const bool "</span> << tableName << <span class="stringliteral">"[ "</span> << map.size() << <span class="stringliteral">" ] = { "</span>;</div> <div class="line"> <span class="keywordflow">for</span> ( <span class="keyword">auto</span> it = map.cbegin(), it_end = map.cend();</div> <div class="line"> it != it_end; )</div> <div class="line"> {</div> <div class="line"> out << (int) *it;</div> <div class="line"> ++it;</div> <div class="line"> <span class="keywordflow">if</span> ( it != it_end ) out << <span class="stringliteral">", "</span>;</div> <div class="line"> }</div> <div class="line"> out << <span class="stringliteral">" };"</span> << std::endl;</div> <div class="line">}</div> <div class="line"> </div> <div class="line"><span class="keywordtype">void</span></div> <div class="line"><a name="a6"></a><a class="code" href="fullConvexityLUT2D_8cpp.html#ab1d2e1d6c3dde25efcc727c199693922">displaySimplicityTable</a>( Board2D & board,</div> <div class="line"> <span class="keyword">const</span> <a class="code" href="fullConvexityLUT2D_8cpp.html#a9999f95807b8ad274a6b3d925fa509ad">ConfigMap</a> & map,</div> <div class="line"> <span class="keywordtype">bool</span> complement,</div> <div class="line"> <span class="keywordtype">bool</span> with )</div> <div class="line">{</div> <div class="line"> <a class="code" href="testClone2_8cpp.html#a15e9592ccc512dc691b46185e6814758">Point</a> p1 = Point::diagonal( -1 );</div> <div class="line"> <a class="code" href="testClone2_8cpp.html#a15e9592ccc512dc691b46185e6814758">Point</a> p2 = Point::diagonal( 1 );</div> <div class="line"> <a class="code" href="testClone2_8cpp.html#a15e9592ccc512dc691b46185e6814758">Point</a> c = Point::diagonal( 0 );</div> <div class="line"> <a class="code" href="testSimpleRandomAccessRangeFromPoint_8cpp.html#acd532b318489cd93df57e0b3d136d050">Domain</a> <a name="a7"></a><a class="code" href="testProjection_8cpp.html#a1f1a69f8d8b037b72c2160ed12b3ef51">domain</a>( p1, p2 );</div> <div class="line"> </div> <div class="line"> <a class="code" href="testClone2_8cpp.html#a15e9592ccc512dc691b46185e6814758">Point</a> q1 = Point::diagonal( -1 );</div> <div class="line"> <a class="code" href="testClone2_8cpp.html#a15e9592ccc512dc691b46185e6814758">Point</a> q2 = Point::diagonal( 4*16-1 );</div> <div class="line"> <a class="code" href="testSimpleRandomAccessRangeFromPoint_8cpp.html#acd532b318489cd93df57e0b3d136d050">Domain</a> fullDomain( q1, q2 );</div> <div class="line"> board << SetMode( fullDomain.className(), <span class="stringliteral">"Paving"</span> );</div> <div class="line"> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> cfg = 0;</div> <div class="line"> <span class="keywordflow">for</span> ( <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> y = 0; y < 16; ++y )</div> <div class="line"> <span class="keywordflow">for</span> ( <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> x = 0; x < 16; ++x, ++cfg )</div> <div class="line"> {</div> <div class="line"> <span class="keywordtype">bool</span> simple = map[ cfg ];</div> <div class="line"> <a class="code" href="testClone2_8cpp.html#a15e9592ccc512dc691b46185e6814758">Point</a> base( x*4, y*4 );</div> <div class="line"> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> mask = 1;</div> <div class="line"> <span class="keywordflow">for</span> ( <span class="keyword">auto</span> it = <a class="code" href="testProjection_8cpp.html#a1f1a69f8d8b037b72c2160ed12b3ef51">domain</a>.begin();</div> <div class="line"> it != <a class="code" href="testProjection_8cpp.html#a1f1a69f8d8b037b72c2160ed12b3ef51">domain</a>.end(); ++it )</div> <div class="line"> {</div> <div class="line"> <a class="code" href="testClone2_8cpp.html#a15e9592ccc512dc691b46185e6814758">Point</a> q = base + (*it);</div> <div class="line"> <span class="keywordflow">if</span> ( *it == c ) {</div> <div class="line"> <span class="keywordflow">if</span> ( with ) </div> <div class="line"> board << CustomStyle( q.className(),</div> <div class="line"> simple</div> <div class="line"> ? <span class="keyword">new</span> CustomColors( Color( 0, 0, 0 ),</div> <div class="line"> Color( 30, 128, 30 ) )</div> <div class="line"> : <span class="keyword">new</span> CustomColors( Color( 0, 0, 0 ),</div> <div class="line"> Color( 128, 30, 30 ) ) );</div> <div class="line"> <span class="keywordflow">else</span></div> <div class="line"> board << CustomStyle( q.className(),</div> <div class="line"> simple</div> <div class="line"> ? <span class="keyword">new</span> CustomColors( Color( 0, 0, 0 ),</div> <div class="line"> Color( 200, 255, 200 ) )</div> <div class="line"> : <span class="keyword">new</span> CustomColors( Color( 0, 0, 0 ),</div> <div class="line"> Color( 255, 200, 200 ) ) );</div> <div class="line"> </div> <div class="line"> } <span class="keywordflow">else</span> {</div> <div class="line"> <span class="keywordtype">bool</span> in_cfg = cfg & mask;</div> <div class="line"> <span class="keywordtype">bool</span> <a name="a8"></a><a class="code" href="testLabelledMap_8cpp.html#ad7bf55b7a17eb27c4ccabe9ae82a0629">display</a> = complement ? ( ! in_cfg ) : in_cfg;</div> <div class="line"> <span class="keywordflow">if</span> ( <a class="code" href="testLabelledMap_8cpp.html#ad7bf55b7a17eb27c4ccabe9ae82a0629">display</a> )</div> <div class="line"> board <<</div> <div class="line"> CustomStyle( q.className(),</div> <div class="line"> simple</div> <div class="line"> ? <span class="keyword">new</span> CustomColors( Color( 0, 0, 0 ),</div> <div class="line"> Color( 10, 255, 10 ) )</div> <div class="line"> : <span class="keyword">new</span> CustomColors( Color( 0, 0, 0 ),</div> <div class="line"> Color( 255, 10, 10 ) ) );</div> <div class="line"> <span class="keywordflow">else</span></div> <div class="line"> board <<</div> <div class="line"> CustomStyle( q.className(),</div> <div class="line"> simple</div> <div class="line"> ? <span class="keyword">new</span> CustomColors( Color( 0, 0, 0 ),</div> <div class="line"> Color( 245, 255, 245 ) )</div> <div class="line"> : <span class="keyword">new</span> CustomColors( Color( 0, 0, 0 ),</div> <div class="line"> Color( 255, 245, 245 ) ) );</div> <div class="line"> mask <<= 1;</div> <div class="line"> }</div> <div class="line"> board << q;</div> <div class="line"> }</div> <div class="line"> }</div> <div class="line">}</div> <div class="line"> </div> <div class="line"> </div> <div class="line"><span class="keywordtype">int</span> <a name="a9"></a><a class="code" href="testArithmeticDSS-benchmark_8cpp.html#a3c04138a5bfe5d72780bb7e82a18e627">main</a>( <span class="keywordtype">int</span> argc, <span class="keywordtype">char</span>** argv )</div> <div class="line">{</div> <div class="line"> <a class="code" href="fullConvexityCollapsiblePoints2D_8cpp.html#a35fb186c7414287732acbcb4380b2c4f">DConv</a> dconv( Point::diagonal( -5 ), Point::diagonal( 5 ) );</div> <div class="line"> </div> <div class="line"> <a class="code" href="namespaceDGtal.html#a8fc7012708b0416880a5c8b12dfdf9dd">trace</a>.<a name="a10"></a><a class="code" href="classDGtal_1_1Trace.html#a352b7160bf722e2f0bcbee5d0bad6ef3">beginBlock</a> ( <span class="stringliteral">"Generate 2d tables"</span> );</div> <div class="line"> <a class="code" href="fullConvexityLUT2D_8cpp.html#a9999f95807b8ad274a6b3d925fa509ad">ConfigMap</a> table_with ( 256, <span class="keyword">false</span> );</div> <div class="line"> <a class="code" href="fullConvexityLUT2D_8cpp.html#a9999f95807b8ad274a6b3d925fa509ad">ConfigMap</a> table_without ( 256, <span class="keyword">false</span> );</div> <div class="line"> <a class="code" href="fullConvexityLUT2D_8cpp.html#a9999f95807b8ad274a6b3d925fa509ad">ConfigMap</a> table_cwith ( 256, <span class="keyword">false</span> );</div> <div class="line"> <a class="code" href="fullConvexityLUT2D_8cpp.html#a9999f95807b8ad274a6b3d925fa509ad">ConfigMap</a> table_cwithout( 256, <span class="keyword">false</span> );</div> <div class="line"> <a class="code" href="testClone2_8cpp.html#a15e9592ccc512dc691b46185e6814758">Point</a> p1 = Point::diagonal( -1 );</div> <div class="line"> <a class="code" href="testClone2_8cpp.html#a15e9592ccc512dc691b46185e6814758">Point</a> p2 = Point::diagonal( 1 );</div> <div class="line"> <a class="code" href="testClone2_8cpp.html#a15e9592ccc512dc691b46185e6814758">Point</a> c = Point::diagonal( 0 );</div> <div class="line"> <a class="code" href="testSimpleRandomAccessRangeFromPoint_8cpp.html#acd532b318489cd93df57e0b3d136d050">Domain</a> <a class="code" href="testProjection_8cpp.html#a1f1a69f8d8b037b72c2160ed12b3ef51">domain</a>( p1, p2 );</div> <div class="line"> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> cfg = 0;</div> <div class="line"> <a class="code" href="testArithmeticalDSSComputerOnSurfels_8cpp.html#aebe586e91159919ccf2f565d4407fff7">KSpace</a> <a name="a11"></a><a class="code" href="testCubicalComplex_8cpp.html#a2b87ed989d2519d025bd5d4fbcbac062">K</a>;</div> <div class="line"> <a class="code" href="testCubicalComplex_8cpp.html#a2b87ed989d2519d025bd5d4fbcbac062">K</a>.init( p1, p2, <span class="keyword">true</span> );</div> <div class="line"> NeighborhoodConvexityAnalyzer< KSpace, 1 > LCA( <a class="code" href="testCubicalComplex_8cpp.html#a2b87ed989d2519d025bd5d4fbcbac062">K</a> );</div> <div class="line"> ImageContainerBySTLVector< Domain, bool > <a name="a12"></a><a class="code" href="testSimpleRandomAccessRangeFromPoint_8cpp.html#a614d1b1c043b31763c1eb50f64666737">image</a>( <a class="code" href="testProjection_8cpp.html#a1f1a69f8d8b037b72c2160ed12b3ef51">domain</a> );</div> <div class="line"> <span class="keywordflow">for</span> ( <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> y = 0; y < 16; ++y )</div> <div class="line"> <span class="keywordflow">for</span> ( <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> x = 0; x < 16; ++x )</div> <div class="line"> {</div> <div class="line"> <span class="comment">// Building a configuration.</span></div> <div class="line"> std::vector< Point > Xwith;</div> <div class="line"> std::vector< Point > Xwithout;</div> <div class="line"> <a class="code" href="testClone2_8cpp.html#a15e9592ccc512dc691b46185e6814758">Point</a> base( x, y );</div> <div class="line"> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> mask = 1;</div> <div class="line"> <span class="keywordflow">for</span> ( <span class="keyword">auto</span> it = <a class="code" href="testProjection_8cpp.html#a1f1a69f8d8b037b72c2160ed12b3ef51">domain</a>.begin(); it != <a class="code" href="testProjection_8cpp.html#a1f1a69f8d8b037b72c2160ed12b3ef51">domain</a>.end(); ++it )</div> <div class="line"> {</div> <div class="line"> <span class="keyword">const</span> <a class="code" href="testClone2_8cpp.html#a15e9592ccc512dc691b46185e6814758">Point</a> p = *it;</div> <div class="line"> <span class="keywordflow">if</span> ( p != c )</div> <div class="line"> {</div> <div class="line"> image.setValue( p, cfg & mask );</div> <div class="line"> mask <<= 1;</div> <div class="line"> }</div> <div class="line"> }</div> <div class="line"> <span class="comment">// Checking full convexity.</span></div> <div class="line"> LCA.setCenter( c, image );</div> <div class="line"> <span class="keywordtype">bool</span> full_with = LCA.isFullyConvex( <span class="keyword">true</span> );</div> <div class="line"> <span class="keywordtype">bool</span> full_without = LCA.isFullyConvex( <span class="keyword">false</span> );</div> <div class="line"> <span class="keywordtype">bool</span> full_cwith = LCA.isComplementaryFullyConvex( <span class="keyword">true</span> );</div> <div class="line"> <span class="keywordtype">bool</span> full_cwithout = LCA.isComplementaryFullyConvex( <span class="keyword">false</span> );</div> <div class="line"> table_with [ cfg ] = full_with;</div> <div class="line"> table_without [ cfg ] = full_without;</div> <div class="line"> table_cwith [ cfg ] = full_cwith;</div> <div class="line"> table_cwithout[ cfg ] = full_cwithout;</div> <div class="line"> cfg += 1;</div> <div class="line"> }</div> <div class="line"> <a class="code" href="namespaceDGtal.html#a8fc7012708b0416880a5c8b12dfdf9dd">trace</a>.<a name="a13"></a><a class="code" href="classDGtal_1_1Trace.html#afa3a2874289734884107b1ce68ccb93d">endBlock</a>();</div> <div class="line"> <a class="code" href="namespaceDGtal.html#a8fc7012708b0416880a5c8b12dfdf9dd">trace</a>.<a class="code" href="classDGtal_1_1Trace.html#a352b7160bf722e2f0bcbee5d0bad6ef3">beginBlock</a> ( <span class="stringliteral">"Computing topology-related tables"</span> );</div> <div class="line"> <a class="code" href="fullConvexityLUT2D_8cpp.html#a9999f95807b8ad274a6b3d925fa509ad">ConfigMap</a> table_regular ( 256, <span class="keyword">false</span> );</div> <div class="line"> <span class="keywordflow">for</span> ( cfg = 0; cfg < 256; cfg++ )</div> <div class="line"> table_regular[ cfg ] = table_with[ cfg ] && table_without[ 255 - cfg ];</div> <div class="line"> <a class="code" href="fullConvexityLUT2D_8cpp.html#a9999f95807b8ad274a6b3d925fa509ad">ConfigMap</a> table_collapsible( 256, <span class="keyword">false</span> );</div> <div class="line"> <span class="keywordflow">for</span> ( cfg = 0; cfg < 256; cfg++ )</div> <div class="line"> table_collapsible[ cfg ] = table_with[ cfg ] && table_without[ cfg ]</div> <div class="line"> && ( cfg != 0 );</div> <div class="line"> <a class="code" href="namespaceDGtal.html#a8fc7012708b0416880a5c8b12dfdf9dd">trace</a>.<a class="code" href="classDGtal_1_1Trace.html#afa3a2874289734884107b1ce68ccb93d">endBlock</a>();</div> <div class="line"> <a class="code" href="namespaceDGtal.html#a8fc7012708b0416880a5c8b12dfdf9dd">trace</a>.<a class="code" href="classDGtal_1_1Trace.html#a352b7160bf722e2f0bcbee5d0bad6ef3">beginBlock</a> ( <span class="stringliteral">"Display 2d tables"</span> );</div> <div class="line"> {</div> <div class="line"> Board2D board;</div> <div class="line"> <a class="code" href="fullConvexityLUT2D_8cpp.html#ab1d2e1d6c3dde25efcc727c199693922">displaySimplicityTable</a>( board, table_with, <span class="keyword">false</span>, <span class="keyword">true</span> );</div> <div class="line"> board.saveEPS( <span class="stringliteral">"table-fcvx-with-center.eps"</span> );</div> <div class="line"> }</div> <div class="line"> {</div> <div class="line"> Board2D board;</div> <div class="line"> <a class="code" href="fullConvexityLUT2D_8cpp.html#ab1d2e1d6c3dde25efcc727c199693922">displaySimplicityTable</a>( board, table_without, <span class="keyword">false</span>, <span class="keyword">false</span> );</div> <div class="line"> board.saveEPS( <span class="stringliteral">"table-fcvx-without-center.eps"</span> );</div> <div class="line"> }</div> <div class="line"> {</div> <div class="line"> Board2D board;</div> <div class="line"> <a class="code" href="fullConvexityLUT2D_8cpp.html#ab1d2e1d6c3dde25efcc727c199693922">displaySimplicityTable</a>( board, table_cwith, <span class="keyword">true</span>, <span class="keyword">true</span> );</div> <div class="line"> board.saveEPS( <span class="stringliteral">"table-complementary-fcvx-with-center.eps"</span> );</div> <div class="line"> }</div> <div class="line"> {</div> <div class="line"> Board2D board;</div> <div class="line"> <a class="code" href="fullConvexityLUT2D_8cpp.html#ab1d2e1d6c3dde25efcc727c199693922">displaySimplicityTable</a>( board, table_cwithout, <span class="keyword">true</span>, <span class="keyword">false</span> );</div> <div class="line"> board.saveEPS( <span class="stringliteral">"table-complementary-fcvx-without-center.eps"</span> );</div> <div class="line"> }</div> <div class="line"> {</div> <div class="line"> Board2D board;</div> <div class="line"> <a class="code" href="fullConvexityLUT2D_8cpp.html#ab1d2e1d6c3dde25efcc727c199693922">displaySimplicityTable</a>( board, table_regular, <span class="keyword">false</span>, <span class="keyword">true</span> );</div> <div class="line"> board.saveEPS( <span class="stringliteral">"table-fcvx-regular.eps"</span> );</div> <div class="line"> }</div> <div class="line"> {</div> <div class="line"> Board2D board;</div> <div class="line"> <a class="code" href="fullConvexityLUT2D_8cpp.html#ab1d2e1d6c3dde25efcc727c199693922">displaySimplicityTable</a>( board, table_collapsible, <span class="keyword">false</span>, <span class="keyword">true</span> );</div> <div class="line"> board.saveEPS( <span class="stringliteral">"table-fcvx-collapsible.eps"</span> );</div> <div class="line"> }</div> <div class="line"> <a class="code" href="namespaceDGtal.html#a8fc7012708b0416880a5c8b12dfdf9dd">trace</a>.<a class="code" href="classDGtal_1_1Trace.html#afa3a2874289734884107b1ce68ccb93d">endBlock</a>();</div> <div class="line"> <a class="code" href="namespaceDGtal.html#a8fc7012708b0416880a5c8b12dfdf9dd">trace</a>.<a class="code" href="classDGtal_1_1Trace.html#a352b7160bf722e2f0bcbee5d0bad6ef3">beginBlock</a> ( <span class="stringliteral">"Output 2d tables as C arrays"</span> );</div> <div class="line"> ofstream out( <span class="stringliteral">"table-fcvx.cpp"</span> );</div> <div class="line"> <a class="code" href="fullConvexityLUT2D_8cpp.html#ada9492cdda05959a6927580ea1a82e41">outputTableAsArray</a>( out, <span class="stringliteral">"table-fcvx-with-center"</span>,</div> <div class="line"> table_with );</div> <div class="line"> <a class="code" href="fullConvexityLUT2D_8cpp.html#ada9492cdda05959a6927580ea1a82e41">outputTableAsArray</a>( out, <span class="stringliteral">"table-fcvx-without-center"</span>,</div> <div class="line"> table_without );</div> <div class="line"> <a class="code" href="fullConvexityLUT2D_8cpp.html#ada9492cdda05959a6927580ea1a82e41">outputTableAsArray</a>( out, <span class="stringliteral">"table-complementary-fcvx-with-center"</span>,</div> <div class="line"> table_cwith );</div> <div class="line"> <a class="code" href="fullConvexityLUT2D_8cpp.html#ada9492cdda05959a6927580ea1a82e41">outputTableAsArray</a>( out, <span class="stringliteral">"table-complementary-fcvx-without-center"</span>,</div> <div class="line"> table_cwithout );</div> <div class="line"> <a class="code" href="fullConvexityLUT2D_8cpp.html#ada9492cdda05959a6927580ea1a82e41">outputTableAsArray</a>( out, <span class="stringliteral">"table-fcvx-regular"</span>,</div> <div class="line"> table_regular );</div> <div class="line"> <a class="code" href="fullConvexityLUT2D_8cpp.html#ada9492cdda05959a6927580ea1a82e41">outputTableAsArray</a>( out, <span class="stringliteral">"table-fcvx-collapsible"</span>,</div> <div class="line"> table_collapsible );</div> <div class="line"> out.close();</div> <div class="line"> <a class="code" href="namespaceDGtal.html#a8fc7012708b0416880a5c8b12dfdf9dd">trace</a>.<a class="code" href="classDGtal_1_1Trace.html#afa3a2874289734884107b1ce68ccb93d">endBlock</a>();</div> <div class="line"> <span class="keywordflow">return</span> 0;</div> <div class="line">}</div> <div class="ttc" id="aclassDGtal_1_1DigitalConvexity_html"><div class="ttname"><a href="classDGtal_1_1DigitalConvexity.html">DGtal::DigitalConvexity< KSpace ></a></div></div> <div class="ttc" id="aclassDGtal_1_1Trace_html_a352b7160bf722e2f0bcbee5d0bad6ef3"><div class="ttname"><a href="classDGtal_1_1Trace.html#a352b7160bf722e2f0bcbee5d0bad6ef3">DGtal::Trace::beginBlock</a></div><div class="ttdeci">void beginBlock(const std::string &keyword="")</div></div> <div class="ttc" id="aclassDGtal_1_1Trace_html_afa3a2874289734884107b1ce68ccb93d"><div class="ttname"><a href="classDGtal_1_1Trace.html#afa3a2874289734884107b1ce68ccb93d">DGtal::Trace::endBlock</a></div><div class="ttdeci">double endBlock()</div></div> <div class="ttc" id="afullConvexityCollapsiblePoints2D_8cpp_html_a056d16d3be9cfab5cbe53d99ea152075"><div class="ttname"><a href="fullConvexityCollapsiblePoints2D_8cpp.html#a056d16d3be9cfab5cbe53d99ea152075">NCA1</a></div><div class="ttdeci">NeighborhoodConvexityAnalyzer< KSpace, 1 > NCA1</div><div class="ttdef"><b>Definition:</b> <a href="fullConvexityCollapsiblePoints2D_8cpp_source.html#l00058">fullConvexityCollapsiblePoints2D.cpp:58</a></div></div> <div class="ttc" id="afullConvexityCollapsiblePoints2D_8cpp_html_a35fb186c7414287732acbcb4380b2c4f"><div class="ttname"><a href="fullConvexityCollapsiblePoints2D_8cpp.html#a35fb186c7414287732acbcb4380b2c4f">DConv</a></div><div class="ttdeci">DigitalConvexity< KSpace > DConv</div><div class="ttdef"><b>Definition:</b> <a href="fullConvexityCollapsiblePoints2D_8cpp_source.html#l00056">fullConvexityCollapsiblePoints2D.cpp:56</a></div></div> <div class="ttc" id="afullConvexityCollapsiblePoints2D_8cpp_html_aee2cfe204e7b72bdbca6ca8671c96a42"><div class="ttname"><a href="fullConvexityCollapsiblePoints2D_8cpp.html#aee2cfe204e7b72bdbca6ca8671c96a42">SH2</a></div><div class="ttdeci">Shortcuts< KSpace > SH2</div><div class="ttdef"><b>Definition:</b> <a href="fullConvexityCollapsiblePoints2D_8cpp_source.html#l00057">fullConvexityCollapsiblePoints2D.cpp:57</a></div></div> <div class="ttc" id="afullConvexityLUT2D_8cpp_html_a9999f95807b8ad274a6b3d925fa509ad"><div class="ttname"><a href="fullConvexityLUT2D_8cpp.html#a9999f95807b8ad274a6b3d925fa509ad">ConfigMap</a></div><div class="ttdeci">std::vector< bool > ConfigMap</div><div class="ttdef"><b>Definition:</b> <a href="fullConvexityLUT2D_8cpp_source.html#l00076">fullConvexityLUT2D.cpp:76</a></div></div> <div class="ttc" id="afullConvexityLUT2D_8cpp_html_ab1d2e1d6c3dde25efcc727c199693922"><div class="ttname"><a href="fullConvexityLUT2D_8cpp.html#ab1d2e1d6c3dde25efcc727c199693922">displaySimplicityTable</a></div><div class="ttdeci">void displaySimplicityTable(Board2D &board, const ConfigMap &map, bool complement, bool with)</div><div class="ttdef"><b>Definition:</b> <a href="fullConvexityLUT2D_8cpp_source.html#l00102">fullConvexityLUT2D.cpp:102</a></div></div> <div class="ttc" id="afullConvexityLUT2D_8cpp_html_ada9492cdda05959a6927580ea1a82e41"><div class="ttname"><a href="fullConvexityLUT2D_8cpp.html#ada9492cdda05959a6927580ea1a82e41">outputTableAsArray</a></div><div class="ttdeci">void outputTableAsArray(ostream &out, const string &tableName, const ConfigMap &map)</div><div class="ttdef"><b>Definition:</b> <a href="fullConvexityLUT2D_8cpp_source.html#l00086">fullConvexityLUT2D.cpp:86</a></div></div> <div class="ttc" id="anamespaceDGtal_html"><div class="ttname"><a href="namespaceDGtal.html">DGtal</a></div><div class="ttdoc">DGtal is the top-level namespace which contains all DGtal functions and types.</div></div> <div class="ttc" id="anamespaceDGtal_html_a8fc7012708b0416880a5c8b12dfdf9dd"><div class="ttname"><a href="namespaceDGtal.html#a8fc7012708b0416880a5c8b12dfdf9dd">DGtal::trace</a></div><div class="ttdeci">Trace trace</div><div class="ttdef"><b>Definition:</b> <a href="Common_8h_source.html#l00153">Common.h:153</a></div></div> <div class="ttc" id="atestArithmeticDSS-benchmark_8cpp_html_a3c04138a5bfe5d72780bb7e82a18e627"><div class="ttname"><a href="testArithmeticDSS-benchmark_8cpp.html#a3c04138a5bfe5d72780bb7e82a18e627">main</a></div><div class="ttdeci">int main(int argc, char **argv)</div><div class="ttdef"><b>Definition:</b> <a href="testArithmeticDSS-benchmark_8cpp_source.html#l00147">testArithmeticDSS-benchmark.cpp:147</a></div></div> <div class="ttc" id="atestArithmeticalDSSComputerOnSurfels_8cpp_html_aebe586e91159919ccf2f565d4407fff7"><div class="ttname"><a href="testArithmeticalDSSComputerOnSurfels_8cpp.html#aebe586e91159919ccf2f565d4407fff7">KSpace</a></div><div class="ttdeci">Z3i::KSpace KSpace</div><div class="ttdef"><b>Definition:</b> <a href="testArithmeticalDSSComputerOnSurfels_8cpp_source.html#l00048">testArithmeticalDSSComputerOnSurfels.cpp:48</a></div></div> <div class="ttc" id="atestClone2_8cpp_html_a15e9592ccc512dc691b46185e6814758"><div class="ttname"><a href="testClone2_8cpp.html#a15e9592ccc512dc691b46185e6814758">Point</a></div><div class="ttdeci">MyPointD Point</div><div class="ttdef"><b>Definition:</b> <a href="testClone2_8cpp_source.html#l00383">testClone2.cpp:383</a></div></div> <div class="ttc" id="atestCubicalComplex_8cpp_html_a2b87ed989d2519d025bd5d4fbcbac062"><div class="ttname"><a href="testCubicalComplex_8cpp.html#a2b87ed989d2519d025bd5d4fbcbac062">K</a></div><div class="ttdeci">KSpace K</div><div class="ttdef"><b>Definition:</b> <a href="testCubicalComplex_8cpp_source.html#l00062">testCubicalComplex.cpp:62</a></div></div> <div class="ttc" id="atestLabelledMap_8cpp_html_ad7bf55b7a17eb27c4ccabe9ae82a0629"><div class="ttname"><a href="testLabelledMap_8cpp.html#ad7bf55b7a17eb27c4ccabe9ae82a0629">display</a></div><div class="ttdeci">void display(ostream &out, const AContainer &C)</div><div class="ttdef"><b>Definition:</b> <a href="testLabelledMap_8cpp_source.html#l00094">testLabelledMap.cpp:94</a></div></div> <div class="ttc" id="atestProjection_8cpp_html_a1f1a69f8d8b037b72c2160ed12b3ef51"><div class="ttname"><a href="testProjection_8cpp.html#a1f1a69f8d8b037b72c2160ed12b3ef51">domain</a></div><div class="ttdeci">Domain domain</div><div class="ttdef"><b>Definition:</b> <a href="testProjection_8cpp_source.html#l00088">testProjection.cpp:88</a></div></div> <div class="ttc" id="atestSimpleRandomAccessRangeFromPoint_8cpp_html_a614d1b1c043b31763c1eb50f64666737"><div class="ttname"><a href="testSimpleRandomAccessRangeFromPoint_8cpp.html#a614d1b1c043b31763c1eb50f64666737">image</a></div><div class="ttdeci">Image image(domain)</div></div> <div class="ttc" id="atestSimpleRandomAccessRangeFromPoint_8cpp_html_acd532b318489cd93df57e0b3d136d050"><div class="ttname"><a href="testSimpleRandomAccessRangeFromPoint_8cpp.html#acd532b318489cd93df57e0b3d136d050">Domain</a></div><div class="ttdeci">HyperRectDomain< Space > Domain</div><div class="ttdef"><b>Definition:</b> <a href="testSimpleRandomAccessRangeFromPoint_8cpp_source.html#l00044">testSimpleRandomAccessRangeFromPoint.cpp:44</a></div></div> </div><!-- fragment --> </div><!-- contents --> </div><!-- doc-content --> <!-- start footer part --> <div id="nav-path" class="navpath"><!-- id is needed for treeview function! --> <ul> <li class="footer">Generated on Mon Dec 23 2024 13:18:26 for DGtal by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.1 </li> </ul> </div> </body> </html>