diff options
author | Gard Spreemann <gspreemann@gmail.com> | 2017-02-07 17:33:01 +0100 |
---|---|---|
committer | Gard Spreemann <gspreemann@gmail.com> | 2017-02-07 17:33:01 +0100 |
commit | 55c7181126aa7defce38c9b82872d14223d4c1dd (patch) | |
tree | 7c683f014709459f066fd87a21da7f74cfc31a53 /doc/Bitmap_cubical_complex |
Initial import of upstream's 1.3.1.upstream/1.3.1
Diffstat (limited to 'doc/Bitmap_cubical_complex')
-rw-r--r-- | doc/Bitmap_cubical_complex/Cubical_complex_representation.ipe | 732 | ||||
-rw-r--r-- | doc/Bitmap_cubical_complex/Cubical_complex_representation.png | bin | 0 -> 19167 bytes | |||
-rw-r--r-- | doc/Bitmap_cubical_complex/Gudhi_Cubical_Complex_doc.h | 159 | ||||
-rw-r--r-- | doc/Bitmap_cubical_complex/bitmapAllCubes.png | bin | 0 -> 38944 bytes | |||
-rw-r--r-- | doc/Bitmap_cubical_complex/exampleBitmap.png | bin | 0 -> 2549 bytes |
5 files changed, 891 insertions, 0 deletions
diff --git a/doc/Bitmap_cubical_complex/Cubical_complex_representation.ipe b/doc/Bitmap_cubical_complex/Cubical_complex_representation.ipe new file mode 100644 index 00000000..bec245e7 --- /dev/null +++ b/doc/Bitmap_cubical_complex/Cubical_complex_representation.ipe @@ -0,0 +1,732 @@ +<?xml version="1.0"?> +<!DOCTYPE ipe SYSTEM "ipe.dtd"> +<ipe version="70107" creator="Ipe 7.1.10"> +<info created="D:20160330102945" modified="D:20160330104654"/> +<ipestyle name="basic"> +<symbol name="arrow/arc(spx)"> +<path stroke="sym-stroke" fill="sym-stroke" pen="sym-pen"> +0 0 m +-1 0.333 l +-1 -0.333 l +h +</path> +</symbol> +<symbol name="arrow/farc(spx)"> +<path stroke="sym-stroke" fill="white" pen="sym-pen"> +0 0 m +-1 0.333 l +-1 -0.333 l +h +</path> +</symbol> +<symbol name="arrow/ptarc(spx)"> +<path stroke="sym-stroke" fill="sym-stroke" pen="sym-pen"> +0 0 m +-1 0.333 l +-0.8 0 l +-1 -0.333 l +h +</path> +</symbol> +<symbol name="arrow/fptarc(spx)"> +<path stroke="sym-stroke" fill="white" pen="sym-pen"> +0 0 m +-1 0.333 l +-0.8 0 l +-1 -0.333 l +h +</path> +</symbol> +<symbol name="mark/circle(sx)" transformations="translations"> +<path fill="sym-stroke"> +0.6 0 0 0.6 0 0 e +0.4 0 0 0.4 0 0 e +</path> +</symbol> +<symbol name="mark/disk(sx)" transformations="translations"> +<path fill="sym-stroke"> +0.6 0 0 0.6 0 0 e +</path> +</symbol> +<symbol name="mark/fdisk(sfx)" transformations="translations"> +<group> +<path fill="sym-fill"> +0.5 0 0 0.5 0 0 e +</path> +<path fill="sym-stroke" fillrule="eofill"> +0.6 0 0 0.6 0 0 e +0.4 0 0 0.4 0 0 e +</path> +</group> +</symbol> +<symbol name="mark/box(sx)" transformations="translations"> +<path fill="sym-stroke" fillrule="eofill"> +-0.6 -0.6 m +0.6 -0.6 l +0.6 0.6 l +-0.6 0.6 l +h +-0.4 -0.4 m +0.4 -0.4 l +0.4 0.4 l +-0.4 0.4 l +h +</path> +</symbol> +<symbol name="mark/square(sx)" transformations="translations"> +<path fill="sym-stroke"> +-0.6 -0.6 m +0.6 -0.6 l +0.6 0.6 l +-0.6 0.6 l +h +</path> +</symbol> +<symbol name="mark/fsquare(sfx)" transformations="translations"> +<group> +<path fill="sym-fill"> +-0.5 -0.5 m +0.5 -0.5 l +0.5 0.5 l +-0.5 0.5 l +h +</path> +<path fill="sym-stroke" fillrule="eofill"> +-0.6 -0.6 m +0.6 -0.6 l +0.6 0.6 l +-0.6 0.6 l +h +-0.4 -0.4 m +0.4 -0.4 l +0.4 0.4 l +-0.4 0.4 l +h +</path> +</group> +</symbol> +<symbol name="mark/cross(sx)" transformations="translations"> +<group> +<path fill="sym-stroke"> +-0.43 -0.57 m +0.57 0.43 l +0.43 0.57 l +-0.57 -0.43 l +h +</path> +<path fill="sym-stroke"> +-0.43 0.57 m +0.57 -0.43 l +0.43 -0.57 l +-0.57 0.43 l +h +</path> +</group> +</symbol> +<symbol name="arrow/fnormal(spx)"> +<path stroke="sym-stroke" fill="white" pen="sym-pen"> +0 0 m +-1 0.333 l +-1 -0.333 l +h +</path> +</symbol> +<symbol name="arrow/pointed(spx)"> +<path stroke="sym-stroke" fill="sym-stroke" pen="sym-pen"> +0 0 m +-1 0.333 l +-0.8 0 l +-1 -0.333 l +h +</path> +</symbol> +<symbol name="arrow/fpointed(spx)"> +<path stroke="sym-stroke" fill="white" pen="sym-pen"> +0 0 m +-1 0.333 l +-0.8 0 l +-1 -0.333 l +h +</path> +</symbol> +<symbol name="arrow/linear(spx)"> +<path stroke="sym-stroke" pen="sym-pen"> +-1 0.333 m +0 0 l +-1 -0.333 l +</path> +</symbol> +<symbol name="arrow/fdouble(spx)"> +<path stroke="sym-stroke" fill="white" pen="sym-pen"> +0 0 m +-1 0.333 l +-1 -0.333 l +h +-1 0 m +-2 0.333 l +-2 -0.333 l +h +</path> +</symbol> +<symbol name="arrow/double(spx)"> +<path stroke="sym-stroke" fill="sym-stroke" pen="sym-pen"> +0 0 m +-1 0.333 l +-1 -0.333 l +h +-1 0 m +-2 0.333 l +-2 -0.333 l +h +</path> +</symbol> +<pen name="heavier" value="0.8"/> +<pen name="fat" value="1.2"/> +<pen name="ultrafat" value="2"/> +<symbolsize name="large" value="5"/> +<symbolsize name="small" value="2"/> +<symbolsize name="tiny" value="1.1"/> +<arrowsize name="large" value="10"/> +<arrowsize name="small" value="5"/> +<arrowsize name="tiny" value="3"/> +<color name="red" value="1 0 0"/> +<color name="green" value="0 1 0"/> +<color name="blue" value="0 0 1"/> +<color name="yellow" value="1 1 0"/> +<color name="orange" value="1 0.647 0"/> +<color name="gold" value="1 0.843 0"/> +<color name="purple" value="0.627 0.125 0.941"/> +<color name="gray" value="0.745"/> +<color name="brown" value="0.647 0.165 0.165"/> +<color name="navy" value="0 0 0.502"/> +<color name="pink" value="1 0.753 0.796"/> +<color name="seagreen" value="0.18 0.545 0.341"/> +<color name="turquoise" value="0.251 0.878 0.816"/> +<color name="violet" value="0.933 0.51 0.933"/> +<color name="darkblue" value="0 0 0.545"/> +<color name="darkcyan" value="0 0.545 0.545"/> +<color name="darkgray" value="0.663"/> +<color name="darkgreen" value="0 0.392 0"/> +<color name="darkmagenta" value="0.545 0 0.545"/> +<color name="darkorange" value="1 0.549 0"/> +<color name="darkred" value="0.545 0 0"/> +<color name="lightblue" value="0.678 0.847 0.902"/> +<color name="lightcyan" value="0.878 1 1"/> +<color name="lightgray" value="0.827"/> +<color name="lightgreen" value="0.565 0.933 0.565"/> +<color name="lightyellow" value="1 1 0.878"/> +<dashstyle name="dashed" value="[4] 0"/> +<dashstyle name="dotted" value="[1 3] 0"/> +<dashstyle name="dash dotted" value="[4 2 1 2] 0"/> +<dashstyle name="dash dot dotted" value="[4 2 1 2 1 2] 0"/> +<textsize name="large" value="\large"/> +<textsize name="Large" value="\Large"/> +<textsize name="LARGE" value="\LARGE"/> +<textsize name="huge" value="\huge"/> +<textsize name="Huge" value="\Huge"/> +<textsize name="small" value="\small"/> +<textsize name="footnote" value="\footnotesize"/> +<textsize name="tiny" value="\tiny"/> +<textstyle name="center" begin="\begin{center}" end="\end{center}"/> +<textstyle name="itemize" begin="\begin{itemize}" end="\end{itemize}"/> +<textstyle name="item" begin="\begin{itemize}\item{}" end="\end{itemize}"/> +<gridsize name="4 pts" value="4"/> +<gridsize name="8 pts (~3 mm)" value="8"/> +<gridsize name="16 pts (~6 mm)" value="16"/> +<gridsize name="32 pts (~12 mm)" value="32"/> +<gridsize name="10 pts (~3.5 mm)" value="10"/> +<gridsize name="20 pts (~7 mm)" value="20"/> +<gridsize name="14 pts (~5 mm)" value="14"/> +<gridsize name="28 pts (~10 mm)" value="28"/> +<gridsize name="56 pts (~20 mm)" value="56"/> +<anglesize name="90 deg" value="90"/> +<anglesize name="60 deg" value="60"/> +<anglesize name="45 deg" value="45"/> +<anglesize name="30 deg" value="30"/> +<anglesize name="22.5 deg" value="22.5"/> +<opacity name="10%" value="0.1"/> +<opacity name="30%" value="0.3"/> +<opacity name="50%" value="0.5"/> +<opacity name="75%" value="0.75"/> +<tiling name="falling" angle="-60" step="4" width="1"/> +<tiling name="rising" angle="30" step="4" width="1"/> +</ipestyle> +<page> +<layer name="alpha"/> +<view layers="alpha" active="alpha"/> +<path layer="alpha" stroke="black" fill="lightblue"> +176 496 m +176 480 l +192 480 l +192 496 l +h +</path> +<text transformations="translations" pos="180 484" stroke="black" type="label" width="4.981" height="6.42" depth="0" valign="baseline">0</text> +<path stroke="black" fill="lightgreen"> +192 496 m +192 480 l +240 480 l +240 496 l +h +</path> +<text transformations="translations" pos="212 484" stroke="black" type="label" width="4.981" height="6.42" depth="0" valign="baseline">1</text> +<path matrix="1 0 0 1 64 0" stroke="black" fill="lightblue"> +176 496 m +176 480 l +192 480 l +192 496 l +h +</path> +<text matrix="1 0 0 1 64 0" transformations="translations" pos="180 484" stroke="black" type="label" width="4.981" height="6.42" depth="0" valign="baseline">2</text> +<path matrix="1 0 0 1 64 0" stroke="black" fill="lightgreen"> +192 496 m +192 480 l +240 480 l +240 496 l +h +</path> +<text matrix="1 0 0 1 64 0" transformations="translations" pos="212 484" stroke="black" type="label" width="4.981" height="6.42" depth="0" valign="baseline">3</text> +<path matrix="1 0 0 1 128 0" stroke="black" fill="lightblue"> +176 496 m +176 480 l +192 480 l +192 496 l +h +</path> +<text matrix="1 0 0 1 128 0" transformations="translations" pos="180 484" stroke="black" type="label" width="4.981" height="6.42" depth="0" valign="baseline">4</text> +<path matrix="1 0 0 1 128 0" stroke="black" fill="lightgreen"> +192 496 m +192 480 l +240 480 l +240 496 l +h +</path> +<text matrix="1 0 0 1 128 0" transformations="translations" pos="212 484" stroke="black" type="label" width="4.981" height="6.42" depth="0" valign="baseline">5</text> +<path matrix="1 0 0 1 192 0" stroke="black" fill="lightblue"> +176 496 m +176 480 l +192 480 l +192 496 l +h +</path> +<text matrix="1 0 0 1 192 0" transformations="translations" pos="180 484" stroke="black" type="label" width="4.981" height="6.42" depth="0" valign="baseline">6</text> +<path matrix="1 0 0 1 192 0" stroke="black" fill="lightgreen"> +192 496 m +192 480 l +240 480 l +240 496 l +h +</path> +<text matrix="1 0 0 1 192 0" transformations="translations" pos="212 484" stroke="black" type="label" width="4.981" height="6.42" depth="0" valign="baseline">7</text> +<path matrix="1 0 0 1 256 0" stroke="black" fill="lightblue"> +176 496 m +176 480 l +192 480 l +192 496 l +h +</path> +<text matrix="1 0 0 1 256 0" transformations="translations" pos="180 484" stroke="black" type="label" width="4.981" height="6.42" depth="0" valign="baseline">8</text> +<path matrix="1 0 0 1 0 -32" stroke="black" fill="lightblue"> +176 496 m +176 480 l +192 480 l +192 496 l +h +</path> +<text matrix="1 0 0 1 0 -48" transformations="translations" pos="180 484" stroke="black" type="label" width="4.981" height="6.42" depth="0" valign="baseline">1</text> +<path matrix="1 0 0 1 0 -32" stroke="black" fill="lightgreen"> +192 496 m +192 480 l +240 480 l +240 496 l +h +</path> +<path matrix="1 0 0 1 64 -32" stroke="black" fill="lightblue"> +176 496 m +176 480 l +192 480 l +192 496 l +h +</path> +<text matrix="1 0 0 1 64 -48" transformations="translations" pos="180 484" stroke="black" type="label" width="4.981" height="6.42" depth="0" valign="baseline">2</text> +<path matrix="1 0 0 1 64 -32" stroke="black" fill="lightgreen"> +192 496 m +192 480 l +240 480 l +240 496 l +h +</path> +<text matrix="1 0 0 1 96 -48" transformations="translations" pos="212 484" stroke="black" type="label" width="4.981" height="6.42" depth="0" valign="baseline">3</text> +<path matrix="1 0 0 1 128 -32" stroke="black" fill="lightblue"> +176 496 m +176 480 l +192 480 l +192 496 l +h +</path> +<text matrix="1 0 0 1 192 -48" transformations="translations" pos="180 484" stroke="black" type="label" width="4.981" height="6.42" depth="0" valign="baseline">4</text> +<path matrix="1 0 0 1 128 -32" stroke="black" fill="lightgreen"> +192 496 m +192 480 l +240 480 l +240 496 l +h +</path> +<text matrix="1 0 0 1 224 -48" transformations="translations" pos="212 484" stroke="black" type="label" width="4.981" height="6.42" depth="0" valign="baseline">5</text> +<path matrix="1 0 0 1 192 -32" stroke="black" fill="lightblue"> +176 496 m +176 480 l +192 480 l +192 496 l +h +</path> +<path matrix="1 0 0 1 192 -32" stroke="black" fill="lightgreen"> +192 496 m +192 480 l +240 480 l +240 496 l +h +</path> +<path matrix="1 0 0 1 256 -32" stroke="black" fill="lightblue"> +176 496 m +176 480 l +192 480 l +192 496 l +h +</path> +<path matrix="1 0 0 1 -32 0" stroke="black" fill="lightblue"> +176 496 m +176 480 l +192 480 l +192 496 l +h +</path> +<path stroke="black" fill="lightgreen"> +160 496 m +160 544 l +144 544 l +144 496 l +h +</path> +<path matrix="1 0 0 1 -32 64" stroke="black" fill="lightblue"> +176 496 m +176 480 l +192 480 l +192 496 l +h +</path> +<path matrix="1 0 0 1 0 64" stroke="black" fill="lightgreen"> +160 496 m +160 544 l +144 544 l +144 496 l +h +</path> +<path matrix="1 0 0 1 -32 128" stroke="black" fill="lightblue"> +176 496 m +176 480 l +192 480 l +192 496 l +h +</path> +<text transformations="translations" pos="132 484" stroke="black" type="label" width="4.981" height="6.42" depth="0" valign="baseline">1</text> +<text transformations="translations" pos="132 548" stroke="black" type="label" width="4.981" height="6.42" depth="0" valign="baseline">2</text> +<text transformations="translations" pos="132 612" stroke="black" type="label" width="4.981" height="6.42" depth="0" valign="baseline">3</text> +<path matrix="1 0 0 1 32 0" stroke="black" fill="lightgreen"> +160 496 m +160 544 l +144 544 l +144 496 l +h +</path> +<text transformations="translations" pos="180 516" stroke="black" type="label" width="4.981" height="6.42" depth="0" valign="baseline">9</text> +<path matrix="1 0 0 1 96 0" stroke="black" fill="lightgreen"> +160 496 m +160 544 l +144 544 l +144 496 l +h +</path> +<text transformations="translations" pos="244 516" stroke="black" type="label" width="9.963" height="6.42" depth="0" valign="baseline">11</text> +<path matrix="1 0 0 1 160 0" stroke="black" fill="lightgreen"> +160 496 m +160 544 l +144 544 l +144 496 l +h +</path> +<path matrix="1 0 0 1 224 0" stroke="black" fill="lightgreen"> +160 496 m +160 544 l +144 544 l +144 496 l +h +</path> +<path matrix="1 0 0 1 288 0" stroke="black" fill="lightgreen"> +160 496 m +160 544 l +144 544 l +144 496 l +h +</path> +<path matrix="1 0 0 1 0 64" stroke="black" fill="lightblue"> +176 496 m +176 480 l +192 480 l +192 496 l +h +</path> +<path matrix="1 0 0 1 0 64" stroke="black" fill="lightgreen"> +192 496 m +192 480 l +240 480 l +240 496 l +h +</path> +<path matrix="1 0 0 1 64 64" stroke="black" fill="lightblue"> +176 496 m +176 480 l +192 480 l +192 496 l +h +</path> +<path matrix="1 0 0 1 64 64" stroke="black" fill="lightgreen"> +192 496 m +192 480 l +240 480 l +240 496 l +h +</path> +<path matrix="1 0 0 1 128 64" stroke="black" fill="lightblue"> +176 496 m +176 480 l +192 480 l +192 496 l +h +</path> +<path matrix="1 0 0 1 128 64" stroke="black" fill="lightgreen"> +192 496 m +192 480 l +240 480 l +240 496 l +h +</path> +<path matrix="1 0 0 1 192 64" stroke="black" fill="lightblue"> +176 496 m +176 480 l +192 480 l +192 496 l +h +</path> +<path matrix="1 0 0 1 192 64" stroke="black" fill="lightgreen"> +192 496 m +192 480 l +240 480 l +240 496 l +h +</path> +<path matrix="1 0 0 1 256 64" stroke="black" fill="lightblue"> +176 496 m +176 480 l +192 480 l +192 496 l +h +</path> +<path matrix="1 0 0 1 0 128" stroke="black" fill="lightblue"> +176 496 m +176 480 l +192 480 l +192 496 l +h +</path> +<path matrix="1 0 0 1 0 128" stroke="black" fill="lightgreen"> +192 496 m +192 480 l +240 480 l +240 496 l +h +</path> +<path matrix="1 0 0 1 64 128" stroke="black" fill="lightblue"> +176 496 m +176 480 l +192 480 l +192 496 l +h +</path> +<path matrix="1 0 0 1 64 128" stroke="black" fill="lightgreen"> +192 496 m +192 480 l +240 480 l +240 496 l +h +</path> +<path matrix="1 0 0 1 128 128" stroke="black" fill="lightblue"> +176 496 m +176 480 l +192 480 l +192 496 l +h +</path> +<path matrix="1 0 0 1 128 128" stroke="black" fill="lightgreen"> +192 496 m +192 480 l +240 480 l +240 496 l +h +</path> +<path matrix="1 0 0 1 192 128" stroke="black" fill="lightblue"> +176 496 m +176 480 l +192 480 l +192 496 l +h +</path> +<path matrix="1 0 0 1 192 128" stroke="black" fill="lightgreen"> +192 496 m +192 480 l +240 480 l +240 496 l +h +</path> +<path matrix="1 0 0 1 256 128" stroke="black" fill="lightblue"> +176 496 m +176 480 l +192 480 l +192 496 l +h +</path> +<path matrix="1 0 0 1 32 64" stroke="black" fill="lightgreen"> +160 496 m +160 544 l +144 544 l +144 496 l +h +</path> +<path matrix="1 0 0 1 96 64" stroke="black" fill="lightgreen"> +160 496 m +160 544 l +144 544 l +144 496 l +h +</path> +<path matrix="1 0 0 1 160 64" stroke="black" fill="lightgreen"> +160 496 m +160 544 l +144 544 l +144 496 l +h +</path> +<path matrix="1 0 0 1 224 64" stroke="black" fill="lightgreen"> +160 496 m +160 544 l +144 544 l +144 496 l +h +</path> +<path matrix="1 0 0 1 288 64" stroke="black" fill="lightgreen"> +160 496 m +160 544 l +144 544 l +144 496 l +h +</path> +<path stroke="black" fill="lightgray"> +192 544 m +192 496 l +240 496 l +240 544 l +h +</path> +<path matrix="1 0 0 1 64 0" stroke="black" fill="lightgray"> +192 544 m +192 496 l +240 496 l +240 544 l +h +</path> +<path matrix="1 0 0 1 128 0" stroke="black" fill="lightgray"> +192 544 m +192 496 l +240 496 l +240 544 l +h +</path> +<path matrix="1 0 0 1 192 0" stroke="black" fill="lightgray"> +192 544 m +192 496 l +240 496 l +240 544 l +h +</path> +<path matrix="1 0 0 1 0 64" stroke="black" fill="lightgray"> +192 544 m +192 496 l +240 496 l +240 544 l +h +</path> +<path matrix="1 0 0 1 64 64" stroke="black" fill="lightgray"> +192 544 m +192 496 l +240 496 l +240 544 l +h +</path> +<path matrix="1 0 0 1 128 64" stroke="black" fill="lightgray"> +192 544 m +192 496 l +240 496 l +240 544 l +h +</path> +<path matrix="1 0 0 1 192 64" stroke="black" fill="lightgray"> +192 544 m +192 496 l +240 496 l +240 544 l +h +</path> +<text transformations="translations" pos="212 516" stroke="black" type="label" width="9.963" height="6.42" depth="0" valign="baseline">10</text> +<text transformations="translations" pos="276 516" stroke="black" type="label" width="9.963" height="6.42" depth="0" valign="baseline">12</text> +<text transformations="translations" pos="308 516" stroke="black" type="label" width="9.963" height="6.42" depth="0" valign="baseline">13</text> +<text transformations="translations" pos="340 516" stroke="black" type="label" width="9.963" height="6.42" depth="0" valign="baseline">14</text> +<text transformations="translations" pos="372 516" stroke="black" type="label" width="9.963" height="6.42" depth="0" valign="baseline">15</text> +<text transformations="translations" pos="404 516" stroke="black" type="label" width="9.963" height="6.42" depth="0" valign="baseline">16</text> +<text transformations="translations" pos="436 516" stroke="black" type="label" width="9.963" height="6.42" depth="0" valign="baseline">17</text> +<text transformations="translations" pos="180 548" stroke="black" type="label" width="9.963" height="6.42" depth="0" valign="baseline">18</text> +<text transformations="translations" pos="212 548" stroke="black" type="label" width="9.963" height="6.42" depth="0" valign="baseline">19</text> +<text transformations="translations" pos="244 548" stroke="black" type="label" width="9.963" height="6.42" depth="0" valign="baseline">20</text> +<text transformations="translations" pos="276 548" stroke="black" type="label" width="9.963" height="6.42" depth="0" valign="baseline">21</text> +<text transformations="translations" pos="308 548" stroke="black" type="label" width="9.963" height="6.42" depth="0" valign="baseline">22</text> +<text transformations="translations" pos="340 548" stroke="black" type="label" width="9.963" height="6.42" depth="0" valign="baseline">23</text> +<text transformations="translations" pos="372 548" stroke="black" type="label" width="9.963" height="6.42" depth="0" valign="baseline">24</text> +<text transformations="translations" pos="404 548" stroke="black" type="label" width="9.963" height="6.42" depth="0" valign="baseline">25</text> +<text transformations="translations" pos="436 548" stroke="black" type="label" width="9.963" height="6.42" depth="0" valign="baseline">26</text> +<text transformations="translations" pos="180 580" stroke="black" type="label" width="9.963" height="6.42" depth="0" valign="baseline">27</text> +<text transformations="translations" pos="212 580" stroke="black" type="label" width="9.963" height="6.42" depth="0" valign="baseline">28</text> +<text transformations="translations" pos="244 580" stroke="black" type="label" width="9.963" height="6.42" depth="0" valign="baseline">29</text> +<text transformations="translations" pos="276 580" stroke="black" type="label" width="9.963" height="6.42" depth="0" valign="baseline">30</text> +<text transformations="translations" pos="308 580" stroke="black" type="label" width="9.963" height="6.42" depth="0" valign="baseline">31</text> +<text transformations="translations" pos="340 580" stroke="black" type="label" width="9.963" height="6.42" depth="0" valign="baseline">32</text> +<text transformations="translations" pos="372 580" stroke="black" type="label" width="9.963" height="6.42" depth="0" valign="baseline">33</text> +<text transformations="translations" pos="404 580" stroke="black" type="label" width="9.963" height="6.42" depth="0" valign="baseline">34</text> +<text transformations="translations" pos="436 580" stroke="black" type="label" width="9.963" height="6.42" depth="0" valign="baseline">35</text> +<text transformations="translations" pos="180 612" stroke="black" type="label" width="9.963" height="6.42" depth="0" valign="baseline">36</text> +<text transformations="translations" pos="212 612" stroke="black" type="label" width="9.963" height="6.42" depth="0" valign="baseline">37</text> +<text transformations="translations" pos="244 612" stroke="black" type="label" width="9.963" height="6.42" depth="0" valign="baseline">38</text> +<text transformations="translations" pos="276 612" stroke="black" type="label" width="9.963" height="6.42" depth="0" valign="baseline">39</text> +<text transformations="translations" pos="308 612" stroke="black" type="label" width="9.963" height="6.42" depth="0" valign="baseline">40</text> +<text transformations="translations" pos="340 612" stroke="black" type="label" width="9.963" height="6.42" depth="0" valign="baseline">41</text> +<text transformations="translations" pos="372 612" stroke="black" type="label" width="9.963" height="6.42" depth="0" valign="baseline">42</text> +<text transformations="translations" pos="404 612" stroke="black" type="label" width="9.963" height="6.42" depth="0" valign="baseline">43</text> +<text transformations="translations" pos="436 612" stroke="black" type="label" width="9.963" height="6.42" depth="0" valign="baseline">44</text> +<path stroke="black" arrow="normal/normal"> +152 456 m +472 456 l +</path> +<path stroke="black" arrow="normal/normal"> +152 456 m +152 648 l +</path> +</page> +</ipe> diff --git a/doc/Bitmap_cubical_complex/Cubical_complex_representation.png b/doc/Bitmap_cubical_complex/Cubical_complex_representation.png Binary files differnew file mode 100644 index 00000000..afb2a75e --- /dev/null +++ b/doc/Bitmap_cubical_complex/Cubical_complex_representation.png diff --git a/doc/Bitmap_cubical_complex/Gudhi_Cubical_Complex_doc.h b/doc/Bitmap_cubical_complex/Gudhi_Cubical_Complex_doc.h new file mode 100644 index 00000000..4c9c04d9 --- /dev/null +++ b/doc/Bitmap_cubical_complex/Gudhi_Cubical_Complex_doc.h @@ -0,0 +1,159 @@ +/* This file is part of the Gudhi Library. The Gudhi library + * (Geometric Understanding in Higher Dimensions) is a generic C++ + * library for computational topology. + * + * Author(s): Pawel Dlotko + * + * Copyright (C) 2015 INRIA Sophia-Saclay (France) + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU 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/>. + */ + + +#ifndef DOC_GUDHI_CUBICAL_COMPLEX_COMPLEX_H_ +#define DOC_GUDHI_CUBICAL_COMPLEX_COMPLEX_H_ + +namespace Gudhi { + +namespace cubical_complex { + +/** \defgroup cubical_complex Cubical complex + * + * \author Pawel Dlotko + * + * @{ + * + + * Bitmap_cubical_complex is an example of a structured complex useful in computational mathematics (specially rigorous + * numerics) and image analysis. The presented implementation of cubical complexes is based on the following + * definition. + * + * An <em>elementary interval</em> is an interval of a form \f$ [n,n+1] \f$, or \f$[n,n]\f$, for \f$ n \in \mathcal{Z} + * \f$. The first one is called <em>non-degenerate</em>, while the second one is \a degenerate interval. A + * <em>boundary of a elementary interval</em> is a chain \f$\partial [n,n+1] = [n+1,n+1]-[n,n] \f$ in case of + * non-degenerated elementary interval and \f$\partial [n,n] = 0 \f$ in case of degenerate elementary interval. An + * <em>elementary cube</em> \f$ C \f$ is a product of elementary intervals, \f$C=I_1 \times \ldots \times I_n\f$. + * <em>Embedding dimension</em> of a cube is n, the number of elementary intervals (degenerate or not) in the product. + * A <em>dimension of a cube</em> \f$C=I_1 \times ... \times I_n\f$ is the number of non degenerate elementary + * intervals in the product. A <em>boundary of a cube</em> \f$C=I_1 \times \ldots \times I_n\f$ is a chain obtained + * in the following way: + * \f[\partial C = (\partial I_1 \times \ldots \times I_n) + (I_1 \times \partial I_2 \times \ldots \times I_n) + + * \ldots + (I_1 \times I_2 \times \ldots \times \partial I_n).\f] + * A <em>cubical complex</em> \f$\mathcal{K}\f$ is a collection of cubes closed under operation of taking boundary + * (i.e. boundary of every cube from the collection is in the collection). A cube \f$C\f$ in cubical complex + * \f$\mathcal{K}\f$ is <em>maximal</em> if it is not in a boundary of any other cube in \f$\mathcal{K}\f$. A \a + * support of a cube \f$C\f$ is the set in \f$\mathbb{R}^n\f$ occupied by \f$C\f$ (\f$n\f$ is the embedding dimension + * of \f$C\f$). + * + * Cubes may be equipped with a filtration values in which case we have filtered cubical complex. All the cubical + * complexes considered in this implementation are filtered cubical complexes (although, the range of a filtration may + * be a set of two elements). + * + * For further details and theory of cubical complexes, please consult \cite kaczynski2004computational as well as the + * following paper \cite peikert2012topological . + * + * \section datastructure Data structure. + * + * The implementation of Cubical complex provides a representation of complexes that occupy a rectangular region in + * \f$\mathbb{R}^n\f$. This extra assumption allows for a memory efficient way of storing cubical complexes in a form + * of so called bitmaps. Let \f$R = [b_1,e_1] \times \ldots \times [b_n,e_n]\f$, for \f$b_1,...b_n,e_1,...,e_n \in + * \mathbb{Z}\f$, \f$b_i \leq d_i\f$ be the considered rectangular region and let \f$\mathcal{K}\f$ be a filtered + * cubical complex having the rectangle \f$R\f$ as its support. Note that the structure of the coordinate system gives + * a way a lexicographical ordering of cells of \f$\mathcal{K}\f$. This ordering is a base of the presented + * bitmap-based implementation. In this implementation, the whole cubical complex is stored as a vector of the values + * of filtration. This, together with dimension of \f$\mathcal{K}\f$ and the sizes of \f$\mathcal{K}\f$ in all + * directions, allows to determine, dimension, neighborhood, boundary and coboundary of every cube \f$C \in + * \mathcal{K}\f$. + * + * \image html "Cubical_complex_representation.png" Cubical complex. + * + * Note that the cubical complex in the figure above is, in a natural way, a product of one dimensional cubical + * complexes in \f$\mathbb{R}\f$. The number of all cubes in each direction is equal \f$2n+1\f$, where \f$n\f$ is the + * number of maximal cubes in the considered direction. Let us consider a cube at the position \f$k\f$ in the bitmap. + * Knowing the sizes of the bitmap, by a series of modulo operation, we can determine which elementary intervals are + * present in the product that gives the cube \f$C\f$. In a similar way, we can compute boundary and the coboundary of + * each cube. Further details can be found in the literature. + * + * \section inputformat Input Format. + * + * In the current implantation, filtration is given at the maximal cubes, and it is then extended by the lower star + * filtration to all cubes. There are a number of constructors that can be used to construct cubical complex by users + * who want to use the code directly. They can be found in the \a Bitmap_cubical_complex class. + * Currently one input from a text file is used. It uses a format used already in Perseus software + * (http://www.sas.upenn.edu/~vnanda/perseus/) by Vidit Nanda. + * Below we are providing a description of the format. The first line contains a number d begin the dimension of the + * bitmap (2 in the example below). Next d lines are the numbers of top dimensional cubes in each dimensions (3 and 3 + * in the example below). Next, in lexicographical order, the filtration of top dimensional cubes is given (1 4 6 8 + * 20 4 7 6 5 in the example below). + * + * + * \image html "exampleBitmap.png" "Example of a input data." + * + * The input file for the following complex is: + * \verbatim +2 +3 +3 +1 +4 +6 +8 +20 +4 +7 +6 +5 +\endverbatim + + * \section PeriodicBoundaryConditions Periodic boundary conditions + * Often one would like to impose periodic boundary conditions to the cubical complex. Let \f$ I_1\times ... \times + * I_n \f$ be a box that is decomposed with a cubical complex \f$ \mathcal{K} \f$. Imposing periodic boundary + * conditions in the direction i, means that the left and the right side of a complex \f$ \mathcal{K} \f$ are + * considered the same. In particular, if for a bitmap \f$ \mathcal{K} \f$ periodic boundary conditions are imposed + * in all directions, then complex \f$ \mathcal{K} \f$ became n-dimensional torus. One can use various constructors + * from the file Bitmap_cubical_complex_periodic_boundary_conditions_base.h to construct cubical complex with periodic + * boundary conditions. One can also use Perseus style input files. To indicate periodic boundary conditions in a + * given direction, then number of top dimensional cells in this direction have to be multiplied by -1. For instance: + + *\verbatim +2 +-3 +3 +1 +4 +6 +8 +20 +4 +7 +6 +5 +\endverbatim + + * Indicate that we have imposed periodic boundary conditions in the direction x, but not in the direction y. + + * \section BitmapExamples Examples + * End user programs are available in example/Bitmap_cubical_complex folder. + * + * \copyright GNU General Public License v3. + */ +/** @} */ // end defgroup cubical_complex + +} // namespace cubical_complex + +namespace Cubical_complex = cubical_complex; + +} // namespace Gudhi + +#endif // DOC_GUDHI_CUBICAL_COMPLEX_COMPLEX_H_ diff --git a/doc/Bitmap_cubical_complex/bitmapAllCubes.png b/doc/Bitmap_cubical_complex/bitmapAllCubes.png Binary files differnew file mode 100644 index 00000000..77167b13 --- /dev/null +++ b/doc/Bitmap_cubical_complex/bitmapAllCubes.png diff --git a/doc/Bitmap_cubical_complex/exampleBitmap.png b/doc/Bitmap_cubical_complex/exampleBitmap.png Binary files differnew file mode 100644 index 00000000..069c6eb2 --- /dev/null +++ b/doc/Bitmap_cubical_complex/exampleBitmap.png |