├── figs ├── sfs2d ├── bk.jpg ├── me.jpg ├── 2dcc.pdf ├── agg2.pdf ├── aula.jpg ├── axes.pdf ├── brep.pdf ├── csg.jpg ├── cube.jpg ├── dpm1.pdf ├── dpm2.pdf ├── dpm3.pdf ├── gml.pdf ├── hole.jpg ├── ifc.jpg ├── line.pdf ├── loop.pdf ├── mug.jpg ├── quad.jpg ├── sfs.pdf ├── snc.pdf ├── utm.jpg ├── utm2.jpg ├── 0-cell.pdf ├── 16tiles.jpg ├── 2d+time.jpg ├── 2tetra.pdf ├── 3-sew.pdf ├── 4dhouse.jpg ├── annulus.pdf ├── atkis.jpg ├── aula-1.png ├── aula-2.jpg ├── axes-es.pdf ├── axes-nl.pdf ├── barcode.pdf ├── bksep.png ├── boolean.jpg ├── campus.jpg ├── citygml.pdf ├── cmap-3d.jpg ├── corine.png ├── donut.jpg ├── frustum.jpg ├── ifc-1.png ├── ifc-2.jpg ├── ioh-1.jpg ├── ioh-2.jpg ├── ioh-3.jpg ├── ioh-4.jpg ├── ioh-5.jpg ├── ioh-6.jpg ├── link1.pdf ├── link2.pdf ├── nef-1.pdf ├── nef-2.pdf ├── oddeven.pdf ├── ortho.jpg ├── point.pdf ├── shape.pdf ├── simplex.jpg ├── stack-0.jpg ├── stack-1.jpg ├── stack-2.jpg ├── stack-3.jpg ├── stack-4.jpg ├── stack-5.jpg ├── stack-6.jpg ├── torus.jpg ├── vmap-1.pdf ├── vmap-2.pdf ├── wigwam.jpg ├── 0-simplex.pdf ├── 2d+scale.jpg ├── 2dcc-gmap.pdf ├── 3dgeoinfo.pdf ├── 3dtop10nl.jpg ├── aluminum.jpg ├── blocks-1.pdf ├── blocks-2.pdf ├── bridge-1.pdf ├── bridge-2.pdf ├── cmap-free.pdf ├── exsimple.pdf ├── flatland.jpg ├── futurama.jpg ├── halfspace.pdf ├── intervals.pdf ├── ioh-steps.jpg ├── iso-brep.pdf ├── jenn-cube.jpg ├── pointset.pdf ├── polyline.pdf ├── prepair-1.png ├── prepair-2.png ├── prepair-3.png ├── prepair-4.png ├── scale3d2.jpg ├── spaghetti.pdf ├── st_events.pdf ├── tesseract.jpg ├── tesseract.pdf ├── trig-pers.pdf ├── wireframe.jpg ├── 0-cell-star.pdf ├── 1-cell-star.pdf ├── 2dcc-alphas.pdf ├── 2dcc-betas.pdf ├── 2tetra-map.pdf ├── Frauenkirche.jpg ├── aula-moved.jpg ├── aula-rotated.jpg ├── aula-scaled.jpg ├── aula4d-ends.jpg ├── aula4d-sides.jpg ├── campusdarts.jpg ├── cellscampus.jpg ├── conic-circle.jpg ├── dual_gmap1.pdf ├── dual_gmap2.pdf ├── dual_gmap3.pdf ├── dual_gmap4.pdf ├── extrusion-1.jpg ├── extrusion-2.jpg ├── faceplanes-1.jpg ├── faceplanes-2.jpg ├── facet-edge.pdf ├── halfedge-1.pdf ├── halfedge-2.pdf ├── halfedge-3.pdf ├── halfspace-1.pdf ├── halfspace-2.pdf ├── halfspaces.jpg ├── hole-bridge.jpg ├── hole-split.jpg ├── intervals-1.jpg ├── intervals-2.jpg ├── ioh-diff-o.jpg ├── ioh-diff-w.jpg ├── ioh-diff-wo.jpg ├── jenn-24-cell.jpg ├── konigsberg.jpg ├── konigsberg.pdf ├── link1_filled.pdf ├── nonmanifold.jpg ├── part-arcgis.png ├── part-grass.png ├── schoenhardt1.jpg ├── schoenhardt2.jpg ├── snapping-1.jpg ├── snapping-2.jpg ├── st_snapshot.pdf ├── stereo-earth.jpg ├── tesseract2.pdf ├── tesseract3.pdf ├── triangle-1.pdf ├── triangle-2.pdf ├── trig-ortho.pdf ├── unitopendisk.pdf ├── unitpolygons.jpg ├── volumetric.jpg ├── wireframe-1.jpg ├── wireframe-2.jpg ├── wireframe-3.jpg ├── 1-simplex-star.pdf ├── SlicingPrism2D.pdf ├── aula-collapse.jpg ├── aula-extruded.jpg ├── boolean-union.jpg ├── campusextruded.jpg ├── citygml-filip.jpg ├── conic-ellipse.jpg ├── conic-parabola.jpg ├── facet-edge-ops.pdf ├── interioralgos.pdf ├── ioh-equiangle.jpg ├── iso-cell-brep.pdf ├── iso-composites.pdf ├── linkingscheme1.pdf ├── linkingscheme2.pdf ├── linkingscheme3.pdf ├── linkingscheme4.pdf ├── nef-boolean-1.pdf ├── nef-boolean-2.pdf ├── nonmanifold-0.pdf ├── nonmanifold-1.pdf ├── nonmanifold-2.pdf ├── nonzerowinding.pdf ├── polygon-model.pdf ├── ps_hexahedron.jpg ├── ps_icosahedron.jpg ├── ps_octahedron.jpg ├── ps_tetrahedron.jpg ├── space-filling.jpg ├── threshold-gap.pdf ├── trianglestrip.pdf ├── 0-cell-embedding.jpg ├── 1-cell-boundary.pdf ├── 2-cell-boundary.pdf ├── 4DslicingHouses.pdf ├── aula4d-top-bottom.jpg ├── blockscomplex-1.jpg ├── blockscomplex-2.jpg ├── cellcomplex-cells.pdf ├── cmap-3d-vertices.jpg ├── cmaps-simplices.pdf ├── conic-hyperbola.jpg ├── darts-of-cell-1.pdf ├── darts-of-cell-2.pdf ├── extrusion-steps.pdf ├── generalisation2.jpg ├── generalisation3.png ├── gmaps-simplices.pdf ├── iso-compositecell.pdf ├── pascal-triangle.pdf ├── pprepair-method-a.png ├── pprepair-method-b.png ├── pprepair-method-c.png ├── pprepair-method-d.png ├── ps_dodecahedron.jpg ├── reconstruction-0.pdf ├── reconstruction-2.jpg ├── simple-tesseract.pdf ├── simplicescampus.jpg ├── tesseract-tests-1.jpg ├── tesseract-tests-2.jpg ├── tesseract-tests-3.jpg ├── threshold-overlap.pdf ├── trianglecomplex-1.pdf ├── trianglecomplex-2.pdf ├── vertex-simplices.pdf ├── 0-cell-double-star.pdf ├── 1-simplex-boundary.pdf ├── 2-simplex-adjacency.pdf ├── 2-simplex-boundary.pdf ├── 2-simplex-vertices.pdf ├── 2tetra-before-3sew.pdf ├── aula-edge-collapse.jpg ├── boolean-difference.jpg ├── cmaps-orientation-1.pdf ├── cmaps-orientation-2.pdf ├── construction-faces.jpg ├── gmaps-3d-simplices.pdf ├── pprepair-workflow-a.jpg ├── pprepair-workflow-b.pdf ├── pprepair-workflow-c.pdf ├── pprepair-workflow-d.pdf ├── pprepair-workflow-e.pdf ├── pprepair-workflow-f.pdf ├── prepair-workflow-1.pdf ├── prepair-workflow-2.pdf ├── prepair-workflow-3.pdf ├── prepair-workflow-4.pdf ├── prepair-workflow-5.pdf ├── quad-edge-algebra-1.pdf ├── quad-edge-algebra-2.pdf ├── reconstruction-2-a.jpg ├── reconstruction-2-b.jpg ├── reconstruction-2-c.jpg ├── reconstruction-2-d.jpg ├── reconstruction-2-e.jpg ├── reconstruction-2-f.jpg ├── reconstruction-2-g.jpg ├── reconstruction-3-a.jpg ├── reconstruction-3-b.pdf ├── simple-tesseract-fp.pdf ├── SlicingPrism2DResult.pdf ├── boolean-intersection.jpg ├── cellcomplex-polygons.pdf ├── construction-vertices.jpg ├── construction-volumes.jpg ├── hole-split-structure.jpg ├── intersectingintervals.pdf ├── scheduling-perspective.jpg ├── scheduling-orthographic.jpg ├── sfs3d ├── templateconversion.txt ├── points.cpp ├── extrudedlcc.txt ├── dimensionindependent.txt ├── construction.cpp ├── manifoldvalidation.txt └── sfs4d ├── cover-back.pdf ├── cover-front.pdf ├── invitation.png ├── README.md ├── .gitignore ├── cv.tex ├── propositions.tex ├── summary.txt ├── pre.tex ├── LICENSE ├── preface.tex ├── dictionary.tex ├── implementation.tex ├── introduction.tex ├── summary.tex └── thesis.tex /figs/sfs2d: -------------------------------------------------------------------------------- 1 | [[0, 0], [0, 1], [1, 1], [1, 0], [0, 0]] -------------------------------------------------------------------------------- /figs/bk.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kenohori/thesis/HEAD/figs/bk.jpg -------------------------------------------------------------------------------- /figs/me.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kenohori/thesis/HEAD/figs/me.jpg -------------------------------------------------------------------------------- /figs/2dcc.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kenohori/thesis/HEAD/figs/2dcc.pdf -------------------------------------------------------------------------------- /figs/agg2.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kenohori/thesis/HEAD/figs/agg2.pdf -------------------------------------------------------------------------------- /figs/aula.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kenohori/thesis/HEAD/figs/aula.jpg -------------------------------------------------------------------------------- /figs/axes.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kenohori/thesis/HEAD/figs/axes.pdf -------------------------------------------------------------------------------- /figs/brep.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kenohori/thesis/HEAD/figs/brep.pdf -------------------------------------------------------------------------------- /figs/csg.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kenohori/thesis/HEAD/figs/csg.jpg -------------------------------------------------------------------------------- /figs/cube.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kenohori/thesis/HEAD/figs/cube.jpg -------------------------------------------------------------------------------- /figs/dpm1.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kenohori/thesis/HEAD/figs/dpm1.pdf -------------------------------------------------------------------------------- /figs/dpm2.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kenohori/thesis/HEAD/figs/dpm2.pdf -------------------------------------------------------------------------------- /figs/dpm3.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kenohori/thesis/HEAD/figs/dpm3.pdf -------------------------------------------------------------------------------- /figs/gml.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kenohori/thesis/HEAD/figs/gml.pdf -------------------------------------------------------------------------------- /figs/hole.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kenohori/thesis/HEAD/figs/hole.jpg -------------------------------------------------------------------------------- /figs/ifc.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kenohori/thesis/HEAD/figs/ifc.jpg -------------------------------------------------------------------------------- /figs/line.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kenohori/thesis/HEAD/figs/line.pdf -------------------------------------------------------------------------------- /figs/loop.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kenohori/thesis/HEAD/figs/loop.pdf -------------------------------------------------------------------------------- /figs/mug.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kenohori/thesis/HEAD/figs/mug.jpg -------------------------------------------------------------------------------- /figs/quad.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kenohori/thesis/HEAD/figs/quad.jpg -------------------------------------------------------------------------------- /figs/sfs.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kenohori/thesis/HEAD/figs/sfs.pdf -------------------------------------------------------------------------------- /figs/snc.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kenohori/thesis/HEAD/figs/snc.pdf -------------------------------------------------------------------------------- /figs/utm.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kenohori/thesis/HEAD/figs/utm.jpg -------------------------------------------------------------------------------- /figs/utm2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kenohori/thesis/HEAD/figs/utm2.jpg -------------------------------------------------------------------------------- /cover-back.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kenohori/thesis/HEAD/cover-back.pdf -------------------------------------------------------------------------------- /cover-front.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kenohori/thesis/HEAD/cover-front.pdf -------------------------------------------------------------------------------- /figs/0-cell.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kenohori/thesis/HEAD/figs/0-cell.pdf -------------------------------------------------------------------------------- /figs/16tiles.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kenohori/thesis/HEAD/figs/16tiles.jpg -------------------------------------------------------------------------------- /figs/2d+time.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kenohori/thesis/HEAD/figs/2d+time.jpg -------------------------------------------------------------------------------- /figs/2tetra.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kenohori/thesis/HEAD/figs/2tetra.pdf -------------------------------------------------------------------------------- /figs/3-sew.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kenohori/thesis/HEAD/figs/3-sew.pdf -------------------------------------------------------------------------------- /figs/4dhouse.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kenohori/thesis/HEAD/figs/4dhouse.jpg -------------------------------------------------------------------------------- /figs/annulus.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kenohori/thesis/HEAD/figs/annulus.pdf -------------------------------------------------------------------------------- /figs/atkis.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kenohori/thesis/HEAD/figs/atkis.jpg -------------------------------------------------------------------------------- /figs/aula-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kenohori/thesis/HEAD/figs/aula-1.png -------------------------------------------------------------------------------- /figs/aula-2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kenohori/thesis/HEAD/figs/aula-2.jpg -------------------------------------------------------------------------------- /figs/axes-es.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kenohori/thesis/HEAD/figs/axes-es.pdf -------------------------------------------------------------------------------- /figs/axes-nl.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kenohori/thesis/HEAD/figs/axes-nl.pdf -------------------------------------------------------------------------------- /figs/barcode.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kenohori/thesis/HEAD/figs/barcode.pdf -------------------------------------------------------------------------------- /figs/bksep.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kenohori/thesis/HEAD/figs/bksep.png -------------------------------------------------------------------------------- /figs/boolean.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kenohori/thesis/HEAD/figs/boolean.jpg -------------------------------------------------------------------------------- /figs/campus.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kenohori/thesis/HEAD/figs/campus.jpg -------------------------------------------------------------------------------- /figs/citygml.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kenohori/thesis/HEAD/figs/citygml.pdf -------------------------------------------------------------------------------- /figs/cmap-3d.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kenohori/thesis/HEAD/figs/cmap-3d.jpg -------------------------------------------------------------------------------- /figs/corine.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kenohori/thesis/HEAD/figs/corine.png -------------------------------------------------------------------------------- /figs/donut.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kenohori/thesis/HEAD/figs/donut.jpg -------------------------------------------------------------------------------- /figs/frustum.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kenohori/thesis/HEAD/figs/frustum.jpg -------------------------------------------------------------------------------- /figs/ifc-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kenohori/thesis/HEAD/figs/ifc-1.png -------------------------------------------------------------------------------- /figs/ifc-2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kenohori/thesis/HEAD/figs/ifc-2.jpg -------------------------------------------------------------------------------- /figs/ioh-1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kenohori/thesis/HEAD/figs/ioh-1.jpg -------------------------------------------------------------------------------- /figs/ioh-2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kenohori/thesis/HEAD/figs/ioh-2.jpg -------------------------------------------------------------------------------- /figs/ioh-3.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kenohori/thesis/HEAD/figs/ioh-3.jpg -------------------------------------------------------------------------------- /figs/ioh-4.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kenohori/thesis/HEAD/figs/ioh-4.jpg -------------------------------------------------------------------------------- /figs/ioh-5.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kenohori/thesis/HEAD/figs/ioh-5.jpg -------------------------------------------------------------------------------- /figs/ioh-6.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kenohori/thesis/HEAD/figs/ioh-6.jpg -------------------------------------------------------------------------------- /figs/link1.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kenohori/thesis/HEAD/figs/link1.pdf -------------------------------------------------------------------------------- /figs/link2.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kenohori/thesis/HEAD/figs/link2.pdf -------------------------------------------------------------------------------- /figs/nef-1.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kenohori/thesis/HEAD/figs/nef-1.pdf -------------------------------------------------------------------------------- /figs/nef-2.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kenohori/thesis/HEAD/figs/nef-2.pdf -------------------------------------------------------------------------------- /figs/oddeven.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kenohori/thesis/HEAD/figs/oddeven.pdf -------------------------------------------------------------------------------- /figs/ortho.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kenohori/thesis/HEAD/figs/ortho.jpg -------------------------------------------------------------------------------- /figs/point.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kenohori/thesis/HEAD/figs/point.pdf -------------------------------------------------------------------------------- /figs/shape.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kenohori/thesis/HEAD/figs/shape.pdf -------------------------------------------------------------------------------- /figs/simplex.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kenohori/thesis/HEAD/figs/simplex.jpg -------------------------------------------------------------------------------- /figs/stack-0.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kenohori/thesis/HEAD/figs/stack-0.jpg -------------------------------------------------------------------------------- /figs/stack-1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kenohori/thesis/HEAD/figs/stack-1.jpg -------------------------------------------------------------------------------- /figs/stack-2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kenohori/thesis/HEAD/figs/stack-2.jpg -------------------------------------------------------------------------------- /figs/stack-3.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kenohori/thesis/HEAD/figs/stack-3.jpg -------------------------------------------------------------------------------- /figs/stack-4.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kenohori/thesis/HEAD/figs/stack-4.jpg -------------------------------------------------------------------------------- /figs/stack-5.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kenohori/thesis/HEAD/figs/stack-5.jpg -------------------------------------------------------------------------------- /figs/stack-6.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kenohori/thesis/HEAD/figs/stack-6.jpg -------------------------------------------------------------------------------- /figs/torus.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kenohori/thesis/HEAD/figs/torus.jpg -------------------------------------------------------------------------------- /figs/vmap-1.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kenohori/thesis/HEAD/figs/vmap-1.pdf -------------------------------------------------------------------------------- /figs/vmap-2.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kenohori/thesis/HEAD/figs/vmap-2.pdf -------------------------------------------------------------------------------- /figs/wigwam.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kenohori/thesis/HEAD/figs/wigwam.jpg -------------------------------------------------------------------------------- /invitation.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kenohori/thesis/HEAD/invitation.png -------------------------------------------------------------------------------- /figs/0-simplex.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kenohori/thesis/HEAD/figs/0-simplex.pdf -------------------------------------------------------------------------------- /figs/2d+scale.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kenohori/thesis/HEAD/figs/2d+scale.jpg -------------------------------------------------------------------------------- /figs/2dcc-gmap.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kenohori/thesis/HEAD/figs/2dcc-gmap.pdf -------------------------------------------------------------------------------- /figs/3dgeoinfo.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kenohori/thesis/HEAD/figs/3dgeoinfo.pdf -------------------------------------------------------------------------------- /figs/3dtop10nl.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kenohori/thesis/HEAD/figs/3dtop10nl.jpg -------------------------------------------------------------------------------- /figs/aluminum.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kenohori/thesis/HEAD/figs/aluminum.jpg -------------------------------------------------------------------------------- /figs/blocks-1.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kenohori/thesis/HEAD/figs/blocks-1.pdf -------------------------------------------------------------------------------- /figs/blocks-2.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kenohori/thesis/HEAD/figs/blocks-2.pdf -------------------------------------------------------------------------------- /figs/bridge-1.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kenohori/thesis/HEAD/figs/bridge-1.pdf -------------------------------------------------------------------------------- /figs/bridge-2.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kenohori/thesis/HEAD/figs/bridge-2.pdf -------------------------------------------------------------------------------- /figs/cmap-free.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kenohori/thesis/HEAD/figs/cmap-free.pdf -------------------------------------------------------------------------------- /figs/exsimple.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kenohori/thesis/HEAD/figs/exsimple.pdf -------------------------------------------------------------------------------- /figs/flatland.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kenohori/thesis/HEAD/figs/flatland.jpg -------------------------------------------------------------------------------- /figs/futurama.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kenohori/thesis/HEAD/figs/futurama.jpg -------------------------------------------------------------------------------- /figs/halfspace.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kenohori/thesis/HEAD/figs/halfspace.pdf -------------------------------------------------------------------------------- /figs/intervals.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kenohori/thesis/HEAD/figs/intervals.pdf -------------------------------------------------------------------------------- /figs/ioh-steps.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kenohori/thesis/HEAD/figs/ioh-steps.jpg -------------------------------------------------------------------------------- /figs/iso-brep.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kenohori/thesis/HEAD/figs/iso-brep.pdf -------------------------------------------------------------------------------- /figs/jenn-cube.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kenohori/thesis/HEAD/figs/jenn-cube.jpg -------------------------------------------------------------------------------- /figs/pointset.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kenohori/thesis/HEAD/figs/pointset.pdf -------------------------------------------------------------------------------- /figs/polyline.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kenohori/thesis/HEAD/figs/polyline.pdf -------------------------------------------------------------------------------- /figs/prepair-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kenohori/thesis/HEAD/figs/prepair-1.png -------------------------------------------------------------------------------- /figs/prepair-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kenohori/thesis/HEAD/figs/prepair-2.png -------------------------------------------------------------------------------- /figs/prepair-3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kenohori/thesis/HEAD/figs/prepair-3.png -------------------------------------------------------------------------------- /figs/prepair-4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kenohori/thesis/HEAD/figs/prepair-4.png -------------------------------------------------------------------------------- /figs/scale3d2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kenohori/thesis/HEAD/figs/scale3d2.jpg -------------------------------------------------------------------------------- /figs/spaghetti.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kenohori/thesis/HEAD/figs/spaghetti.pdf -------------------------------------------------------------------------------- /figs/st_events.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kenohori/thesis/HEAD/figs/st_events.pdf -------------------------------------------------------------------------------- /figs/tesseract.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kenohori/thesis/HEAD/figs/tesseract.jpg -------------------------------------------------------------------------------- /figs/tesseract.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kenohori/thesis/HEAD/figs/tesseract.pdf -------------------------------------------------------------------------------- /figs/trig-pers.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kenohori/thesis/HEAD/figs/trig-pers.pdf -------------------------------------------------------------------------------- /figs/wireframe.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kenohori/thesis/HEAD/figs/wireframe.jpg -------------------------------------------------------------------------------- /figs/0-cell-star.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kenohori/thesis/HEAD/figs/0-cell-star.pdf -------------------------------------------------------------------------------- /figs/1-cell-star.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kenohori/thesis/HEAD/figs/1-cell-star.pdf -------------------------------------------------------------------------------- /figs/2dcc-alphas.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kenohori/thesis/HEAD/figs/2dcc-alphas.pdf -------------------------------------------------------------------------------- /figs/2dcc-betas.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kenohori/thesis/HEAD/figs/2dcc-betas.pdf -------------------------------------------------------------------------------- /figs/2tetra-map.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kenohori/thesis/HEAD/figs/2tetra-map.pdf -------------------------------------------------------------------------------- /figs/Frauenkirche.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kenohori/thesis/HEAD/figs/Frauenkirche.jpg -------------------------------------------------------------------------------- /figs/aula-moved.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kenohori/thesis/HEAD/figs/aula-moved.jpg -------------------------------------------------------------------------------- /figs/aula-rotated.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kenohori/thesis/HEAD/figs/aula-rotated.jpg -------------------------------------------------------------------------------- /figs/aula-scaled.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kenohori/thesis/HEAD/figs/aula-scaled.jpg -------------------------------------------------------------------------------- /figs/aula4d-ends.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kenohori/thesis/HEAD/figs/aula4d-ends.jpg -------------------------------------------------------------------------------- /figs/aula4d-sides.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kenohori/thesis/HEAD/figs/aula4d-sides.jpg -------------------------------------------------------------------------------- /figs/campusdarts.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kenohori/thesis/HEAD/figs/campusdarts.jpg -------------------------------------------------------------------------------- /figs/cellscampus.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kenohori/thesis/HEAD/figs/cellscampus.jpg -------------------------------------------------------------------------------- /figs/conic-circle.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kenohori/thesis/HEAD/figs/conic-circle.jpg -------------------------------------------------------------------------------- /figs/dual_gmap1.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kenohori/thesis/HEAD/figs/dual_gmap1.pdf -------------------------------------------------------------------------------- /figs/dual_gmap2.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kenohori/thesis/HEAD/figs/dual_gmap2.pdf -------------------------------------------------------------------------------- /figs/dual_gmap3.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kenohori/thesis/HEAD/figs/dual_gmap3.pdf -------------------------------------------------------------------------------- /figs/dual_gmap4.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kenohori/thesis/HEAD/figs/dual_gmap4.pdf -------------------------------------------------------------------------------- /figs/extrusion-1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kenohori/thesis/HEAD/figs/extrusion-1.jpg -------------------------------------------------------------------------------- /figs/extrusion-2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kenohori/thesis/HEAD/figs/extrusion-2.jpg -------------------------------------------------------------------------------- /figs/faceplanes-1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kenohori/thesis/HEAD/figs/faceplanes-1.jpg -------------------------------------------------------------------------------- /figs/faceplanes-2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kenohori/thesis/HEAD/figs/faceplanes-2.jpg -------------------------------------------------------------------------------- /figs/facet-edge.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kenohori/thesis/HEAD/figs/facet-edge.pdf -------------------------------------------------------------------------------- /figs/halfedge-1.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kenohori/thesis/HEAD/figs/halfedge-1.pdf -------------------------------------------------------------------------------- /figs/halfedge-2.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kenohori/thesis/HEAD/figs/halfedge-2.pdf -------------------------------------------------------------------------------- /figs/halfedge-3.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kenohori/thesis/HEAD/figs/halfedge-3.pdf -------------------------------------------------------------------------------- /figs/halfspace-1.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kenohori/thesis/HEAD/figs/halfspace-1.pdf -------------------------------------------------------------------------------- /figs/halfspace-2.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kenohori/thesis/HEAD/figs/halfspace-2.pdf -------------------------------------------------------------------------------- /figs/halfspaces.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kenohori/thesis/HEAD/figs/halfspaces.jpg -------------------------------------------------------------------------------- /figs/hole-bridge.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kenohori/thesis/HEAD/figs/hole-bridge.jpg -------------------------------------------------------------------------------- /figs/hole-split.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kenohori/thesis/HEAD/figs/hole-split.jpg -------------------------------------------------------------------------------- /figs/intervals-1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kenohori/thesis/HEAD/figs/intervals-1.jpg -------------------------------------------------------------------------------- /figs/intervals-2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kenohori/thesis/HEAD/figs/intervals-2.jpg -------------------------------------------------------------------------------- /figs/ioh-diff-o.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kenohori/thesis/HEAD/figs/ioh-diff-o.jpg -------------------------------------------------------------------------------- /figs/ioh-diff-w.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kenohori/thesis/HEAD/figs/ioh-diff-w.jpg -------------------------------------------------------------------------------- /figs/ioh-diff-wo.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kenohori/thesis/HEAD/figs/ioh-diff-wo.jpg -------------------------------------------------------------------------------- /figs/jenn-24-cell.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kenohori/thesis/HEAD/figs/jenn-24-cell.jpg -------------------------------------------------------------------------------- /figs/konigsberg.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kenohori/thesis/HEAD/figs/konigsberg.jpg -------------------------------------------------------------------------------- /figs/konigsberg.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kenohori/thesis/HEAD/figs/konigsberg.pdf -------------------------------------------------------------------------------- /figs/link1_filled.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kenohori/thesis/HEAD/figs/link1_filled.pdf -------------------------------------------------------------------------------- /figs/nonmanifold.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kenohori/thesis/HEAD/figs/nonmanifold.jpg -------------------------------------------------------------------------------- /figs/part-arcgis.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kenohori/thesis/HEAD/figs/part-arcgis.png -------------------------------------------------------------------------------- /figs/part-grass.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kenohori/thesis/HEAD/figs/part-grass.png -------------------------------------------------------------------------------- /figs/schoenhardt1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kenohori/thesis/HEAD/figs/schoenhardt1.jpg -------------------------------------------------------------------------------- /figs/schoenhardt2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kenohori/thesis/HEAD/figs/schoenhardt2.jpg -------------------------------------------------------------------------------- /figs/snapping-1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kenohori/thesis/HEAD/figs/snapping-1.jpg -------------------------------------------------------------------------------- /figs/snapping-2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kenohori/thesis/HEAD/figs/snapping-2.jpg -------------------------------------------------------------------------------- /figs/st_snapshot.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kenohori/thesis/HEAD/figs/st_snapshot.pdf -------------------------------------------------------------------------------- /figs/stereo-earth.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kenohori/thesis/HEAD/figs/stereo-earth.jpg -------------------------------------------------------------------------------- /figs/tesseract2.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kenohori/thesis/HEAD/figs/tesseract2.pdf -------------------------------------------------------------------------------- /figs/tesseract3.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kenohori/thesis/HEAD/figs/tesseract3.pdf -------------------------------------------------------------------------------- /figs/triangle-1.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kenohori/thesis/HEAD/figs/triangle-1.pdf -------------------------------------------------------------------------------- /figs/triangle-2.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kenohori/thesis/HEAD/figs/triangle-2.pdf -------------------------------------------------------------------------------- /figs/trig-ortho.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kenohori/thesis/HEAD/figs/trig-ortho.pdf -------------------------------------------------------------------------------- /figs/unitopendisk.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kenohori/thesis/HEAD/figs/unitopendisk.pdf -------------------------------------------------------------------------------- /figs/unitpolygons.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kenohori/thesis/HEAD/figs/unitpolygons.jpg -------------------------------------------------------------------------------- /figs/volumetric.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kenohori/thesis/HEAD/figs/volumetric.jpg -------------------------------------------------------------------------------- /figs/wireframe-1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kenohori/thesis/HEAD/figs/wireframe-1.jpg -------------------------------------------------------------------------------- /figs/wireframe-2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kenohori/thesis/HEAD/figs/wireframe-2.jpg -------------------------------------------------------------------------------- /figs/wireframe-3.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kenohori/thesis/HEAD/figs/wireframe-3.jpg -------------------------------------------------------------------------------- /figs/1-simplex-star.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kenohori/thesis/HEAD/figs/1-simplex-star.pdf -------------------------------------------------------------------------------- /figs/SlicingPrism2D.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kenohori/thesis/HEAD/figs/SlicingPrism2D.pdf -------------------------------------------------------------------------------- /figs/aula-collapse.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kenohori/thesis/HEAD/figs/aula-collapse.jpg -------------------------------------------------------------------------------- /figs/aula-extruded.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kenohori/thesis/HEAD/figs/aula-extruded.jpg -------------------------------------------------------------------------------- /figs/boolean-union.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kenohori/thesis/HEAD/figs/boolean-union.jpg -------------------------------------------------------------------------------- /figs/campusextruded.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kenohori/thesis/HEAD/figs/campusextruded.jpg -------------------------------------------------------------------------------- /figs/citygml-filip.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kenohori/thesis/HEAD/figs/citygml-filip.jpg -------------------------------------------------------------------------------- /figs/conic-ellipse.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kenohori/thesis/HEAD/figs/conic-ellipse.jpg -------------------------------------------------------------------------------- /figs/conic-parabola.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kenohori/thesis/HEAD/figs/conic-parabola.jpg -------------------------------------------------------------------------------- /figs/facet-edge-ops.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kenohori/thesis/HEAD/figs/facet-edge-ops.pdf -------------------------------------------------------------------------------- /figs/interioralgos.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kenohori/thesis/HEAD/figs/interioralgos.pdf -------------------------------------------------------------------------------- /figs/ioh-equiangle.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kenohori/thesis/HEAD/figs/ioh-equiangle.jpg -------------------------------------------------------------------------------- /figs/iso-cell-brep.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kenohori/thesis/HEAD/figs/iso-cell-brep.pdf -------------------------------------------------------------------------------- /figs/iso-composites.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kenohori/thesis/HEAD/figs/iso-composites.pdf -------------------------------------------------------------------------------- /figs/linkingscheme1.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kenohori/thesis/HEAD/figs/linkingscheme1.pdf -------------------------------------------------------------------------------- /figs/linkingscheme2.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kenohori/thesis/HEAD/figs/linkingscheme2.pdf -------------------------------------------------------------------------------- /figs/linkingscheme3.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kenohori/thesis/HEAD/figs/linkingscheme3.pdf -------------------------------------------------------------------------------- /figs/linkingscheme4.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kenohori/thesis/HEAD/figs/linkingscheme4.pdf -------------------------------------------------------------------------------- /figs/nef-boolean-1.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kenohori/thesis/HEAD/figs/nef-boolean-1.pdf -------------------------------------------------------------------------------- /figs/nef-boolean-2.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kenohori/thesis/HEAD/figs/nef-boolean-2.pdf -------------------------------------------------------------------------------- /figs/nonmanifold-0.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kenohori/thesis/HEAD/figs/nonmanifold-0.pdf -------------------------------------------------------------------------------- /figs/nonmanifold-1.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kenohori/thesis/HEAD/figs/nonmanifold-1.pdf -------------------------------------------------------------------------------- /figs/nonmanifold-2.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kenohori/thesis/HEAD/figs/nonmanifold-2.pdf -------------------------------------------------------------------------------- /figs/nonzerowinding.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kenohori/thesis/HEAD/figs/nonzerowinding.pdf -------------------------------------------------------------------------------- /figs/polygon-model.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kenohori/thesis/HEAD/figs/polygon-model.pdf -------------------------------------------------------------------------------- /figs/ps_hexahedron.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kenohori/thesis/HEAD/figs/ps_hexahedron.jpg -------------------------------------------------------------------------------- /figs/ps_icosahedron.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kenohori/thesis/HEAD/figs/ps_icosahedron.jpg -------------------------------------------------------------------------------- /figs/ps_octahedron.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kenohori/thesis/HEAD/figs/ps_octahedron.jpg -------------------------------------------------------------------------------- /figs/ps_tetrahedron.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kenohori/thesis/HEAD/figs/ps_tetrahedron.jpg -------------------------------------------------------------------------------- /figs/space-filling.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kenohori/thesis/HEAD/figs/space-filling.jpg -------------------------------------------------------------------------------- /figs/threshold-gap.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kenohori/thesis/HEAD/figs/threshold-gap.pdf -------------------------------------------------------------------------------- /figs/trianglestrip.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kenohori/thesis/HEAD/figs/trianglestrip.pdf -------------------------------------------------------------------------------- /figs/0-cell-embedding.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kenohori/thesis/HEAD/figs/0-cell-embedding.jpg -------------------------------------------------------------------------------- /figs/1-cell-boundary.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kenohori/thesis/HEAD/figs/1-cell-boundary.pdf -------------------------------------------------------------------------------- /figs/2-cell-boundary.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kenohori/thesis/HEAD/figs/2-cell-boundary.pdf -------------------------------------------------------------------------------- /figs/4DslicingHouses.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kenohori/thesis/HEAD/figs/4DslicingHouses.pdf -------------------------------------------------------------------------------- /figs/aula4d-top-bottom.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kenohori/thesis/HEAD/figs/aula4d-top-bottom.jpg -------------------------------------------------------------------------------- /figs/blockscomplex-1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kenohori/thesis/HEAD/figs/blockscomplex-1.jpg -------------------------------------------------------------------------------- /figs/blockscomplex-2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kenohori/thesis/HEAD/figs/blockscomplex-2.jpg -------------------------------------------------------------------------------- /figs/cellcomplex-cells.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kenohori/thesis/HEAD/figs/cellcomplex-cells.pdf -------------------------------------------------------------------------------- /figs/cmap-3d-vertices.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kenohori/thesis/HEAD/figs/cmap-3d-vertices.jpg -------------------------------------------------------------------------------- /figs/cmaps-simplices.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kenohori/thesis/HEAD/figs/cmaps-simplices.pdf -------------------------------------------------------------------------------- /figs/conic-hyperbola.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kenohori/thesis/HEAD/figs/conic-hyperbola.jpg -------------------------------------------------------------------------------- /figs/darts-of-cell-1.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kenohori/thesis/HEAD/figs/darts-of-cell-1.pdf -------------------------------------------------------------------------------- /figs/darts-of-cell-2.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kenohori/thesis/HEAD/figs/darts-of-cell-2.pdf -------------------------------------------------------------------------------- /figs/extrusion-steps.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kenohori/thesis/HEAD/figs/extrusion-steps.pdf -------------------------------------------------------------------------------- /figs/generalisation2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kenohori/thesis/HEAD/figs/generalisation2.jpg -------------------------------------------------------------------------------- /figs/generalisation3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kenohori/thesis/HEAD/figs/generalisation3.png -------------------------------------------------------------------------------- /figs/gmaps-simplices.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kenohori/thesis/HEAD/figs/gmaps-simplices.pdf -------------------------------------------------------------------------------- /figs/iso-compositecell.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kenohori/thesis/HEAD/figs/iso-compositecell.pdf -------------------------------------------------------------------------------- /figs/pascal-triangle.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kenohori/thesis/HEAD/figs/pascal-triangle.pdf -------------------------------------------------------------------------------- /figs/pprepair-method-a.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kenohori/thesis/HEAD/figs/pprepair-method-a.png -------------------------------------------------------------------------------- /figs/pprepair-method-b.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kenohori/thesis/HEAD/figs/pprepair-method-b.png -------------------------------------------------------------------------------- /figs/pprepair-method-c.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kenohori/thesis/HEAD/figs/pprepair-method-c.png -------------------------------------------------------------------------------- /figs/pprepair-method-d.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kenohori/thesis/HEAD/figs/pprepair-method-d.png -------------------------------------------------------------------------------- /figs/ps_dodecahedron.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kenohori/thesis/HEAD/figs/ps_dodecahedron.jpg -------------------------------------------------------------------------------- /figs/reconstruction-0.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kenohori/thesis/HEAD/figs/reconstruction-0.pdf -------------------------------------------------------------------------------- /figs/reconstruction-2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kenohori/thesis/HEAD/figs/reconstruction-2.jpg -------------------------------------------------------------------------------- /figs/simple-tesseract.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kenohori/thesis/HEAD/figs/simple-tesseract.pdf -------------------------------------------------------------------------------- /figs/simplicescampus.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kenohori/thesis/HEAD/figs/simplicescampus.jpg -------------------------------------------------------------------------------- /figs/tesseract-tests-1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kenohori/thesis/HEAD/figs/tesseract-tests-1.jpg -------------------------------------------------------------------------------- /figs/tesseract-tests-2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kenohori/thesis/HEAD/figs/tesseract-tests-2.jpg -------------------------------------------------------------------------------- /figs/tesseract-tests-3.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kenohori/thesis/HEAD/figs/tesseract-tests-3.jpg -------------------------------------------------------------------------------- /figs/threshold-overlap.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kenohori/thesis/HEAD/figs/threshold-overlap.pdf -------------------------------------------------------------------------------- /figs/trianglecomplex-1.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kenohori/thesis/HEAD/figs/trianglecomplex-1.pdf -------------------------------------------------------------------------------- /figs/trianglecomplex-2.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kenohori/thesis/HEAD/figs/trianglecomplex-2.pdf -------------------------------------------------------------------------------- /figs/vertex-simplices.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kenohori/thesis/HEAD/figs/vertex-simplices.pdf -------------------------------------------------------------------------------- /figs/0-cell-double-star.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kenohori/thesis/HEAD/figs/0-cell-double-star.pdf -------------------------------------------------------------------------------- /figs/1-simplex-boundary.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kenohori/thesis/HEAD/figs/1-simplex-boundary.pdf -------------------------------------------------------------------------------- /figs/2-simplex-adjacency.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kenohori/thesis/HEAD/figs/2-simplex-adjacency.pdf -------------------------------------------------------------------------------- /figs/2-simplex-boundary.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kenohori/thesis/HEAD/figs/2-simplex-boundary.pdf -------------------------------------------------------------------------------- /figs/2-simplex-vertices.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kenohori/thesis/HEAD/figs/2-simplex-vertices.pdf -------------------------------------------------------------------------------- /figs/2tetra-before-3sew.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kenohori/thesis/HEAD/figs/2tetra-before-3sew.pdf -------------------------------------------------------------------------------- /figs/aula-edge-collapse.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kenohori/thesis/HEAD/figs/aula-edge-collapse.jpg -------------------------------------------------------------------------------- /figs/boolean-difference.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kenohori/thesis/HEAD/figs/boolean-difference.jpg -------------------------------------------------------------------------------- /figs/cmaps-orientation-1.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kenohori/thesis/HEAD/figs/cmaps-orientation-1.pdf -------------------------------------------------------------------------------- /figs/cmaps-orientation-2.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kenohori/thesis/HEAD/figs/cmaps-orientation-2.pdf -------------------------------------------------------------------------------- /figs/construction-faces.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kenohori/thesis/HEAD/figs/construction-faces.jpg -------------------------------------------------------------------------------- /figs/gmaps-3d-simplices.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kenohori/thesis/HEAD/figs/gmaps-3d-simplices.pdf -------------------------------------------------------------------------------- /figs/pprepair-workflow-a.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kenohori/thesis/HEAD/figs/pprepair-workflow-a.jpg -------------------------------------------------------------------------------- /figs/pprepair-workflow-b.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kenohori/thesis/HEAD/figs/pprepair-workflow-b.pdf -------------------------------------------------------------------------------- /figs/pprepair-workflow-c.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kenohori/thesis/HEAD/figs/pprepair-workflow-c.pdf -------------------------------------------------------------------------------- /figs/pprepair-workflow-d.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kenohori/thesis/HEAD/figs/pprepair-workflow-d.pdf -------------------------------------------------------------------------------- /figs/pprepair-workflow-e.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kenohori/thesis/HEAD/figs/pprepair-workflow-e.pdf -------------------------------------------------------------------------------- /figs/pprepair-workflow-f.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kenohori/thesis/HEAD/figs/pprepair-workflow-f.pdf -------------------------------------------------------------------------------- /figs/prepair-workflow-1.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kenohori/thesis/HEAD/figs/prepair-workflow-1.pdf -------------------------------------------------------------------------------- /figs/prepair-workflow-2.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kenohori/thesis/HEAD/figs/prepair-workflow-2.pdf -------------------------------------------------------------------------------- /figs/prepair-workflow-3.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kenohori/thesis/HEAD/figs/prepair-workflow-3.pdf -------------------------------------------------------------------------------- /figs/prepair-workflow-4.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kenohori/thesis/HEAD/figs/prepair-workflow-4.pdf -------------------------------------------------------------------------------- /figs/prepair-workflow-5.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kenohori/thesis/HEAD/figs/prepair-workflow-5.pdf -------------------------------------------------------------------------------- /figs/quad-edge-algebra-1.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kenohori/thesis/HEAD/figs/quad-edge-algebra-1.pdf -------------------------------------------------------------------------------- /figs/quad-edge-algebra-2.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kenohori/thesis/HEAD/figs/quad-edge-algebra-2.pdf -------------------------------------------------------------------------------- /figs/reconstruction-2-a.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kenohori/thesis/HEAD/figs/reconstruction-2-a.jpg -------------------------------------------------------------------------------- /figs/reconstruction-2-b.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kenohori/thesis/HEAD/figs/reconstruction-2-b.jpg -------------------------------------------------------------------------------- /figs/reconstruction-2-c.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kenohori/thesis/HEAD/figs/reconstruction-2-c.jpg -------------------------------------------------------------------------------- /figs/reconstruction-2-d.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kenohori/thesis/HEAD/figs/reconstruction-2-d.jpg -------------------------------------------------------------------------------- /figs/reconstruction-2-e.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kenohori/thesis/HEAD/figs/reconstruction-2-e.jpg -------------------------------------------------------------------------------- /figs/reconstruction-2-f.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kenohori/thesis/HEAD/figs/reconstruction-2-f.jpg -------------------------------------------------------------------------------- /figs/reconstruction-2-g.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kenohori/thesis/HEAD/figs/reconstruction-2-g.jpg -------------------------------------------------------------------------------- /figs/reconstruction-3-a.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kenohori/thesis/HEAD/figs/reconstruction-3-a.jpg -------------------------------------------------------------------------------- /figs/reconstruction-3-b.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kenohori/thesis/HEAD/figs/reconstruction-3-b.pdf -------------------------------------------------------------------------------- /figs/simple-tesseract-fp.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kenohori/thesis/HEAD/figs/simple-tesseract-fp.pdf -------------------------------------------------------------------------------- /figs/SlicingPrism2DResult.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kenohori/thesis/HEAD/figs/SlicingPrism2DResult.pdf -------------------------------------------------------------------------------- /figs/boolean-intersection.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kenohori/thesis/HEAD/figs/boolean-intersection.jpg -------------------------------------------------------------------------------- /figs/cellcomplex-polygons.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kenohori/thesis/HEAD/figs/cellcomplex-polygons.pdf -------------------------------------------------------------------------------- /figs/construction-vertices.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kenohori/thesis/HEAD/figs/construction-vertices.jpg -------------------------------------------------------------------------------- /figs/construction-volumes.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kenohori/thesis/HEAD/figs/construction-volumes.jpg -------------------------------------------------------------------------------- /figs/hole-split-structure.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kenohori/thesis/HEAD/figs/hole-split-structure.jpg -------------------------------------------------------------------------------- /figs/intersectingintervals.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kenohori/thesis/HEAD/figs/intersectingintervals.pdf -------------------------------------------------------------------------------- /figs/scheduling-perspective.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kenohori/thesis/HEAD/figs/scheduling-perspective.jpg -------------------------------------------------------------------------------- /figs/scheduling-orthographic.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kenohori/thesis/HEAD/figs/scheduling-orthographic.jpg -------------------------------------------------------------------------------- /figs/sfs3d: -------------------------------------------------------------------------------- 1 | [[[0, 0, 0], [0, 1, 0], [1, 1, 0], [1, 0, 0], [0, 0, 0]], 2 | [[0, 0, 0], [0, 1, 0], [0, 1, 1], [0, 0, 1], [0, 0, 0]], 3 | [[0, 1, 0], [1, 1, 0], [1, 1, 1], [0, 1, 1], [0, 1, 0]], 4 | [[1, 1, 0], [1, 0, 0], [1, 0, 1], [1, 1, 1], [1, 1, 0]], 5 | [[1, 0, 0], [0, 0, 0], [0, 0, 1], [1, 0, 1], [1, 0, 0]], 6 | [[0, 0, 1], [0, 1, 1], [1, 1, 1], [1, 0, 1], [0, 0, 1]]] -------------------------------------------------------------------------------- /figs/templateconversion.txt: -------------------------------------------------------------------------------- 1 | template 2 | T string_to_number (const std::string &text, T def_value) { 3 | std::stringstream ss; 4 | for (std::string::const_iterator i = text.begin(); i != text.end(); ++i) 5 | if (isdigit(*i) || *i=='e' || *i=='-' || *i=='+' || *i=='.') ss << *i; 6 | T result; 7 | return ss >> result ? result : def_value; 8 | } -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # My PhD thesis 2 | 3 | Some related blog posts: 4 | * [How to self-publish your (LaTeX) thesis](https://3d.bk.tudelft.nl/ken/en/2016/03/20/self-publishing-your-latex-thesis.html) 5 | * [What is my LaTeX workflow](https://3d.bk.tudelft.nl/ken/en/2016/04/02/my-latex-thesis-workflow.html) 6 | * [How my 1.5 column layout works](https://3d.bk.tudelft.nl/ken/en/2016/04/17/a-1.5-column-layout-in-latex.html) -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | thesis.toc 2 | thesis.synctex.gz 3 | thesis.sublime-workspace 4 | thesis.sublime-project 5 | thesis.pdf 6 | thesis.lot 7 | thesis.log 8 | thesis.fls 9 | thesis.fdb_latexmk 10 | thesis.brf 11 | thesis.blg 12 | thesis.bbl 13 | thesis.aux 14 | .DS_Store 15 | propositions.synctex.gz 16 | propositions.pdf 17 | propositions.log 18 | propositions.fls 19 | propositions.fdb_latexmk 20 | propositions.aux 21 | -------------------------------------------------------------------------------- /figs/points.cpp: -------------------------------------------------------------------------------- 1 | float point_coordinates[][4] = { 2 | // Left house 3 | {0, 0, 0, 0}, // 0 4 | {1, 0, 0, 0}, // 1 5 | {0, 1, 0, 0}, // 2 6 | {1, 1, 0, 0}, // 3 7 | {0, 0, 1, 0}, // 4 8 | {1, 0, 1, 0}, // 5 9 | {0, 1, 1, 0}, // 6 10 | {1, 1, 1, 0}, // 7 11 | 12 | // Right house 13 | {0, 0, 0, 1}, // 8 14 | {1, 0, 0, 1}, // 9 15 | {0, 1, 0, 1}, // 10 16 | {1, 1, 0, 1}, // 11 17 | {0, 0, 1, 1}, // 12 18 | {1, 0, 1, 1}, // 13 19 | {0, 1, 1, 1}, // 14 20 | {1, 1, 1, 1}, // 15 21 | {.5, .5, 1.5, 1} // 16 22 | }; 23 | 24 | for (int i = 0; i < 17; ++i) { 25 | points.push_back(Point(4, 26 | point_coordinates[i], 27 | point_coordinates[i]+4)); 28 | vertices.push_back( 29 | builder.get_vertex(points[i])); 30 | } -------------------------------------------------------------------------------- /figs/extrudedlcc.txt: -------------------------------------------------------------------------------- 1 | template 2 | class Linear_cell_complex_extruder_with_range { 3 | public: 4 | typedef typename Linear_cell_complex_with_ids::type Lower_dimensional_cell_complex; 5 | typedef typename Linear_cell_complex_with_ids::type Higher_dimensional_cell_complex; 6 | typedef Linear_cell_complex_extruder_with_range Self; 7 | typedef typename Lower_dimensional_cell_complex::FT FT; 8 | 9 | typedef typename Extruded_embeddings_with_range_of_dimension_and_lower::type Extruded_embeddings_with_range; 10 | typedef Extrusion_ranges_tuple_per_dimension Extrusion_ranges; 11 | 12 | private: 13 | Extrusion_ranges extrusion_ranges; 14 | std::set all_ranges; 15 | Higher_dimensional_cell_complex hdcc; 16 | }; -------------------------------------------------------------------------------- /figs/dimensionindependent.txt: -------------------------------------------------------------------------------- 1 | // Abstracts a map of cell->ranges for a particular dimension 2 | template 3 | struct Extrusion_ranges_map_of_dimension { 4 | public: 5 | typedef std::map::type, 6 | Extrusion_ranges > type; 7 | type ranges_map; 8 | }; 9 | 10 | // Abstracts a tuple of maps of cell->ranges, each element containing the map of a particular dimension 11 | template > 12 | struct Extrusion_ranges_tuple_per_dimension_up_to; 13 | 14 | template 15 | struct Extrusion_ranges_tuple_per_dimension_up_to > { 16 | typedef CGAL::cpp11::tuple, Result ...> type; 17 | }; 18 | 19 | template 20 | struct Extrusion_ranges_tuple_per_dimension_up_to > { 21 | typedef typename Extrusion_ranges_tuple_per_dimension_up_to, Result ...> >::type type; 23 | }; 24 | 25 | // Abstracts a tuple of maps of cell->ranges, each element containing the map of a particular dimension 26 | template 27 | struct Extrusion_ranges_tuple_per_dimension { 28 | public: 29 | typedef LCC_ LCC; 30 | typedef typename Extrusion_ranges_tuple_per_dimension_up_to::type type; 31 | type ranges; 32 | }; -------------------------------------------------------------------------------- /figs/construction.cpp: -------------------------------------------------------------------------------- 1 | // 2: Left of first house (yellow) 2 | faceLists.push_back(...); 3 | faceLists.back().push_back(vertices[0]); 4 | faceLists.back().push_back(vertices[2]); 5 | faceLists.back().push_back(vertices[6]); 6 | faceLists.back().push_back(vertices[4]); 7 | 8 | //21: Back right vertical edge (blue) 9 | faceLists.push_back(...); 10 | faceLists.back().push_back(vertices[3]); 11 | faceLists.back().push_back(vertices[7]); 12 | faceLists.back().push_back(vertices[15]); 13 | faceLists.back().push_back(vertices[11]); 14 | 15 | for (int i = 0; i < 35; ++i) 16 | faces.push_back( 17 | builder.get_facet_from_vertices( 18 | faceLists[i].begin(), 19 | faceLists[i].end(), false).first); 20 | 21 | // 1: Right house (green) 22 | volumeLists.push_back(...); 23 | volumeLists.back().push_back(faces[6]); 24 | volumeLists.back().push_back(faces[7]); 25 | volumeLists.back().push_back(faces[8]); 26 | volumeLists.back().push_back(faces[9]); 27 | volumeLists.back().push_back(faces[10]); 28 | volumeLists.back().push_back(faces[11]); 29 | volumeLists.back().push_back(faces[12]); 30 | volumeLists.back().push_back(faces[13]); 31 | volumeLists.back().push_back(faces[14]); 32 | 33 | // 11: Roof from left to right tip (red) 34 | volumeLists.push_back(...); 35 | volumeLists.back().push_back(faces[31]); 36 | volumeLists.back().push_back(faces[32]); 37 | volumeLists.back().push_back(faces[33]); 38 | volumeLists.back().push_back(faces[34]); 39 | volumeLists.back().push_back(faces[5]); 40 | 41 | for (int i = 0; i < 12; ++i) 42 | volumes.push_back(builder.get_cell<3>( 43 | volumeLists[i].begin(), 44 | volumeLists[i].end()).first); 45 | 46 | LCC::Dart_handle house4d = builder.get_cell<4>( 47 | volumes.begin(), volumes.end()).first; -------------------------------------------------------------------------------- /figs/manifoldvalidation.txt: -------------------------------------------------------------------------------- 1 | template 2 | Dart_handle get_cell(InputIterator begin, InputIterator end) { 3 | 4 | // Validate that this will create a closed (topologically open) quasi-manifold cell 5 | for (typename std::list::iterator dart_in_current_facet_1 = free_facets.begin(); 6 | dart_in_current_facet_1 != free_facets.end(); ++dart_in_current_facet_1) { 7 | 8 | // Go ridge by ridge 9 | for (auto dart_in_current_ridge_1 = lcc.one_dart_per_incident_cell( 10 | *dart_in_current_facet_1).begin(); 11 | dart_in_current_ridge_1 != lcc.one_dart_per_incident_cell( 12 | *dart_in_current_facet_1).end(); 13 | ++dart_in_current_ridge_1) { 14 | int matches = 0; 15 | 16 | // Find possible matches 17 | for (typename std::list::iterator dart_in_current_facet_2 = free_facets.begin(); 18 | dart_in_current_facet_2 != free_facets.end(); 19 | ++dart_in_current_facet_2) { 20 | if (&*dart_in_current_facet_1 == &*dart_in_current_facet_2) continue; // Compare by memory address 21 | 22 | // Go ridge by ridge in a potential match 23 | for (auto current_dart_in_facet_2 = lcc.darts_of_cell( 24 | *dart_in_current_facet_2).begin(); 25 | current_dart_in_facet_2 != lcc.darts_of_cell( 26 | *dart_in_current_facet_2).end(); 27 | ++current_dart_in_facet_2) { 28 | 29 | // Check if it's a complete match (isomorphism test using signatures) 30 | if (isomorphic(lcc,dart_in_current_ridge_1, current_dart_in_facet_2)) ++matches; 31 | if (isomorphic_reversed(lcc, dart_in_current_ridge_1, current_dart_in_facet_2)) ++matches; 32 | } 33 | } 34 | 35 | CGAL_precondition(matches == 1); 36 | } 37 | } 38 | } -------------------------------------------------------------------------------- /cv.tex: -------------------------------------------------------------------------------- 1 | % !TEX root = thesis.tex 2 | 3 | \chapter{Curriculum vitae} 4 | 5 | \noindent 6 | Gustavo Adolfo \href{http://ken.mx}{\textbf{Ken Arroyo Ohori}} was born on June 12, 1985 in Mexico City. 7 | He graduated in 2003 from the Bicultural High School (`\emph{Preparatoria Bicultural}') programme and in 2007 from the BSc in Computer Science and Technology programme (`\emph{ITC01: Ingenier\'\i{}a en Tecnolog\'\i{}as Computacionales}') at the Mexico City campus of the Monterrey Institute of Technology and Higher Education (`\emph{Instituto Tecnol\'ogico y de Estudios Superiores de Monterrey}'). 8 | 9 | \marginpar{\includegraphics[width=\marginparwidth]{figs/me}} 10 | 11 | Arriving to the Delft University of Technology in 2008, Ken graduated from the MSc in Geomatics programme in 2010 with his thesis on the \emph{Validation and automatic repair of planar partitions using a constrained triangulation}, which later evolved into some of the data repair ideas exposed in \refch{ch:cleaning} of this thesis. 12 | 13 | In 2011, Ken started his PhD project on the \emph{Higher-dimensional modelling of geographic information}, supervised by \href{https://3d.bk.tudelft.nl/jstoter/}{Jantien Stoter} and \href{http://tudelft.nl/hledoux}{Hugo Ledoux}, working under the umbrella of the project \emph{5D Data Modelling: Full Integration of 2D/3D Space, Time and Scale Dimensions} of the Dutch Technology Foundation (\emph{STW}). 14 | In October 2012, he visited \href{http://liris.cnrs.fr/guillaume.damiand/}{Guillaume Damiand}, collaborating on the incremental construction method that later became \refch{ch:incremental-construction} of this thesis. 15 | 16 | In 2016, Ken started working as a postdoc in the same \emph{5D Data Modelling} project, focusing on 4D visualisation and in the integrated modelling of space and time. 17 | 18 | \clearpage 19 | \section*{Publications} 20 | 21 | {\small 22 | \begin{itemize} 23 | \papermethodsxvoxelisation% 24 | \paperijgisroeland% 25 | \paperudmvobj% 26 | \paperisprsnd% 27 | \paperijgind\mparshift{-3.3\baselineskip}\marginpar{\raggedleft{}In \refch{ch:linking-lods}}% 28 | \paperijgisextrusion\mparshift{-3.3\baselineskip}\marginpar{\raggedleft{}In \refch{ch:extrusion}}% 29 | \paperijgisndstructures\mparshift{-3.3\baselineskip}\marginpar{\raggedleft{}In \refse{se:data-structures} \& \refse{se:nd-modelling-conclusions}}% 30 | \papercgeoprepair\mparshift{-2.3\baselineskip}\marginpar{\raggedleft{}In \refse{se:pprepair}}% 31 | \papericaaincrementalconstruction\mparshift{-6.3\baselineskip}\marginpar{\raggedleft{}In \refch{ch:incremental-construction}}% 32 | \paperacmsigspatialextrusion% 33 | \clearpage% 34 | \papericcsand% 35 | \papergeoadvancesnd\mparshift{-5.2\baselineskip}\marginpar{In \refse{se:duality}}% 36 | \paperagileslicing% 37 | \paperpfgpprepair\mparshift{-3.2\baselineskip}\marginpar{In \refse{se:pprepair}}% 38 | \paperosgisrepair% 39 | \papertdgeoinfond% 40 | \paperagileprepair% 41 | \paperostravaedgematching% 42 | \end{itemize} 43 | } 44 | 45 | \clearpage 46 | \null% 47 | \marginpar{ 48 | \includegraphics[width=\marginparwidth]{figs/3dgeoinfo}\\ 49 | \vspace*{11.5cm} 50 | \includegraphics[width=\marginparwidth]{figs/barcode} 51 | } 52 | -------------------------------------------------------------------------------- /figs/sfs4d: -------------------------------------------------------------------------------- 1 | [[[[0, 0, 0, 0], [0, 1, 0, 0], [1, 1, 0, 0], [1, 0, 0, 0], [0, 0, 0, 0]], 2 | [[0, 0, 0, 0], [0, 1, 0, 0], [0, 1, 1, 0], [0, 0, 1, 0], [0, 0, 0, 0]], 3 | [[0, 1, 0, 0], [1, 1, 0, 0], [1, 1, 1, 0], [0, 1, 1, 0], [0, 1, 0, 0]], 4 | [[1, 1, 0, 0], [1, 0, 0, 0], [1, 0, 1, 0], [1, 1, 1, 0], [1, 1, 0, 0]], 5 | [[1, 0, 0, 0], [0, 0, 0, 0], [0, 0, 1, 0], [1, 0, 1, 0], [1, 0, 0, 0]], 6 | [[0, 0, 1, 0], [0, 1, 1, 0], [1, 1, 1, 0], [1, 0, 1, 0], [0, 0, 1, 0]]], 7 | [[[0, 0, 0, 0], [0, 1, 0, 0], [1, 1, 0, 0], [1, 0, 0, 0], [0, 0, 0, 0]], 8 | [[0, 0, 0, 0], [0, 1, 0, 0], [0, 1, 0, 1], [0, 0, 0, 1], [0, 0, 0, 0]], 9 | [[0, 1, 0, 0], [1, 1, 0, 0], [1, 1, 0, 1], [0, 1, 0, 1], [0, 1, 0, 0]], 10 | [[1, 1, 0, 0], [1, 0, 0, 0], [1, 0, 0, 1], [1, 1, 0, 1], [1, 1, 0, 0]], 11 | [[1, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 1], [1, 0, 0, 1], [1, 0, 0, 0]], 12 | [[0, 0, 0, 1], [0, 1, 0, 1], [1, 1, 0, 1], [1, 0, 0, 1], [0, 0, 0, 1]]], 13 | [[[0, 0, 0, 0], [0, 1, 0, 0], [0, 1, 1, 0], [0, 0, 1, 0], [0, 0, 0, 0]], 14 | [[0, 0, 0, 0], [0, 1, 0, 0], [0, 1, 0, 1], [0, 0, 0, 1], [0, 0, 0, 0]], 15 | [[0, 1, 0, 0], [0, 1, 1, 0], [0, 1, 1, 1], [0, 1, 0, 1], [0, 1, 0, 0]], 16 | [[0, 1, 1, 0], [0, 0, 1, 0], [0, 0, 1, 1], [0, 1, 1, 1], [0, 1, 1, 0]], 17 | [[0, 0, 1, 0], [0, 0, 0, 0], [0, 0, 0, 1], [0, 0, 1, 1], [0, 0, 1, 0]], 18 | [[0, 0, 0, 1], [0, 1, 0, 1], [0, 1, 1, 1], [0, 0, 1, 1], [0, 0, 0, 1]]], 19 | [[[0, 1, 0, 0], [1, 1, 0, 0], [1, 1, 1, 0], [0, 1, 1, 0], [0, 1, 0, 0]], 20 | [[0, 1, 0, 0], [1, 1, 0, 0], [1, 1, 0, 1], [0, 1, 0, 1], [0, 1, 0, 0]], 21 | [[1, 1, 0, 0], [1, 1, 1, 0], [1, 1, 1, 1], [1, 1, 0, 1], [1, 1, 0, 0]], 22 | [[1, 1, 1, 0], [0, 1, 1, 0], [0, 1, 1, 1], [1, 1, 1, 1], [1, 1, 1, 0]], 23 | [[0, 1, 1, 0], [0, 1, 0, 0], [0, 1, 0, 1], [0, 1, 1, 1], [0, 1, 1, 0]], 24 | [[0, 1, 0, 1], [1, 1, 0, 1], [1, 1, 1, 1], [0, 1, 1, 1], [0, 1, 0, 1]]], 25 | [[[1, 1, 0, 0], [1, 0, 0, 0], [1, 0, 1, 0], [1, 1, 1, 0], [1, 1, 0, 0]], 26 | [[1, 1, 0, 0], [1, 0, 0, 0], [1, 0, 0, 1], [1, 1, 0, 1], [1, 1, 0, 0]], 27 | [[1, 0, 0, 0], [1, 0, 1, 0], [1, 0, 1, 1], [1, 0, 0, 1], [1, 0, 0, 0]], 28 | [[1, 0, 1, 0], [1, 1, 1, 0], [1, 1, 1, 1], [1, 0, 1, 1], [1, 0, 1, 0]], 29 | [[1, 1, 1, 0], [1, 1, 0, 0], [1, 1, 0, 1], [1, 1, 1, 1], [1, 1, 1, 0]], 30 | [[1, 1, 0, 1], [1, 0, 0, 1], [1, 0, 1, 1], [1, 1, 1, 1], [1, 1, 0, 1]]], 31 | [[[1, 0, 0, 0], [0, 0, 0, 0], [0, 0, 1, 0], [1, 0, 1, 0], [1, 0, 0, 0]], 32 | [[1, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 1], [1, 0, 0, 1], [1, 0, 0, 0]], 33 | [[0, 0, 0, 0], [0, 0, 1, 0], [0, 0, 1, 1], [0, 0, 0, 1], [0, 0, 0, 0]], 34 | [[0, 0, 1, 0], [1, 0, 1, 0], [1, 0, 1, 1], [0, 0, 1, 1], [0, 0, 1, 0]], 35 | [[1, 0, 1, 0], [1, 0, 0, 0], [1, 0, 0, 1], [1, 0, 1, 1], [1, 0, 1, 0]], 36 | [[1, 0, 0, 1], [0, 0, 0, 1], [0, 0, 1, 1], [1, 0, 1, 1], [1, 0, 0, 1]]], 37 | [[[0, 0, 1, 0], [0, 1, 1, 0], [1, 1, 1, 0], [1, 0, 1, 0], [0, 0, 1, 0]], 38 | [[0, 0, 1, 0], [0, 1, 1, 0], [0, 1, 1, 1], [0, 0, 1, 1], [0, 0, 1, 0]], 39 | [[0, 1, 1, 0], [1, 1, 1, 0], [1, 1, 1, 1], [0, 1, 1, 1], [0, 1, 1, 0]], 40 | [[1, 1, 1, 0], [1, 0, 1, 0], [1, 0, 1, 1], [1, 1, 1, 1], [1, 1, 1, 0]], 41 | [[1, 0, 1, 0], [0, 0, 1, 0], [0, 0, 1, 1], [1, 0, 1, 1], [1, 0, 1, 0]], 42 | [[0, 0, 1, 1], [0, 1, 1, 1], [1, 1, 1, 1], [1, 0, 1, 1], [0, 0, 1, 1]]], 43 | [[[0, 0, 0, 1], [0, 1, 0, 1], [1, 1, 0, 1], [1, 0, 0, 1], [0, 0, 0, 1]], 44 | [[0, 0, 0, 1], [0, 1, 0, 1], [0, 1, 1, 1], [0, 0, 1, 1], [0, 0, 0, 1]], 45 | [[0, 1, 0, 1], [1, 1, 0, 1], [1, 1, 1, 1], [0, 1, 1, 1], [0, 1, 0, 1]], 46 | [[1, 1, 0, 1], [1, 0, 0, 1], [1, 0, 1, 1], [1, 1, 1, 1], [1, 1, 0, 1]], 47 | [[1, 0, 0, 1], [0, 0, 0, 1], [0, 0, 1, 1], [1, 0, 1, 1], [1, 0, 0, 1]], 48 | [[0, 0, 1, 1], [0, 1, 1, 1], [1, 1, 1, 1], [1, 0, 1, 1], [0, 0, 1, 1]]]] -------------------------------------------------------------------------------- /propositions.tex: -------------------------------------------------------------------------------- 1 | %!TEX program = xelatex 2 | %!TEX encoding = UTF-8 Unicode 3 | 4 | \documentclass[parskip=half, 5 | fontsize=9pt]{scrartcl} 6 | 7 | \usepackage{amsmath,amssymb} % AMS symbols and environments 8 | \usepackage{fontspec} % Selecting fonts 9 | \usepackage{unicode-math} % Use unicode math font, not TeX 10 | \usepackage[english]{babel} % Correct hyphenation 11 | 12 | % For printing on A4 13 | \usepackage[a4paper, 14 | layoutwidth=17.955cm, 15 | layoutheight=23.351cm, 16 | layouthoffset=1.5225cm, 17 | layoutvoffset=3.1745cm, 18 | showcrop, 19 | top=2.170cm, 20 | bottom=3.510cm, 21 | inner=2.1835cm, 22 | outer=2.1835cm]{geometry} 23 | 24 | % Actual size: 95% of crown quarto 25 | % \usepackage[paperwidth=17.955cm, 26 | % paperheight=23.351cm, 27 | % top=2.170cm, 28 | % bottom=3.510cm, 29 | % inner=2.1835cm, 30 | % outer=2.1835cm]{geometry} 31 | 32 | % Font setup 33 | \setmainfont[Ligatures=TeX,ItalicFont=Feijoa-MediumItalic,StylisticSet=6]{Feijoa} 34 | \setmonofont[BoldFont=GTPressuraMono-Bold,ItalicFont=GTPressuraMono-LightItalic]{GTPressuraMono-Light} 35 | \setmathfont{Asana-Math.otf} 36 | \newfontfamily\fanciestfont[Ligatures={TeX,Discretionary}]{Feijoa-Display} 37 | \newfontfamily\fancyfont[Ligatures=TeX]{Feijoa-Display} 38 | \newfontfamily\chapternumberfont[Ligatures=TeX,Numbers=Lining]{Feijoa-Display} 39 | 40 | \begin{document} 41 | 42 | \pagestyle{empty} 43 | 44 | \begin{center} 45 | 46 | Propositions accompanying the thesis 47 | 48 | {\Large\fanciestfont{}Higher-dimensional modelling of geographic information} 49 | 50 | by 51 | 52 | {\Large Ken Arroyo Ohori} 53 | 54 | \end{center} 55 | 56 | \bigskip 57 | 58 | \begin{enumerate} 59 | 60 | % About thesis 61 | 62 | \item 63 | Using higher-dimensional topological data structures, many difficult problems can be flattened to equivalent---but conceptually simpler---problems on graphs. [\emph{This thesis}] 64 | 65 | \item 66 | Two representations will come to dominate geographic information of any dimension: point clouds and space subdivisions. [\emph{This thesis}] 67 | % Representing roads as lines and buildings as unconstrained soups of faces will soon seem as anachronistic as wireframe models. 68 | 69 | % Side topics / GIS in general 70 | 71 | \item 72 | Computational methods will replace geoscientific methods in almost every GIS application: 73 | \emph{fast reasonable approximations} on large noisy datasets will increasingly trump \emph{slow optimal solutions} on a few carefully acquired data points. 74 | 75 | \item 76 | A lack of concern for geometric and topological correctness is the main reason behind the lack of successful applications for general-purpose 3D models. 77 | 78 | \item 79 | In computer science, it is almost always better to speak of research objectives than research questions. 80 | 81 | % Science & thesis 82 | 83 | \item 84 | There is no such thing as a predatory publisher, only predatory metrics used to gauge the value of a scientist. 85 | 86 | \item 87 | In the future, peer review will be conducted post publication. 88 | 89 | \item 90 | Good academic writing advice encourages clarity and expressiveness as much as it discourages formulaic constructions. 91 | 92 | % Politics 93 | 94 | \item 95 | Innovation in internet services will occur in countries that enshrine net neutrality in law. 96 | 97 | \item 98 | The results of research performed at public universities or using public funds ought to be released into the public domain. 99 | 100 | \end{enumerate} 101 | 102 | \vfill 103 | These propositions are regarded as opposable and defendable, and have been approved as such by the promotor Prof.\ dr.\ J.\ Stoter and the copromotor Dr.\ H.\ Ledoux. 104 | 105 | \end{document} -------------------------------------------------------------------------------- /summary.txt: -------------------------------------------------------------------------------- 1 | Our world is three-dimensional and complex, continuously changing over time and appearing different at different scales. Yet, when we model it in a computer using Geographic Information Systems (GIS), we mostly use 2D representations, which essentially consist of linked points, lines and polygons. These representations are relatively easy to use and efficient, and a wide variety of methods is built on top of them. However, 2D representations are necessarily limiting. They force us to reduce problems to two dimensions, limit the type of objects we can represent, and complicate storing the relationships between different objects—especially when these are across time and different scales. Nevertheless, most research in GIS is devoted to improving these 2D representations, as well as to the development of new methods that build on them to solve problems, both old and new. 2 | 3 | This thesis explores a new, fundamentally different modelling approach—integrating both spatial and non-spatial characteristics as dimensions in the geometric sense, specifically targeting the cases of time and scale. While this has been proposed before at a conceptual level, this thesis aims to realise the fundamental aspects of a higher-dimensional GIS by developing higher-dimensional (nD) representations, as well as new methods operating on them to create, manipulate and visualise geographic information. As this thesis shows, the higher-dimensional approach is undoubtedly memory-intensive, but it is also very powerful, as it provides a simple and consistent way to store geometry, attributes and the topological relationships between objects of any dimension. This generic approach can also be easily extended to handle other non-spatial characteristics, enabling better data management that is consistent across dimensions and more powerful operations, such as checking if two objects are adjacent at any point in time. 4 | 5 | In order to model higher-dimensional space, it is best to consider an nD space subdivision as a base, which is conceptualised as an n-dimensional simplicial complex or cell complex. This can then be implemented with a simplex-based data structure, with an incidence graph, as a set of Nef polyhedra, or—as done in this thesis—by using ordered topological models such as the cell-tuple and generalised/combinatorial maps. 6 | 7 | Creating computer representations of higher-dimensional objects can be complex. Common construction methods used in 2D and 3D, such as directly manipulating combinatorial primitives, or using primitive-level construction operations (such as Euler operators), rely on our intuition of 2D/3D geometry, and thus do not work well in higher dimensions. It is therefore all too easy to create invalid objects, which then cannot be easily interpreted or fixed—a problem that is already exceedingly apparent in three dimensions. 8 | 9 | As a way to easily create representations of higher-dimensional objects, this thesis proposes three novel higher-level methods, all of which are intuitive to use and attempt to create valid output. Extrusion takes an (n-1)-dimensional cell complex and a set of intervals per cell, projecting them parallel to a new axis in order to create an n-dimensional cell complex. Incremental construction describes an n-dimensional object based on its (n-1)-dimensional boundary, from dimension zero (points) and then upwards. Finally, a 4D model can be constructed from a series of 3D models at different levels of detail (LODs) by linking them. 10 | 11 | In order to visualise higher-dimensional models, as well as to be able to process them in existing software, it is important to have methods to extract meaningful 2D/3D subsets from them. % Such methods would consist of two steps: (i) selecting a subset of the objects in the model and (ii) projecting this subset to a lower dimension. As a stepping stone towards such methods, this thesis shows how n-dimensional to (n-1)-dimensional orthographic and perspective projections can be defined. 12 | 13 | Finally, this thesis placed an emphasis on validating the algorithms with real-world datasets, which was only possible by developing methods to repair the invalid datasets that are widespread in practice. This thesis thus contains methods to create valid polygons and planar partitions using a constrained triangulation of the input, as well as a method to repair polyhedra and space subdivisions by snapping together lower-dimensional primitives and removing overlaps using Boolean set operations on Nef polyhedra. This allowed tests with up to 6D datasets based on real-world data—a good base for higher-dimensional GIS. 14 | 15 | In the future, the work in this thesis will be extended with higher-dimensional modification operations, true 4D spatiotemporal datasets and repair methods with quality guarantees. All implementations made for this thesis are publicly available under open source licences. -------------------------------------------------------------------------------- /pre.tex: -------------------------------------------------------------------------------- 1 | % !TEX root = thesis.tex 2 | 3 | % Front cover 4 | % \includepdf{cover-front.pdf} 5 | 6 | % Half-title 7 | \author{Ken Arroyo Ohori} 8 | \title{Higher-dimensional modelling of geographic information} 9 | \date{} 10 | \maketitle 11 | 12 | % Copyright page 13 | \clearpage 14 | \thispagestyle{empty} 15 | \null% 16 | \label{thesis:colophon} 17 | \vfill 18 | \pdfbookmark[1]{Colophon}{thesis:colophon} 19 | Written in 2014--2016 by 20 | {\makeatletter 21 | \href{http://ken.mx}{\@author}% 22 | \makeatother}. 23 | 24 | \textbf{ISBN:}\ 978--1--326--59638--5 25 | 26 | \textbf{No copyright}\\ 27 | \cczero\ This thesis is released into the public domain using the CC0 code. 28 | To the extent possible under law, I waive all copyright and related or neighbouring rights to this work. 29 | 30 | To view a copy of the CC0 code, visit: \\ 31 | \url{http://creativecommons.org/publicdomain/zero/1.0/} 32 | 33 | \textbf{Caveat} \\ 34 | I am very happy to release \emph{my own text and figures} without any restrictions whatsoever. 35 | As far as I am concerned, any \emph{attribution is very much appreciated} but it is not required. 36 | However, this does not except anyone from following the academic practices on attribution as applicable to them. 37 | Also, I must note that throughout this thesis I have used several excerpts of others' text, images and code, which I have always been careful to mark as such. 38 | While I am myself allowed to use these excerpts under legal \emph{fair use} doctrines in many countries and more specifically by the citation right (\emph{citaatrecht}) in \href{http://wetten.overheid.nl/jci1.3:c:BWBR0001886&hoofdstuk=I¶graaf=6&artikel=15a&z=2015-07-01&g=2015-07-01}{Article 15a of the Dutch Copyright Law} (\emph{Auteurswet}), this does not mean that you are also free to use these excerpts for any purpose. 39 | 40 | \textbf{Colophon} \\ 41 | This thesis was typeset with \XeTeX\ 3.14159265--2.6--0.99992 (\TeX\ Live 2015) using the \mbox{{\fanciestfont{}Feijoa}}, \texttt{GT Pressura} and $\mathrm{Asana\ Math}$ typefaces. 42 | Most of the figures were created using OmniGraffle, Affinity Designer or Blender, often with the help of \LaTeX{}\textsuperscript{i}T. 43 | 44 | The source code of this thesis is available at: \\ 45 | \url{https://github.com/kenohori/thesis} 46 | 47 | \textbf{Cover} \\ 48 | Model of a 4D house represented as a 4D cell complex. 49 | The cells of the model were manually defined and embedded in $\mathbb{R}^4$, projected inwards/outwards to the volume of a 3-sphere ($S^3$), stereographically projected to $\mathbb{R}^3$ and exported as an\ {}.obj file. 50 | This was then imported in Blender and rendered using a perspective projection down to 2D. 51 | See \refse{se:4dto3d} for more details. 52 | 53 | % Official title 54 | \begin{titlepage} 55 | \null% 56 | \label{thesis:title} 57 | \vspace{3em}% 58 | \pdfbookmark[1]{Title}{thesis:title} 59 | \begin{center} 60 | 61 | %% Skip space as in half-title 62 | \vspace*{4\baselineskip} 63 | 64 | %% Print the title. 65 | {\makeatletter 66 | \fanciestfont\huge\@title% 67 | \makeatother} 68 | \vfill 69 | 70 | %% Apart from the names and dates, the following text is dictated by the 71 | %% promotieregelement. 72 | 73 | {\Large Proefschrift} 74 | 75 | \medskip 76 | 77 | {ter verkrijging van de graad van doctor \\ 78 | aan de Technische Universiteit Delft, \\ 79 | op gezag van de Rector Magnificus prof.~ir.~K.~C.~A.~M.~Luyben, \\ 80 | voorzitter van het College voor Promoties, \\ 81 | in het openbaar te verdedigen op \\ 82 | 6 april 2016 om 12.30 uur} 83 | 84 | \medskip 85 | 86 | door 87 | 88 | \medskip 89 | 90 | %% Print the full name of the author. 91 | \makeatletter 92 | {\Large Gustavo Adolfo Ken {\scshape Arroyo Ohori}} 93 | \makeatother 94 | 95 | \medskip 96 | 97 | Master of Science in Geomatics \\ 98 | geboren te Mexico-Stad, Mexico. 99 | 100 | \end{center} 101 | \end{titlepage} 102 | 103 | % Official verso 104 | \clearpage 105 | \thispagestyle{empty} 106 | \null% 107 | \label{thesis:committee} 108 | \vfill 109 | \pdfbookmark[1]{Doctoral committee}{thesis:committee} 110 | 111 | \noindent This dissertation has been approved by the 112 | 113 | \medskip\noindent 114 | \begin{tabular}{@{}ll@{}} 115 | \quad{}promotor: & Prof.\ dr.\ J.\ Stoter \\ 116 | \quad{}copromotor: & Dr.\ H.\ Ledoux \\ 117 | \\ 118 | \multicolumn{2}{@{}l@{}}{Composition of the doctoral committee:} \\ 119 | \\ 120 | \quad{}Rector Magnificus & chairperson \\ 121 | \quad{}Prof.\ dr.\ J.\ Stoter & Delft University of Technology, promotor \\ 122 | \quad{}Dr.\ H.\ Ledoux & Delft University of Technology, copromotor \\ 123 | \\ 124 | \multicolumn{2}{@{}l@{}}{Independent members:} \\ 125 | \\ 126 | \quad{}Prof.\ dr.\ E.\ Eisemann & Delft University of Technology \\ 127 | \quad{}Prof.\ dr.\ M.\ van\ Kreveld & Utrecht University \\ 128 | \quad{}Dr.\ R.\ Lindenbergh & Delft University of Technology \\ 129 | \quad{}Prof.\ dr.\ ir.\ A.\ van\ Timmeren & Delft University of Technology \\ 130 | \\ 131 | \multicolumn{2}{@{}l@{}}{Other member:} \\ 132 | \\ 133 | \quad{}Dr.\ G.\ Damiand & Claude Bernard University Lyon 1 \\ 134 | \end{tabular} 135 | 136 | This research was supported by the Dutch Technology Foundation STW, which is part of the Netherlands Organisation for Scientific Research (NWO), and which is partly funded by the Ministry of Economic Affairs (Project code: 11300). -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | CC0 1.0 Universal 2 | 3 | Statement of Purpose 4 | 5 | The laws of most jurisdictions throughout the world automatically confer 6 | exclusive Copyright and Related Rights (defined below) upon the creator and 7 | subsequent owner(s) (each and all, an "owner") of an original work of 8 | authorship and/or a database (each, a "Work"). 9 | 10 | Certain owners wish to permanently relinquish those rights to a Work for the 11 | purpose of contributing to a commons of creative, cultural and scientific 12 | works ("Commons") that the public can reliably and without fear of later 13 | claims of infringement build upon, modify, incorporate in other works, reuse 14 | and redistribute as freely as possible in any form whatsoever and for any 15 | purposes, including without limitation commercial purposes. These owners may 16 | contribute to the Commons to promote the ideal of a free culture and the 17 | further production of creative, cultural and scientific works, or to gain 18 | reputation or greater distribution for their Work in part through the use and 19 | efforts of others. 20 | 21 | For these and/or other purposes and motivations, and without any expectation 22 | of additional consideration or compensation, the person associating CC0 with a 23 | Work (the "Affirmer"), to the extent that he or she is an owner of Copyright 24 | and Related Rights in the Work, voluntarily elects to apply CC0 to the Work 25 | and publicly distribute the Work under its terms, with knowledge of his or her 26 | Copyright and Related Rights in the Work and the meaning and intended legal 27 | effect of CC0 on those rights. 28 | 29 | 1. Copyright and Related Rights. A Work made available under CC0 may be 30 | protected by copyright and related or neighboring rights ("Copyright and 31 | Related Rights"). Copyright and Related Rights include, but are not limited 32 | to, the following: 33 | 34 | i. the right to reproduce, adapt, distribute, perform, display, communicate, 35 | and translate a Work; 36 | 37 | ii. moral rights retained by the original author(s) and/or performer(s); 38 | 39 | iii. publicity and privacy rights pertaining to a person's image or likeness 40 | depicted in a Work; 41 | 42 | iv. rights protecting against unfair competition in regards to a Work, 43 | subject to the limitations in paragraph 4(a), below; 44 | 45 | v. rights protecting the extraction, dissemination, use and reuse of data in 46 | a Work; 47 | 48 | vi. database rights (such as those arising under Directive 96/9/EC of the 49 | European Parliament and of the Council of 11 March 1996 on the legal 50 | protection of databases, and under any national implementation thereof, 51 | including any amended or successor version of such directive); and 52 | 53 | vii. other similar, equivalent or corresponding rights throughout the world 54 | based on applicable law or treaty, and any national implementations thereof. 55 | 56 | 2. Waiver. To the greatest extent permitted by, but not in contravention of, 57 | applicable law, Affirmer hereby overtly, fully, permanently, irrevocably and 58 | unconditionally waives, abandons, and surrenders all of Affirmer's Copyright 59 | and Related Rights and associated claims and causes of action, whether now 60 | known or unknown (including existing as well as future claims and causes of 61 | action), in the Work (i) in all territories worldwide, (ii) for the maximum 62 | duration provided by applicable law or treaty (including future time 63 | extensions), (iii) in any current or future medium and for any number of 64 | copies, and (iv) for any purpose whatsoever, including without limitation 65 | commercial, advertising or promotional purposes (the "Waiver"). Affirmer makes 66 | the Waiver for the benefit of each member of the public at large and to the 67 | detriment of Affirmer's heirs and successors, fully intending that such Waiver 68 | shall not be subject to revocation, rescission, cancellation, termination, or 69 | any other legal or equitable action to disrupt the quiet enjoyment of the Work 70 | by the public as contemplated by Affirmer's express Statement of Purpose. 71 | 72 | 3. Public License Fallback. Should any part of the Waiver for any reason be 73 | judged legally invalid or ineffective under applicable law, then the Waiver 74 | shall be preserved to the maximum extent permitted taking into account 75 | Affirmer's express Statement of Purpose. In addition, to the extent the Waiver 76 | is so judged Affirmer hereby grants to each affected person a royalty-free, 77 | non transferable, non sublicensable, non exclusive, irrevocable and 78 | unconditional license to exercise Affirmer's Copyright and Related Rights in 79 | the Work (i) in all territories worldwide, (ii) for the maximum duration 80 | provided by applicable law or treaty (including future time extensions), (iii) 81 | in any current or future medium and for any number of copies, and (iv) for any 82 | purpose whatsoever, including without limitation commercial, advertising or 83 | promotional purposes (the "License"). The License shall be deemed effective as 84 | of the date CC0 was applied by Affirmer to the Work. Should any part of the 85 | License for any reason be judged legally invalid or ineffective under 86 | applicable law, such partial invalidity or ineffectiveness shall not 87 | invalidate the remainder of the License, and in such case Affirmer hereby 88 | affirms that he or she will not (i) exercise any of his or her remaining 89 | Copyright and Related Rights in the Work or (ii) assert any associated claims 90 | and causes of action with respect to the Work, in either case contrary to 91 | Affirmer's express Statement of Purpose. 92 | 93 | 4. Limitations and Disclaimers. 94 | 95 | a. No trademark or patent rights held by Affirmer are waived, abandoned, 96 | surrendered, licensed or otherwise affected by this document. 97 | 98 | b. Affirmer offers the Work as-is and makes no representations or warranties 99 | of any kind concerning the Work, express, implied, statutory or otherwise, 100 | including without limitation warranties of title, merchantability, fitness 101 | for a particular purpose, non infringement, or the absence of latent or 102 | other defects, accuracy, or the present or absence of errors, whether or not 103 | discoverable, all to the greatest extent permissible under applicable law. 104 | 105 | c. Affirmer disclaims responsibility for clearing rights of other persons 106 | that may apply to the Work or any use thereof, including without limitation 107 | any person's Copyright and Related Rights in the Work. Further, Affirmer 108 | disclaims responsibility for obtaining any necessary consents, permissions 109 | or other rights required for any use of the Work. 110 | 111 | d. Affirmer understands and acknowledges that Creative Commons is not a 112 | party to this document and has no duty or obligation with respect to this 113 | CC0 or use of the Work. 114 | 115 | For more information, please see 116 | 117 | 118 | -------------------------------------------------------------------------------- /preface.tex: -------------------------------------------------------------------------------- 1 | % !TEX root = thesis.tex 2 | 3 | \chapter*{Preface} 4 | % \addcontentsline{toc}{chapter}{Preface} 5 | 6 | We usually associate the three usual dimensions with length, width and height (in any order), and the fourth dimension with time. 7 | However, mathematically, dimensions are essentially a artificial construct and do not have a fixed meaning linked to any specific aspect of reality. 8 | By associating each dimension with a variable, they can be used to represent pretty much anything that we can put a parameter to. 9 | Within this thesis, representations of any dimension are thus used to model various aspects of geographic information, such as the typical geographic coordinates, but also time and scale. 10 | 11 | At the end of the 19th century, a couple of non-scientific books were notable for popularising thinking about dimensions, the satyrical \emph{Flatland: A Romance of Many Dimensions} \citep{Abbott84} (\reffig{fig:flatland}), and the more serious \emph{A New Era of Thought} \citep{Hinton88}. 12 | These books used playful analogies between familiar 0D--3D situations and those in higher dimensions, attempting to give readers an intuitive feeling of what these abstract higher dimensions are like. 13 | Plenty of others continue to follow in their footsteps (\reffig{fig:futurama}). 14 | 15 | \marginpar{ 16 | \captionsetup{type=figure} 17 | \includegraphics[width=\marginparwidth]{figs/flatland} 18 | \caption[Sphere tries to explain the nature of 3D space to Square]{As Sphere tries to explain the nature of 3D space to Square by passing through its plane of view: `\emph{You cannot indeed see more than one of my sections, or Circles, at a time; for you have no power to raise your eye out of the plane of Flatland; but you can at least see that, as I rise in Space, so my sections become smaller}' \citep{Abbott84}.} 19 | \label{fig:flatland} 20 | } 21 | 22 | \marginpar{ 23 | \captionsetup{type=figure} 24 | \includegraphics[width=\marginparwidth]{figs/futurama} 25 | \caption[Farnsworth explains why a two-ended digestive system cannot exist in 2D]{As Professor Farnsworth explains why a two-ended digestive system cannot exist in a 2D world: `\emph{As you can see, or rather can't see, but take my word for it, such a digestive system would divide a 2D being into separate pieces.}'. From Futurama season 7 episode 14.} 26 | \label{fig:futurama} 27 | } 28 | 29 | In order to ensure that all descriptions are formally correct, this thesis necessarily uses some formal descriptions for its data structures and algorithms. 30 | However, it also tries to provide intuitive explanations and analogies across different dimensions, offering explanations of higher-dimensional problems based on our intuitive knowledge of similar 2D and 3D cases. 31 | I hope that the result is approachable and serves to broach the subject in a practical way, and that potential readers (if any) are not put off by overly technical explanations or by the overly simplistic examples that I am able to draw. 32 | 33 | \section*{About this thesis} 34 | 35 | During the past 4+ years I have found many things to love about the scientific process, but many things to hate about how its results are released and published. 36 | More than a century after Leo Tolstoy's \emph{Letter to the Free Age Press}\footnote{\url{https://en.wikisource.org/wiki/Letter_to_the_Free_Age_Press}} and 20 years after Stevan Harnad's \emph{subversive proposal}\footnote{\url{https://en.wikipedia.org/wiki/Subversive_Proposal}}, it is rather sad to see that so much science is still kept behind paywalls or stymied by legal restrictions even when it is taxpayer-funded. 37 | % \footnote{Something that is true for much industry research as well, which is paid from tax exemptions on R\&D}. 38 | This is not only damaging to scientific discourse, but it keeps important knowledge from the public at large, including educators and legislators. 39 | % The industry is of course all too glad to fill this void with duplicitous studies, which are often pushed by lobbyists in slick packaging. 40 | 41 | At the same time, there is a concerted effort to restrict knowledge creation and creative expression through draconian intellectual property laws, including providing IP holders with special (extra)legal privileges and misappropriating author and user rights while extending already excessive copyright terms. 42 | Plenty of laws have been enacted on the matter with a complete lack of transparency, despite obvious harm to users and evidence to a lack of economic benefits \citep{Hargreaves11,Reda14,EFI15}. 43 | % For all intents and purposes, a system ostensibly created for the protection of authors have been co-opted by the copyright industries. 44 | 45 | By releasing this thesis' contents into the public domain and making its source publicly available, I wish to make a small statement about how I believe science should be distributed in the future---openly and without restrictions. 46 | Open access journals are a step in the right direction\footnote{Even as many of them have abusive fees that bear no relation with the marginal cost of internet distribution.}, but I hope it is not too long before we are able to get rid of profit-driven journals and publishers altogether. 47 | 48 | Following in the same spirit, the source code of the main prototype implementations that were developed during this PhD project have also been made publicly available under permissive licences, which are linked to in the corresponding parts of this thesis. 49 | As others have pointed out before me\footnote{See for instance \citet{Morin12}, \citet{Joppa13} and \citet{Ince12}}, there is a great disparity between the alleged importance of scientific evidence and widespread acceptance of not disclosing software implementations. 50 | % More cogently, \emph{there is no such thing as reproducibility without source code}. 51 | 52 | \section*{Acknowledgements} 53 | 54 | My utmost thanks go to my supervisors, \textbf{Hugo} and \textbf{Jantien}. 55 | They not only provided me with \emph{years} of employment and the wonderful opportunity to work on this PhD, but were always there with good ideas, and all the guidance and support anyone could ever wish. 56 | I am also very grateful to \textbf{Guillaume} for hosting me in Lyon and helping me to understand the details of his CGAL packages, which were used in large parts of this thesis. 57 | 58 | Special thanks go to everyone else in the \textbf{3D geoinformation} group during my time there (\textbf{Filip}, \textbf{Liu}, \textbf{Ravi}, \textbf{Sisi} and \textbf{Zhiyong}). 59 | It is truly a fantastic place to work and I feel privileged to have been able to contribute to it with my grain of sand. 60 | 61 | I am also thankful to everyone at \textbf{GIS technology} (\textbf{Edward}, \textbf{Elfriede}, \textbf{Marian}, \textbf{Martijn}, \textbf{Peter}, \textbf{Radan}, \textbf{Theo}, \textbf{Tjeu}, and \textbf{Wilko}). 62 | Many of them gave me insightful comments and support, especially so for Peter at the start of this PhD. 63 | 64 | Last but not least, I especially thank my mother, \textbf{Kimiyo}, who has always been there supporting me, and my \textbf{close friends} in Mexico, the Netherlands and elsewhere, who made sure I always had things to enjoy outside work. 65 | I could not mention you all by name without making a dubious classification, which I do not want to do, and so I hope you will forgive me for just refusing to do so. 66 | \emph{Thank you all}. -------------------------------------------------------------------------------- /dictionary.tex: -------------------------------------------------------------------------------- 1 | % !TEX root = thesis.tex 2 | 3 | \chapter{A short dictionary of dimension-based GIS terms} 4 | \label{ch:dictionary} 5 | 6 | \begin{multicols}{2} 7 | 8 | \begin{description} 9 | \footnotesize 10 | 11 | \item[ambient space] 12 | the space in which objects are embedded. 13 | 14 | \item[area] 15 | 1.\ measure of the 2D extent of an object; 16 | 2.\ 2D combinatorial element; 17 | {\color{gray} 3.\ 2D geometric object}. 18 | 19 | \item[ball] 20 | 1.\ ($\rightarrow$\ same as 3-\emph{ball}) topological definition of the space within a 2-sphere (\ie\ a sphere), often defined as the space within a certain distance (the radius) from a point in $\mathbb{R}^3$ (the centre); 21 | 2.\ ($\rightarrow$\ often $n$-\emph{ball}) topological definition of the space within an $(n-1)$-sphere, often defined as the space within a certain distance (the radius) from a point in $\mathbb{R}^n$ (the centre); 22 | 3.\ geometric definition of a perfectly round filled 3D object. 23 | 24 | \item[body] 25 | $n$-dimensional combinatorial element in an $n$D context. 26 | 27 | \item[box] 28 | 1.\ cuboid; 29 | 2.\ orthotope of any dimension. 30 | 31 | \item[cavity] 32 | 3D hole. 33 | 34 | \item[cell] 35 | 1.\ ($\rightarrow$\ sometimes $n$-\emph{cell}) $n$D combinatorial element; 36 | {\color{gray} 2.\ 3D combinatorial element}. 37 | 38 | \item[cell complex] 39 | topological space formed by a set of cells glued along common faces, all faces of a cell in the complex should be in the complex. 40 | 41 | \item[circle] 42 | 1.\ topological definition of the space at a certain distance (the radius) from a point in $\mathbb{R}^2$ (the centre); 43 | 2.\ geometric definition of a perfectly round hollow 2D object. 44 | 45 | \item[closed] 46 | 1.\ topological definition of an object that includes its boundary; 47 | 2.\ geometric definition of an object in $n$D, usually defined using boundary representation, that encloses an $n$D subspace. 48 | 49 | \item[congruent] 50 | having the same shape and size. 51 | 52 | \item[cube] 53 | 1.\ ($\rightarrow$\ same as $3$-\emph{cube}) 3D polyhedron with 6 square facets; 54 | 2.\ ($\rightarrow$\ usually $n$-\emph{cube}) $n$-orthotope with identical $(n-1)$-cube facets, akin to a square in 2D and a cube in 3D. 55 | 56 | \item[cuboid] 57 | 1.\ box-shaped 3D polyhedron with 6 rectangular facets, its opposite facets are congruent and parallel; 58 | {\color{gray} 2.\ parallelotope}. 59 | 60 | \item[curve] 61 | 1.\ 1D geometric object, often with a non-linear geometry; 62 | 2.\ 1D combinatorial element; 63 | 3.\ 1-manifold. 64 | 65 | \item[cut-line] 66 | degenerate part of a 2D shape forming a curve and protruding inwards from its boundary. 67 | 68 | \item[disk] 69 | topological definition of the space within a circle, often defined as the space within a certain distance (the radius) from a point in $\mathbb{R}^2$ (the centre). 70 | 71 | \item[edge] 72 | 1D combinatorial element. 73 | 74 | \item[face] 75 | 1.\ 2D combinatorial element; 76 | 2.\ ($\rightarrow$\ sometimes \emph{$n$-face of $X$}) $n$D combinatorial element on the boundary of $X$; 77 | {\color{gray} 3.\ ($\rightarrow$\ usually \emph{face of $X$}) $(n-1)$D combinatorial element on the boundary of an $n$D combinatorial element $X$}. 78 | 79 | \item[facet] 80 | 1.\ $(n-1)$D combinatorial element in an $n$D context; 81 | 2.\ ($\rightarrow$\ often \emph{facet of $X$}) $(n-1)$D combinatorial element on the boundary of an $n$D combinatorial element $X$; 82 | {\color{gray} 3.\ 2D combinatorial element}. 83 | 84 | \item[flat] 85 | unbounded geometric object with linear geometry of any dimension, such as a point, line or plane. 86 | 87 | \item[hole] 88 | 1.\ 2D void region; 89 | 2.\ $n$D void region. 90 | 91 | \item[hyperball] 92 | higher-dimensional ball. 93 | 94 | \item[hypercell] 95 | 1.\ higher-dimensional combinatorial element; 96 | 2.\ 4D combinatorial element. 97 | 98 | \item[hypercube] 99 | 1.\ higher-dimensional cube; 100 | 2.\ 4-cube. 101 | 102 | \item[hyperplane] 103 | 1.\ $(n-1)$D linear subspace in an $n$D context; 104 | {\color{gray} 2.\ plane in a higher-dimensional context.} 105 | 106 | \item[hyperrectangle] 107 | higher-dimensional orthotope. 108 | 109 | \item[hypersphere] 110 | higher-dimensional sphere. 111 | 112 | \item[hypersurface] 113 | $(n-1)$D subspace in an $n$D context, often curved; 114 | 115 | \item[interval] 116 | topological definition of the space between two points in $\mathbb{R}$ (the endpoints). 117 | 118 | \item[Lebesgue measure] 119 | measure of the $n$D extent of an object, akin to length in 1D, area in 2D and volume in 3D. 120 | 121 | \item[length] 122 | measure of the 1D extent of an object. 123 | 124 | \item[line segment] 125 | 1D geometric object. 126 | 127 | \item[manifold] 128 | ($\rightarrow$\ sometimes $n$-\emph{manifold}) topological space that resembles $\mathbb{R}^n$ at every point. 129 | 130 | \item[manifold with boundary] 131 | ($\rightarrow$\ sometimes $n$-\emph{manifold with boundary}) topological space that resembles $\mathbb{R}^n$ at every point in its interior. 132 | 133 | \item[node] 134 | 0D combinatorial element. 135 | 136 | \item[open] 137 | 1.\ topological definition of an object that does not include its boundary; 138 | 2.\ geometric definition of an object in $n$D, usually defined using boundary representation, that does not enclose any $n$D subspace. 139 | 140 | \item[orthotope] 141 | ($\rightarrow$\ sometimes $n$-\emph{orthotope}) $n$-polytope with congruent parallel facets forming right angles to each other, akin to a rectangle in 2D and a cuboid in 3D. 142 | 143 | \item[parallelepiped] 144 | 3D polyhedron bounded by 6 parallelogram-shaped 2D faces. 145 | 146 | \item[parallelogram] 147 | polygon bounded by 4 parallel and have the same shape. 148 | 149 | \item[parallelotope] 150 | a polytope whose opposite facets are parallel and have the same shape, akin to a parallelogram in 2D and a parallelepiped in 3D. 151 | 152 | \item[peak] 153 | 1.\ $(n-3)$D combinatorial element in an $n$D context; 154 | 2.\ ($\rightarrow$\ \emph{peak of $X$}) $(n-3)$D combinatorial element on the boundary of an $n$D combinatorial element $X$; 155 | 156 | \item[plane] 157 | 2D unbounded linear subspace. 158 | 159 | \item[point] 160 | 1.\ 0D geometric element; 161 | 2.\ topological definition of the space at one location. 162 | 163 | \item[polychoron] 164 | 4D geometric object with linear geometry. 165 | 166 | \item[polygon] 167 | 2D geometric object with linear geometry, possibly with holes. 168 | 169 | \item[polygonal curve] 170 | curve formed by a sequence of line segments joined at their endpoints. 171 | 172 | \item[polyhedron] 173 | 1.\ 3D geometric object with linear geometry, possibly with holes; 174 | {\color{gray} 2.\ an $n$D geometric object with linear geometry}. 175 | 176 | \item[polyline] 177 | curve formed by a sequence of line segments joined at their endpoints. 178 | 179 | \item[polyteron] 180 | 5D geometric object with linear geometry. 181 | 182 | \item[polytope] 183 | $n$D geometric object with linear geometry. 184 | 185 | \item[puncture] 186 | 0D (point) hole, often formed from a degenerate polyline or polygon. 187 | 188 | \item[ridge] 189 | 1.\ $(n-2)$D combinatorial element in an $n$D context; 190 | 2.\ ($\rightarrow$\ \emph{ridge of $X$}) $(n-2)$D combinatorial element on the boundary of an $n$D combinatorial element $X$. 191 | 192 | \item[line string] 193 | curve formed by joining a sequence of vertices by straight line segments, represented by these vertices. 194 | 195 | \item[linear ring] 196 | 2D geometric object with linear geometry represented as a sequence of vertices. 197 | 198 | \item[ring] 199 | 2D combinatorial element represented by its 1D boundary. 200 | 201 | \item[subfacet] 202 | 1.\ $(n-2)$D combinatorial element in an $n$D context; 203 | 2.\ ($\rightarrow$\ \emph{subfacet of $X$}) $(n-2)$D combinatorial element on the boundary of an $n$D combinatorial element $X$. 204 | 205 | \item[shell] 206 | 3D geometric object with linear geometry without 3D holes, usually defined as the volume enclosed by its 2D boundary, often represented as a set of 2D faces. 207 | 208 | \item[simplex] 209 | 1.\ ($\rightarrow$\ sometimes \emph{$n$-simplex}) combinatorial element with $n+1$ vertices and $n+1$ facets; 210 | 2.\ ($\rightarrow$\ sometimes \emph{$n$-simplex}) geometric object based on $n+1$ affinely independent vertices, akin to a point in 0D, a line segment in 1D, a triangle in 2D, or a tetrahedron in 3D. 211 | 212 | \item[simplicial complex] 213 | 1.\ ($\rightarrow$\ sometimes \emph{abstract simplicial complex}) topological space formed by a set of simplices glued along common faces, all faces of a simplex in the complex should be in the complex; 214 | 2.\ ($\rightarrow$\ sometimes \emph{geometric simplicial complex}) abstract simplicial complex where simplices are embedded into Euclidean space, their interiors should not intersect geometrically. 215 | 216 | \item[solid] 217 | 1.\ 3D geometric object with linear geometry, possibly with 3D holes, often represented as a set of shells; 218 | 2.\ object defined based on solid modelling, often as opposed one based on boundary representation; 219 | 3.\ an object containing its interior (as opposed to \emph{hollow}). 220 | 221 | \item[spike] 222 | degenerate part of a 2D shape forming a curve, often protruding outwards from its boundary. 223 | 224 | \item[sphere] 225 | 1.\ ($\rightarrow$\ same as $2$-\emph{sphere}) topological definition of the space at a certain distance (the radius) from a point in $\mathbb{R}^3$ (the centre); 226 | 2.\ ($\rightarrow$\ often $n$-\emph{sphere}) topological definition of the space at a certain distance (the radius) from a point in $\mathbb{R}^{n+1}$ (the centre); 227 | 3.\ geometric definition of a perfectly round hollow 3D object. 228 | 229 | \item[surface] 230 | 1.\ 2-manifold; 231 | 2.\ 2D combinatorial element. 232 | 233 | \item[tesseract] 234 | 4-cube: polychoron with 8 cubical facets. 235 | 236 | \item[vertex] 237 | 0D combinatorial element. 238 | 239 | \item[volume] 240 | 1.\ measure of the 3D extent of an object; 241 | 2.\ 3D combinatorial element. 242 | 243 | \item[wire] 244 | 2D combinatorial element represented by its 1D boundary. 245 | 246 | \end{description} 247 | 248 | \end{multicols} 249 | 250 | % \begin{table} 251 | % \scriptsize 252 | % \begin{tabular}{ccccccc} 253 | % \toprule 254 | % \multicolumn{7}{c}{dimension} \\ 255 | % $n$ & 0 & 1 & 2 & 3 & 4 \\ 256 | % \midrule 257 | % \multicolumn{7}{c}{topological} \\ 258 | % $n$-simplex & vertex & edge & face & volume \\ 259 | % $n$-cell & vertex & edge & face & volume \\ 260 | % $n$-sphere & pair of points & circle & sphere \\ 261 | % $n$-ball & & interval & disk & ball \\ 262 | % open $n$-ball & & open interval & open disk & open ball \\ 263 | % $n$-manifold & discrete space & curve & surface \\ 264 | % \midrule 265 | % \multicolumn{7}{c}{geometric} \\ 266 | % $n$-simplex & point & line segment & triangle & tetrahedron & pentachoron \\ 267 | % $n$-cube & point & square & cube & tesseract \\ 268 | % $n$-orthotope & point & line segment & rectangle & cuboid/box \\ 269 | % $n$-parallelotope & point & line segment & parallelogram & parallelepiped \\ 270 | % prismatic $n$-polytope & & line segment & rectangle & prism & prismatic polychoron \\ 271 | % $n$-polytope & point & line segment & polygon & polyhedron & polychoron \\ 272 | % \midrule 273 | % \multicolumn{7}{c}{other} \\ 274 | % $n$-th Lebesgue measure & length & area & volume \\ 275 | % & & collinear & coplanar \\ 276 | % \bottomrule 277 | % \end{tabular} 278 | % \end{table} 279 | -------------------------------------------------------------------------------- /implementation.tex: -------------------------------------------------------------------------------- 1 | % !TEX root = thesis.tex 2 | 3 | \chapter{Implementing higher-dimensional representations and operations} 4 | \label{ch:implementation} 5 | 6 | The higher-dimensional representations described in \refpa{pa:representation} and the operations described in \refpa{pa:operations} can be difficult to implement, especially when we expect these implementations to be fast, robust, generic, compact and dimension-independent. 7 | This is true even when the basic ideas and algorithms are provided, as has been done in this thesis. 8 | 9 | For the sake of full reproducibility, this chapter shows some of the key implementation details that are used to efficiently implement the representations and operations described in this thesis. 10 | \refse{se:libraries} lists the main libraries that were used and how they were used. 11 | \refse{se:computerarithmetic} explains the main techniques that are used to perform arithmetic and geometric operations robustly. 12 | Finally, \refse{se:traits} describes the traits programming technique and its use in CGAL and this thesis to produce dimension-independent efficient implementations. 13 | 14 | \section{Main libraries used within this thesis} 15 | \label{se:libraries} 16 | 17 | \begin{description} 18 | 19 | \item[CGAL\footnotemark] 20 | \footnotetext{\url{http://www.cgal.org}} 21 | (the Computational Geometry Algorithms Library) contains a wide variety of 2D/3D/$n$D data structures and computational geometry algorithms. 22 | Some of its basic packages are directly used within this thesis to store and manipulate numbers and basic shapes, namely: Algebraic Foundations, Number Types, 2D and 3D Linear Geometry Kernel, and $d$D Geometry Kernel. 23 | Most significantly, the packages Combinatorial Maps and Linear Cell Complex are used in most of the implementations described in the previous chapters. 24 | Finally, other packages are used as temporary data structures and to process and clean input data: 3D Polyhedral Surface, Halfedge Data Structures, 3D Boolean Operations on Nef Polyhedra, 2D Triangulation, and Principal Component Analysis. 25 | A few other packages are used as dependencies of the aforementioned packages. 26 | 27 | \item[GDAL\footnotemark] 28 | \footnotetext{\url{http://www.gdal.org}} 29 | (the Geospatial Data Abstraction Library) reads and writes commonly used GIS file formats. 30 | Within this thesis, its OGR vector module is mainly used to read and write polygons described as well-known text \citep{SimpleFeatures1}, or in Esri Shapefile \citep{Shapefile} and FileGDB files. 31 | 32 | \item[IfcOpenShell\footnotemark] 33 | \footnotetext{\url{http://www.ifcopenshell.org}} 34 | is a library that is able to read and write IFC files \citep{ISO16739:2013}. 35 | It internally uses the Open CASCADE geometry types, including to convert implicit geometries (\eg\ those built using constructive-solid geometry or sweeps as in \reffig{fig:ifc}) into explicit ones that can be stored using boundary representation, or to create meshes of a given degree of accuracy from curved surfaces. 36 | 37 | \item[Open CASCADE\footnotemark] 38 | \footnotetext{\url{http://www.opencascade.org}} 39 | is a library that is able to manipulate geometric representations in CAD applications. 40 | In theory, it supports complex geometric operations between implicit geometries, including Boolean set operations with 3D point sets. 41 | However, in practice it performs poorly with GIS data, often failing due to numerical errors or imperfect data. 42 | 43 | \end{description} 44 | 45 | \section{Geometric operations using computer arithmetic} 46 | \label{se:computerarithmetic} 47 | 48 | Theoretical descriptions of geometric objects and geometric algorithms generally start from the notions of the Euclidean space $\mathbb{R}^n$, in which the coordinates of a point can be described precisely using real numbers ($\mathbb{R}$). 49 | However, as real numbers cannot be represented on (digital) computers, implementations usually opt for a combination of \emph{integer numbers} to represent whole numbers of known precision that are known to fall within a given interval and \emph{floating-point numbers} in all other cases. 50 | While integers can be precisely expressed as a sequence of binary digits of a given length, floating-point numbers often cannot. 51 | The latter are therefore usually\footnote{This is only the most common representation among those provided by the much broader IEEE 754 standard \citep{IEEE754-2008}, which provides for decimal numbers as well as special values for $\pm \infty$ and NaN (not a number), among other features.} expressed using binary numbers with a predefined number of bits. 52 | % as: 53 | 54 | % \begin{equation*} 55 | % {(-1)}^\mathrm{sign} \times 2^\mathrm{exponent} \times \mathrm{significand} 56 | % \end{equation*} 57 | 58 | % where the exponent is a positive integer and the significand is expressed as a normalised number. 59 | % As a normalised binary number always begins with \texttt{1.}, the first binary digit is known and therefore not stored. 60 | % The \emph{fraction} of the number (\ie\ the digits following the \texttt{1.}) is stored instead. 61 | % Single precision (or 32-bit) floating-point numbers use 1 bit for the sign, 8 bits for the exponent and 23 bits for the significand. 62 | % Double precision (or 64-bit) floating-point numbers use 1 bit for the sign, 11 bits for the exponent and 52 bits for the significand. 63 | 64 | Floating-point numbers can represent a wide range of values and work well in many instances. 65 | However, arithmetic performed using floating-point numbers needs special care, as it often leads to a loss of precision \citep{Goldberg91}. 66 | While this is a problem for all kinds of algorithms \citep{Hoffmann88}, geometric operations are particularly vulnerable as they often rely on getting a correct result for a large number of predicates, which can fail when dealing with edge cases \citep{Kettner08}, such as almost collinear or coplanar points. 67 | 68 | Many alternatives have been developed to deal with various limitations of integer and floating-point numbers. 69 | Among these, the ones described below are those that have been used for the implementations related to this thesis. 70 | \emph{Multiple precision arithmetic} is a generic solution that can achieve an arbitrary level of precision by using numbers with a user-definable number of digits. 71 | It is widely implemented in libraries such as GMP\footnote{\url{https://gmplib.org/}} and MPFR\footnote{\url{http://www.mpfr.org}}. 72 | 73 | Simple arithmetic operations can be computed precisely by using \emph{rational arithmetic}, where a number is stored as a ratio of two other numbers, most commonly integers. 74 | In a geometric context, this type of representation is often used in the form of homogeneous coordinates, where a single number is used as a common denominator for all of the coordinates. 75 | This common denominator can be used to represent special values, such as a point at infinity by setting it to zero. 76 | 77 | In \emph{interval arithmetic} numbers are substituted with intervals. 78 | When these are used to represent the error bounds of an operation\footnote{combined with correct rounding in the case of floating-point numbers}, it is possible to compute arithmetic operations with provably correct results \citep[Ch.~2]{Ratschek88}, such as those provided by the MPFI library\footnote{\url{https://perso.ens-lyon.fr/nathalie.revol/software.html}}. 79 | Unfortunately, while this setup using multiple precision interval arithmetic can be applied to most problems with relative ease, it is also very slow. 80 | For instance, \citet{Held11} reports a factor of 70 for the computation of Voronoi diagrams. 81 | 82 | It is possible to go around this problem by fine-tuning a multiple-precision approach to a specific problem. 83 | Notably, this is done with very good results for a few geometric predicates by \citet{Shewchuk97}, and the simulation of simplicity paradigm advocated by \citet{Edelsbrunner90}. 84 | A more generic and easier to implement solution is provided by the lazy evaluation scheme used in CGAL \citep{Pion11}, which is based on interval arithmetic and is the one used in this thesis. 85 | % , which is used in the implementations mentioned in this thesis. 86 | In it, the computationally expensive multiple precision operations are only computed when floating-point precision is not sufficient. 87 | As these cases are important to get correct results, but also relatively rare, it significantly improves the performance of most operations while maintaining their correctness. 88 | 89 | \section{Efficient and flexible dimension-independent programming} 90 | \label{se:traits} 91 | 92 | Previously, \refse{ss:dimensions} discussed how higher-dimensional representations have large sizes and methods using them have high computational complexities, which often increase exponentially on the dimension. 93 | However, there are also practical obstacles that make it difficult to implement dimension-independent structures and methods efficiently, especially when these have to be used in a generic setting such as in GIS, where varied objects of different dimensions need to be dynamically created and modified, as well as appended with possibly multiple attributes of various types. 94 | 95 | One of these obstacles is the need to allocate and use structures that are dimension- and data-independent, and therefore flexible enough to cover all the aforementioned use cases, but at the same time remain compact and allow their contents to be accessed efficiently. 96 | These structures can range from simple ones that can be handled by standard data types and containers, to more complex ones that need to be dynamically defined. 97 | For instance, some simple types are directly dependent on the dimension, such as $n$-tuples storing the coordinates of a point in $\mathbb{R}^n$, and can thus be stored as arrays or vectors. 98 | 99 | At the opposite end, consider the sets of extrusion intervals that were associated to each cell in \refch{ch:extrusion}, where an unknown number of cells need to be each associated with an unknown number of intervals. 100 | As the number of intervals per cell is not known, it is not possible to store the intervals in a fixed-length structure that is integrated into the embedding structure of each cell. 101 | Also, while it is possible to directly link a cell to its set of intervals from its embedding structure, these intervals are only temporarily needed, so allocating space for the intervals directly in the embedding structure is wasteful at all other times and thus difficult to justify. 102 | The end result was that the intervals per cell were kept in an external structure, where a \texttt{map} linked a cell embedding to a \texttt{set} of intervals. 103 | As \reftab{tab:complexitystd} shows, this means that accessing a given interval of a given cell---an operation that is performed a very large number of times---, takes logarithmic rather than constant time, significantly slowing the extrusion algorithm in practice. 104 | \marginpar{ 105 | \captionsetup{type=table} 106 | \centering 107 | \caption[Computational complexity of accessing an element in C++ containers]{The typical computational complexity of accessing a given element in common C++ containers \citep{ISO14882:2015}} 108 | \label{tab:complexitystd} 109 | \small 110 | \begin{tabular}{cc} 111 | \toprule 112 | structure & complexity \\ 113 | \midrule 114 | hard-coded & $O(1)$ \\ 115 | array/vector & $O(1)$ \\ 116 | map/set & $O(\log n)$ \\ 117 | list & $O(n)$ \\ 118 | \bottomrule 119 | \end{tabular} 120 | } 121 | 122 | A possible solution to the aforementioned problems is based on \emph{template meta-programming}. 123 | Template meta-programming is a technique that uses templates to generate certain data structures or perform certain computations during the compilation of a program rather than during its execution. 124 | Templates are normally used as a way to support generic programming, enabling the creation of functions that can deal with different data types indistinctly. 125 | A template might thus be instantiated with the dimension of an object or a particular attribute type, thus generating a data structure of the appropriate size and disposition whose members can be accessed in constant time. 126 | \reffig{fig:template-conversion} shows a slightly more complex example, where a template can be used to convert a string into any number type, which is used in this thesis to parse numbers from various types of files (\eg\ coordinates and identifiers). 127 | \begin{figure}[tb] 128 | \centering 129 | \small 130 | \lstinputlisting[language=C++]{figs/templateconversion.txt} 131 | \caption[Using C++ templates to convert a \texttt{string} into any number type]{Using C++ templates to convert a \texttt{string} containing a number into any number type $T$, including scientific notation. Adapted from \url{http://www.cplusplus.com/forum/articles/9645/}.} 132 | \label{fig:template-conversion} 133 | \end{figure} 134 | 135 | However, apart from their use in generic programming, templates can also be used to create complex dimension-dependent structures, such as through the use of the traits programming technique \citep{Myers95} used in CGAL, which exploits C++'s \texttt{typedef} declarations to create custom dependent types.\@ 136 | As an example, \reffig{fig:extrudedlcc} shows how the implementation of the extrusion algorithm defines a combinatorial map that is one dimension higher than the input, which is created during compilation. 137 | \begin{figure*}[tb] 138 | \centering 139 | \small 140 | \lstinputlisting[language=C++,numbers=left]{figs/extrudedlcc.txt} 141 | \caption[Creating a dependent type using C++ templates]{Using C++ templates it is possible to create dependent types such as the \texttt{Higher\_dimensional\_cell\_complex} defined in line 5 and used in line 15.} 142 | \label{fig:extrudedlcc} 143 | \end{figure*} 144 | 145 | This type of mechanism can be used to a much higher degree by defining \emph{recursive templates}, which are used extensively in the CGAL Combinatorial Maps package. 146 | As an example, \reffig{fig:dimensionindependent} shows how this was applied in order to store the extrusion ranges maps for each dimension separately, which is necessary because the embedding structures of each cell are different depending on the dimension. 147 | \begin{figure*}[tb] 148 | \centering 149 | \small 150 | \lstinputlisting[language=C++,numbers=left]{figs/dimensionindependent.txt} 151 | \caption[Using recursive C++ templates to produce dimension independent code]{Recursive C++ templates can be used to generate dimension independent code. 152 | The first structure \texttt{Extrusion\_ranges\_map\_of\_dimension} (lines 1--8) contains the extrusion map for a single dimension. 153 | The second structure \texttt{Extrusion\_ranges\_tuple\_per\_dimension\_up\_to} (lines 10--23) uses as a triplet of definitions to create copies of the first for every dimension up to a given one. 154 | This is done using a template specialisation for dimension 0 which stops the recursion. 155 | The last structure \texttt{Extrusion\_ranges\_tuple\_per\_dimension} (lines 25--32) creates all structures using the dimension of a passed combinatorial map \texttt{LCC}. 156 | Note the non-ideal use of \texttt{std::map} in line 5.} 157 | \label{fig:dimensionindependent} 158 | \end{figure*} 159 | 160 | The same technique can be used to create algorithms that are also fully dimension-independent. 161 | In fact, C++ templates are known to be Turing-complete \citep{Veldhuizen03}, and thus can be used to compute general-purpose problems. 162 | \reffig{fig:manifoldvalidation} shows one such example from the implementation of the incremental construction algorithm of \refch{ch:incremental-construction}, which shows the validation that a set of $(n-1)$-cells form a quasi-$n$-manifold. 163 | \begin{figure*}[tb] 164 | \centering 165 | \small 166 | \lstinputlisting[language=C++]{figs/manifoldvalidation.txt} 167 | \caption[Dimension-independent algorithms using recursive C++ templates]{Recursive C++ templates can also be used to implement dimension-independent algorithms. In this case, the \texttt{dimension} that is passed to the templated function is passed on to other functions to obtain appropriate orbits for a given facet (\texttt{dimension-1}) or ridge (\texttt{dimension-2}), which are then compared dart by dart.} 168 | \label{fig:manifoldvalidation} 169 | \end{figure*} 170 | -------------------------------------------------------------------------------- /introduction.tex: -------------------------------------------------------------------------------- 1 | % !TEX root = thesis.tex 2 | 3 | \chapter{Introduction} 4 | \label{ch:introduction} 5 | 6 | % Spatial information 7 | 8 | \emph{Spatial information} describes the location of objects in space and the relationships between them. 9 | Within this thesis the emphasis is on \emph{geographic} information as represented in a \emph{computer}, which uses similar techniques but narrows this definition to information that is about the real world and at a human-to-Earth scale, using abstracted digital representations of real-world entities such as terrain, cities, roads and buildings. 10 | These entities and the relationships between them are defined using sets of interlinked computer primitives. 11 | Because of this, spatial information forms a necessary component of any computer model of the world as we know it at any significant level of detail. 12 | 13 | % GIS research 14 | 15 | The core of the research carried out in this thesis is concerned with \emph{geographic information systems (GIS)}\footnote{Within this thesis, I always use `GIS' and not `GISs'. 16 | This is partly because of aesthetics (GISs reads badly and hears worse), but also because I would argue that current GIS are not really systems but disparate collections of methods, tools and processes. 17 | As such, when I write about GIS I rarely refer to systems and most often use the word as a modifier rather than a noun.}, which produces tools to create, manipulate, analyse and visualise the digital objects that are inherent in these abstract representations of the world. 18 | Compared to other software categories that also allow us to model and manipulate objects that are represented geometrically, such as those used in computer-aided design (CAD) and geometric modelling, GIS tools stand out as being \emph{remarkably generic} \citep{Coppock91,Gold06}. 19 | GIS are used equally to manually build objects by applying interactive drawing operations, to semi-automatically create full models from raw acquired data, to manage large collections of heterogeneous datasets and keep them up to date, or as interactive point-and-click environments to query the attributes of and perform simple calculations on existing datasets. 20 | Because of this genericity, GIS are expected to support a large number of different data formats from multiple sources and a wide variety of operations---all while solving problems in a mix of 2D and 3D and preserving the key characteristics of sometimes mutually incompatible computer representations. 21 | \emph{Rather than attempting to find the best solution on input fulfilling strict conditions, GIS tools are expected to make a best effort to obtain a good solution on the often invalid data that is available}. 22 | This thesis follows this philosophy to a large extent. 23 | 24 | % 2D representations in GIS 25 | 26 | For historical and practical reasons, current GIS mostly use simple 2D representations \citep{ESRITopology,SimpleFeatures1}, which are relatively easy to use and efficient, essentially consisting of sets of linked points, lines and polygons. 27 | Their efficiency is due to the fact that they can rely on many strong properties that are intrinsic to 2D objects. 28 | For example, one such property is that it is possible to define a natural order for the points around a closed polygonal curve, as shown in \reffig{fig:loop}, 29 | \marginpar{ 30 | \captionsetup{type=figure} 31 | \includegraphics[width=\marginparwidth]{figs/loop} 32 | \caption{A polygon as a cycle of points} 33 | \label{fig:loop} 34 | } 35 | and so a polygon can be represented as a sequence of points that form a cycle along its boundary \citep{Jordan87}, which are implicitly connected by line segments between each consecutive pair. 36 | Another such property is based on planar partitions---sets of polygons that form a subdivision of the plane---such as the one in \reffig{fig:corine}. 37 | \marginpar{ 38 | \captionsetup{type=figure} 39 | \includegraphics[width=\marginparwidth]{figs/corine} 40 | \caption[The polygons in the CORINE dataset around Delft]{The polygons in the CORINE\protect\footnotemark\ dataset in the area around Delft \citep{CEC95}} 41 | \label{fig:corine} 42 | } 43 | \footnotetext{\url{http://www.eea.europa.eu/publications/COR0-landcover}} 44 | Since in a planar partition there are two polygons incident to any edge (except those bordering the exterior), a complete planar partition can be stored easily as a set of edges where every edge is linked to two other edges and records the polygons that lie on each of its two sides \citep{Peucker75}. 45 | 46 | % 2D operations -> slowly start with problem 47 | 48 | 2D GIS are also able to take advantage of a great number of existing techniques that are based on 2D representations, such as those that are used to model the flow of water over a terrain \citep{vanKreveld97} or to combine multiple maps into one (\ie\ a map overlay) \citep[\S{}2.3]{deBerg08}. 49 | Moreover, these techniques have been developed and improved over decades, whereas any change in representation would require the development of new accompanying techniques in order to be truly useful. 50 | 51 | % 3D? Not really 52 | % TODO: Weird space between the figures above and below in list of figures 53 | 54 | The aforementioned advantages of 2D representations mean that even `3D' GIS usually mimic the third dimension by using a so-called 2.5D structure, essentially treating the third dimension as a simple attribute that is attached to each object \citep{Raper89}, or represent individual 3D objects only implicitly through the 2D surface that separates their interior from their exterior \citep{Edmonds60,Baumgart75}, as the cube in \reffig{fig:brep}, rather than as true solid objects. 55 | \marginpar{ 56 | \captionsetup{type=figure} 57 | \includegraphics[width=\marginparwidth]{figs/brep} 58 | \caption{A cube represented as the 6 square faces that bound it} 59 | \label{fig:brep} 60 | } 61 | These solutions are compromises, as they limit the type of geometries that can be represented and complicate the storage of the relations that exist between 3D objects. 62 | 63 | % Time/scale, also 2D 64 | 65 | Another important consequence is that when non-spatial characteristics that have a strong link to space, such as time and scale, are integrated in a GIS, they are usually implemented using similar adaptations of 2D representations. 66 | For example, spatiotemporal GIS keep multiple representations of 2D structures \citep{Armstrong88}, each at a different point in time, or a list of changes per object \citep{Worboys92,Peuquet94}, while multi-scale datasets generally consist of independent datasets for each scale with some common identifiers that link objects between datasets \citep{Friis-Christensen03,Stoter14}. 67 | 68 | % Limits 3D operations 69 | 70 | The use of 2D representations also limits the capabilities of GIS software, as the techniques that can be implemented on top of these 2D representations cannot make full use of the potential of 3D spatial information \citep[Ch.~3]{Zlatanova00}. 71 | For instance, current GIS are largely unable to perform complex manipulations of 3D objects or to compute geometric operations between multiple 3D objects, forcing users to perform such functions in 3D modelling software. 72 | These examples are notable as equivalent functionality in 2D is widespread in 2D GIS and expected by its users. 73 | 74 | % nD approach -> solution 75 | 76 | A potential solution to solve the representation problems of 3D, spatio-temporal and multiscale data is opting out of further ad hoc adaptations of 2D structures. 77 | Instead, this thesis shows that it is possible to represent certain parametrisable characteristics as additional dimensions in the geometric sense, as shown in \reffig{fig:axes}, such that real-world (0D--3D) entities are modelled as \emph{higher-dimensional objects embedded in higher-dimensional space} \citep{vanOosterom10}. 78 | \marginpar{ 79 | \captionsetup{type=figure} 80 | \includegraphics[width=\marginparwidth]{figs/axes} 81 | \caption{Five dimensions based on 3D space, time and scale} 82 | \label{fig:axes} 83 | } 84 | A building existing over a time span and stored at a variety of scales on a computer could thus be represented as a single 5D object. 85 | 86 | % Why? 87 | 88 | The \emph{higher-dimensional geographic information modelling} approach is well grounded in long-standing mathematical theories, such as the setting of coordinates to space \citep{Descartes37}, and theories of higher-dimensional geometry \citep{Riemann68} and topology \citep{Poincare95}. 89 | It also opens the door for new, more powerful techniques and practical applications. 90 | For example, these $n$-dimensional representations could be used to ensure that an object is consistent along all dimensions (\eg\ a building at different points in time or levels of detail), or to analyse its relations to other objects along all dimensions (\eg\ whether two moving objects were ever adjacent). 91 | 92 | % Scientific gap 93 | 94 | There is a large body of related work on the representation of abstract $n$-dimensional objects in mathematics and computer science \citep{Brisson93,Lienhardt94}, as well as a few instances of work on its application to GIS \citep{Karimipour10}. 95 | However, by and large \emph{higher-dimensional representations remain unanalysed in the context of geographic information}. 96 | For instance, it is necessary to see how abstract representations can be made fit for use with real-world objects, which have aspects that are difficult to handle, \eg\ certain kinds of geometries (\reffig{fig:nonmanifold})% 97 | \marginpar{ 98 | \captionsetup{type=figure} 99 | \includegraphics[width=\marginparwidth]{figs/nonmanifold} 100 | \caption[A non-manifold shape]{This non-manifold shape cannot be handled properly in many representations.} 101 | \label{fig:nonmanifold} 102 | }% 103 | , holes (\reffig{fig:torus}) 104 | \marginpar{ 105 | \captionsetup{type=figure} 106 | \includegraphics[width=\marginparwidth]{figs/torus} 107 | \caption{The top and bottom faces of this torus have holes in them.} 108 | \label{fig:torus} 109 | } 110 | and complex semantics. 111 | Additionally, making this approach attractive in practice requires the development of high-level techniques to construct, analyse and visualise higher-dimensional geographic objects. 112 | Finally, there are significant technical issues involved in the realisation of these representations and techniques into a computer implementation. 113 | All of these aspects, which in short encompass \emph{concepts, representations, operations and visualisation}, are tackled in this thesis. 114 | 115 | \section{Research objective and scope} 116 | \label{se:objective} 117 | 118 | In order to determine whether the \emph{higher-dimensional modelling of geographic information} is worthwhile, and if so, the conditions under which it makes sense to follow it, it is necessary to first gain a greater understanding of the entire modelling process in higher dimensions as well as its technical consequences. 119 | The main aim of this thesis is therefore to gain this understanding by \textbf{realising the fundamental aspects of a higher-dimensional Geographic Information System}, including the development of the necessary modelling concepts that are analogous to familiar modelling concepts in 2D/3D GIS, the use of appropriate higher-dimensional representations, and the development of simple higher-dimensional operations. 120 | While not every aspect of a higher-dimensional GIS can be fully developed within the timeframe allotted for this thesis, prototype-level working software is created whenever possible and tested using real-world higher-dimensional datasets\footnote{In this instance, real-world does not imply tackling all the problems inherent in using the entirety of the very large, complex and invalid datasets that are currently available. 121 | Due to the experimental nature of this thesis, small subsets of these real-world datasets that showcase specific problems are necessarily chosen.}. 122 | In this sense, this thesis does not intend to prove that the higher-dimensional spatial modelling approach is better or worse than existing approaches, but instead to highlight its advantages and disadvantages so as to better evaluate it for future applications. 123 | 124 | \section{Structure of this thesis} 125 | \label{se:about} 126 | 127 | This thesis comprises two main parts, each of which contains a few chapters and which respectively cover methods to solve problems inherent in: (i) representing objects in arbitrary dimensions, and (ii) creating and manipulating such objects. 128 | After these, there are some independent chapters that fall outside the two parts, covering practical aspects such as the processing of real-world (invalid) data, implementation details and how the results of all chapters come together. 129 | All chapters are described in detail below. 130 | 131 | % \clearpage 132 | 133 | \begin{description} 134 | 135 | % Part I 136 | % \textbf{\refpa{pa:representation} \nameref{pa:representation}} 137 | \item[\refpa{pa:representation} \nameref{pa:representation}] \ 138 | 139 | \begin{description} 140 | 141 | \item[\refch{ch:modelling-mathematics}] 142 | introduces the mathematical concepts and background behind spatial data modelling. 143 | 144 | \item[\refch{ch:modelling-background}] 145 | describes and analyses the state of the art in the 2D and 3D modelling of space, time, scale and attributes. 146 | % , doing so with a view to possible higher-dimensional extensions. 147 | It concludes by listing some of the shortcomings of current approaches. 148 | 149 | \item[\refch{ch:nd-modelling}] 150 | presents the higher-dimensional modelling paradigm that is the basis of this thesis, which aims to solve many of the problems alluded to in \refch{ch:modelling-background}. 151 | It also describes and evaluates the higher-dimensional representations that can be used in order to realise this approach, which take the form of $n$-dimensional data models and structures. 152 | 153 | \end{description} 154 | 155 | \clearpage 156 | % Part II 157 | % \textbf{\refpa{pa:operations} \nameref{pa:operations}} 158 | \item[\refpa{pa:operations} \nameref{pa:operations}] \ 159 | 160 | \begin{description} 161 | 162 | \item[\refch{ch:operations-background}] 163 | presents a few fundamental operations for some of the data structures described in \refch{ch:nd-modelling}. 164 | These are used in order to build the higher level operations described in the other chapters within \refpa{pa:operations}. 165 | 166 | \item[\refch{ch:extrusion}] 167 | describes $n$-dimensional extrusion, an extension of the well-known 2D to 3D extrusion operator in GIS.\@ 168 | It can be used to generate simple prism-shaped $n$-dimensional objects from an $(n-1)$-dimensional space partition by assigning to each $(n-1)$-dimensional object a range along which it exists. 169 | 170 | \item[\refch{ch:incremental-construction}] 171 | describes incremental construction, an operation which is able to generate arbitrary $n$-dimensional objects based on defining their $(n-1)$-dimensional boundary. 172 | It is equivalent to the generation of the topological relationships that exist between a set of $(n-1)$-dimensional objects. 173 | 174 | \item[\refch{ch:linking-lods}] 175 | shows how a higher level construction operator that links a series of 2D or 3D models can be created. 176 | This enables the construction of 4D models from real-world 3D city models covering the same region. 177 | 178 | \item[\refch{ch:slicing}] 179 | explains how 2D and 3D information can be extracted from a higher-dimensional representation by selecting appropriate portions of the data (\eg\ cross-sections) and projecting it to 2D/3D space. 180 | 181 | \end{description} 182 | 183 | % \bigskip 184 | % \textbf{\refpa{pa:implementation} \nameref{pa:implementation}} 185 | % \begin{description} 186 | 187 | \item[\refch{ch:cleaning}] 188 | explains the main data validation and repair techniques that are used to create 2D/3D/$n$D objects and space partitions out of real-world GIS datasets, which often have defects that impede their usage. 189 | By obtaining clean geometric models, these techniques enable the use of the higher-dimensional modelling approach in practice. 190 | 191 | % \end{description} 192 | 193 | % Conclusions 194 | % \bigskip 195 | \item[\refch{ch:conclusions}] 196 | concludes this thesis by explaining the achievements of this PhD project and highlighting the main challenges to further develop a higher-dimensional GIS.\@ 197 | It contains an outlook on how higher-dimensional modelling can be used in GIS as well as some suggestions for future work. 198 | 199 | \item[\refap{ch:implementation}] 200 | describes the most relevant implementation details concerning the representations and operations from the previous chapters, such as the use of various software libraries, robust geometric operations and programming techniques. 201 | 202 | \clearpage 203 | \item[\refap{ch:dictionary}] 204 | contains a short dictionary of terms for higher-dimensional GIS.\@ 205 | As the terminology used in 2D GIS, 3D GIS, CAD, geometric modelling and other related fields can be different and is often used inconsistently and rather loosely, the appendix is intended for use as a general reference and for the better understanding of the thesis. 206 | 207 | \end{description} 208 | -------------------------------------------------------------------------------- /summary.tex: -------------------------------------------------------------------------------- 1 | % !TEX root = thesis.tex 2 | 3 | \chapter{Summary} 4 | 5 | Our world is three-dimensional and complex, continuously changing over time and appearing different at different scales. 6 | Yet, when we model it in a computer using Geographic Information Systems (GIS), we mostly use 2D representations, which essentially consist of linked points, lines and polygons (\reffig{fig:brep-sum-en}). 7 | \marginpar{ 8 | \captionsetup{type=figure} 9 | \includegraphics[width=\marginparwidth]{figs/brep} 10 | \caption[A cube represented as the 6 square faces that bound it]{In GIS, a cube is not represented as a 3D solid, but as the 6 square 2D faces that bound it.} 11 | \label{fig:brep-sum-en} 12 | } 13 | These representations are relatively easy to use and efficient, and a wide variety of methods is built on top of them. 14 | However, 2D representations are necessarily limiting. 15 | They force us to reduce problems to two dimensions, limit the type of objects we can represent, and complicate storing the relationships between different objects---especially when these are across time and different scales. 16 | Nevertheless, most research in GIS is devoted to improving these 2D representations, as well as to the development of new methods that build on them to solve problems, both old and new. 17 | 18 | This thesis explores a new, fundamentally different modelling approach---integrating both spatial and non-spatial characteristics as dimensions in the geometric sense, specifically targeting the cases of time and scale (\reffig{fig:axes-sum-en}). 19 | \marginpar{ 20 | \captionsetup{type=figure} 21 | \includegraphics[width=\marginparwidth]{figs/axes} 22 | \caption{3D space, time and scale can be modelled as 5D space.} 23 | \label{fig:axes-sum-en} 24 | } 25 | While this has been proposed before at a conceptual level, this thesis aims to \emph{realise the fundamental aspects of a higher-dimensional GIS} by developing higher-dimensional ($n$D) representations, as well as new methods operating on them to create, manipulate and visualise geographic information. 26 | As this thesis shows, the higher-dimensional approach is undoubtedly memory-intensive, but it is also very powerful, as it provides a simple and consistent way to store geometry, attributes and the topological relationships between objects of any dimension. 27 | This generic approach can also be easily extended to handle other non-spatial characteristics, enabling better data management that is consistent across dimensions and more powerful operations, such as checking if two objects are adjacent at any point in time. 28 | 29 | In order to model higher-dimensional space, it is best to consider an $n$D space subdivision as a base (\reffig{fig:space-filling-sum-en}), which is conceptualised as an $n$-dimensional simplicial complex or cell complex. 30 | \marginpar{ 31 | \captionsetup{type=figure} 32 | \includegraphics[width=\marginparwidth]{figs/space-filling} 33 | \caption[3D space subdivision model]{A 3D space subdivision model is composed of a set of space-filling volumes without gaps or overlaps.} 34 | \label{fig:space-filling-sum-en} 35 | } 36 | This can then be implemented with a simplex-based data structure, with an incidence graph, as a set of Nef polyhedra, or---as done in this thesis---by using ordered topological models such as the cell-tuple and generalised/combinatorial maps. 37 | 38 | Creating computer representations of higher-dimensional objects can be complex. 39 | \marginpar{ 40 | \captionsetup{type=figure} 41 | \subfloat[]{\includegraphics[width=\marginparwidth]{figs/extrusion-1}}\\ 42 | \subfloat[]{\includegraphics[width=\marginparwidth]{figs/extrusion-2}} 43 | \caption[A set of polygons is converted into a set of boxes by 2D-to-3D extrusion.]{(a) A set of polygons is converted into (b) a set of boxes by 2D-to-3D extrusion.} 44 | \label{fig:extrusion-sum-en} 45 | } 46 | \marginpar{ 47 | \captionsetup{type=figure} 48 | \includegraphics[width=\marginparwidth]{figs/link2} 49 | \caption[Two LODs of a 3D model of a house are linked into a 4D model]{Two LODs of a 3D model of a house (left and right) are linked into a 4D model.} 50 | \label{fig:link-sum-en} 51 | } 52 | Common construction methods used in 2D and 3D, such as directly manipulating combinatorial primitives, or using primitive-level construction operations (such as Euler operators), rely on our intuition of 2D/3D geometry, and thus do not work well in higher dimensions. 53 | It is therefore all too easy to create invalid objects, which then cannot be easily interpreted or fixed---a problem that is already exceedingly apparent in three dimensions. 54 | 55 | As a way to easily create representations of higher-dimensional objects, this thesis proposes three novel higher-level methods, all of which are intuitive to use and attempt to create valid output. 56 | \emph{Extrusion} takes an $(n-1)$-dimensional cell complex and a set of intervals per cell, projecting them parallel to a new axis in order to create an $n$-dimensional cell complex (\reffig{fig:extrusion-sum-en}). 57 | \emph{Incremental construction} describes an $n$-dimensional object based on its $(n-1)$-dimensional boundary, from dimension zero (points) and then upwards. 58 | Finally, a 4D model can be constructed from a series of 3D models at different levels of detail (LODs) by \emph{linking them} (\reffig{fig:link-sum-en}). 59 | 60 | In order to visualise higher-dimensional models, as well as to be able to process them in existing software, it is important to have methods to extract meaningful 2D/3D subsets from them. 61 | % Such methods would consist of two steps: (i) selecting a subset of the objects in the model and (ii) projecting this subset to a lower dimension. 62 | As a stepping stone towards such methods, this thesis shows how $n$-dimensional to ($n-1$)-dimensional orthographic and perspective projections can be defined. 63 | 64 | Finally, this thesis placed an emphasis on validating the algorithms with real-world datasets, which was only possible by developing methods to repair the invalid datasets that are widespread in practice. 65 | This thesis thus contains methods to create valid polygons and planar partitions using a constrained triangulation of the input, as well as a method to repair polyhedra and space subdivisions by snapping together lower-dimensional primitives and removing overlaps using Boolean set operations on Nef polyhedra. 66 | This allowed tests with up to 6D datasets based on real-world data---\emph{a good base for higher-dimensional GIS}. 67 | 68 | In the future, the work in this thesis will be extended with higher-dimensional modification operations, true 4D spatiotemporal datasets and repair methods with quality guarantees. 69 | All implementations made for this thesis are publicly available under open source licences. 70 | 71 | \chapter{Samenvatting (Dutch summary)} 72 | 73 | {\selectlanguage{dutch} 74 | 75 | Onze wereld is driedimensionaal en complex, is continue in verandering en heeft verschillende verschijningsvormen op verschillende detailniveaus. 76 | Toch modelleren we de werkelijkheid in Geografische Informatie Systemen (GIS) meestal middels 2D representaties. 77 | Deze modellen bestaan uit punten, lijnen en polygonen die met elkaar zijn verbonden (\reffignl{fig:brep-sum-nl}). 78 | \marginpar{ 79 | \captionsetup{type=figure} 80 | \includegraphics[width=\marginparwidth]{figs/brep} 81 | \caption[Een kubus wordt gerepresenteerd als 6 vierkante 2D vlakken.]{In GIS wordt een kubus niet gerepresenteerd als een 3D volume maar als 6 vierkante 2D vlakken die tesamen de ruimte van de kubus omvatten.} 82 | \label{fig:brep-sum-nl} 83 | } 84 | De resulterende representaties zijn efficiënt en relatief eenvoudig te gebruiken en veel methodes en applicaties zijn hierop gebaseerd. 85 | Maar 2D representaties kennen hun beperkingen. 86 | Problemen moeten worden versimpeld tot 2D;\ en het beheren van relaties tussen verschillende objecten is complex, vooral als deze relaties een tijdscomponent hebben of over verschillende detail-niveaus gaan. 87 | Desalniettemin gaat veel GIS onderzoek over het verbeteren van de 2D representaties alsook het ontwikkelen van nieuwe methoden die op 2D representaties zijn gebaseerd. 88 | 89 | Deze dissertatie bestudeerd een fundamenteel andere modelleer-benadering waarbij zowel ruimtelijke als niet-ruimtelijke kenmerken worden gemodelleerd als extra geometrische dimensies. 90 | De kenmerken ``tijd'' en ``schaal'' worden daarbij specifiek bekeken (\reffignl{fig:axes-sum-nl}). 91 | \marginpar{ 92 | \captionsetup{type=figure} 93 | \includegraphics[width=\marginparwidth]{figs/axes-nl} 94 | \caption{3D ruimte, tijd en schaal kunnen worden gemodelleerd als 5D ruimte.} 95 | \label{fig:axes-sum-nl} 96 | } 97 | Eerdere onderzoeken naar het modelleren van tijd en schaal als extra dimensie zijn nooit verder gekomen dan een conceptuele beschrijving. 98 | Dit onderzoek daarentegen beoogt de fundamentele aspecten van een multidimensionaal GIS te realiseren door hoger dimensionale ($n$D) representaties te ontwikkelen inclusief bewerkingsmethodes om deze $n$D geografische informatie te creëren, manipuleren en visualiseren. 99 | \marginpar{ 100 | \captionsetup{type=figure} 101 | \includegraphics[width=\marginparwidth]{figs/space-filling} 102 | \caption[3D ruimtelijke opdeling]{Een 3D ruimtelijke opdeling bestaat uit een set ruimte-vullende volumes zonder gaten en overlap.} 103 | \label{fig:space-filling-sum-nl} 104 | } 105 | In deze thesis wordt aangetoond dat een $n$D benadering aan de ene kant veel computergeheugen vraagt om alle relaties over dimensies heen op te slaan. 106 | Aan de andere kant is de aanpak zeer krachtig gebleken omdat een $n$D benadering op een doeltreffende en consistente manier geometrie met haar attributen opslaat. 107 | Naast de objecten, kunnen ook alle topologische relaties tussen de objecten worden opgeslagen welke zich kunnen voordoen binnen en tussen iedere dimensie. 108 | De in dit onderzoek voorgestelde aanpak is generiek en kan eenvoudig worden uitgebreid om andere niet-ruimtelijke aspecten te modelleren. 109 | Hierdoor is data management waarbij de consistentie van geografische informatie wordt gegarandeerd over dimensies heen. 110 | Bovendien kunnen hiermee krachtigere bewerkingen worden uitgevoerd zoals controleren of twee objecten op enig moment in de tijd aangrenzend zijn. 111 | 112 | Om een $n$D ruimte te modelleren kan het best gestart worden met een $n$D ruimtelijke partitie (zonder gaten en overlap) (\reffignl{fig:space-filling-sum-nl}). 113 | Conceptueel kan dit worden weergegeven als een $n$D \emph{simplicial complex} of een \emph{cell complex}. 114 | Vervolgens kan dit worden geïmplementeerd via een \emph{simplex-based} datastructuur met een \emph{incidence graph}, bijvoorbeeld als een set van \emph{Nef polyhedra} of, zoals dat in dit onderzoek is gedaan, via geordende topologische modellen (\emph{cell-tuple} en \emph{generalised/combinatorial maps}). 115 | 116 | Het construeren van computer representaties van $n$D objecten kan erg complex zijn. 117 | Bestaande 2D/3D constructie methodes manipuleren \emph{combinatorial primitives} of maken gebruik van bewerkingen op primitieve-niveau (zoals Euler operatoren). 118 | Deze gaan uit van onze intuïtie over 2D en 3D geometrieën en werken daarmee niet goed in hogere dimensies. 119 | Hierdoor is het helaas heel makkelijk om invalide $n$D objecten te creëren die vervolgens moeilijk te bewerken zijn. 120 | Dit probleem doet zich ook al voor in drie dimensies. 121 | 122 | \marginpar{ 123 | \captionsetup{type=figure} 124 | \subfloat[]{\includegraphics[width=\marginparwidth]{figs/extrusion-1}}\\ 125 | \subfloat[]{\includegraphics[width=\marginparwidth]{figs/extrusion-2}} 126 | \caption[Een set polygonen wordt geconverteerd naar een set blokken.]{(a) een set polygonen wordt geconverteerd naar (b) een set blokken door de polygonen van 2D naar 3D op te trekken.} 127 | \label{fig:extrusion-sum-nl} 128 | } 129 | \marginpar{ 130 | \captionsetup{type=figure} 131 | \includegraphics[width=\marginparwidth]{figs/link2} 132 | \caption[Twee detailniveaus van een 3D model worden gelinkt tot een 4D model.]{Twee detailniveaus van een 3D model van een huis (links en rechts) worden gelinkt tot een 4D model.} 133 | \label{fig:link-sum-nl} 134 | } 135 | In deze dissertatie is een manier onderzocht en ontwikkeld om eenvoudig valide representaties van $n$D objecten te construeren. 136 | Daartoe zijn er drie methodes voorgesteld: 137 | \emph{Extrusion} neemt een $(n-1)$D cell complex en een set van intervallen per cell en projecteert deze parallel aan een nieuwe as ten einde een $n$D cell complex te construeren (\reffignl{fig:extrusion-sum-nl}). 138 | \emph{Incremental construction} construeert een $n$D object op basis van zijn $(n-1)$-grens. 139 | Via het \emph{linken} van verschillende representaties van hetzelfde 3D object op verschillende detailniveaus (LODs) met als resultaat een 4D model (\reffignl{fig:link-sum-nl}). 140 | 141 | Om $n$D modellen te kunnen visualiseren en te kunnen bewerken in huidige software, is er een methode nodig om valide 2D/3D subsets af te leiden uit de $n$D data. 142 | % Zo’n methode kent twee stappen: 1) het selecteren van een subset van de $n$D objecten uit het model en 2) de subset projecteren naar een lagere dimensie (2D of 3D). 143 | Als opstap heeft dit onderzoek laten zien hoe een zowel orthografische als een perspectieve projectie van $n$D naar $(n-1)$D kan worden gedefinieerd. 144 | 145 | Tenslotte heeft deze thesis alle hierboven genoemde concepten gevalideerd op $n$D data over de ``echte'' wereld. 146 | Omdat er veel fouten voorkomen in deze data, zijn er in dit onderzoek ook methodes ontwikkeld om valide polygonen en een plenaire partitie te creëren op basis van \emph{constrained} triangulatie. 147 | Daarnaast is er een methode ontwikkeld om polyhedra en ruimtelijke opdelingen te corrigeren door het ``snappen'' van primitieven op lagere dimensies en het verwijderen van overlap door middel van Boolean set bewerkingen op \emph{Nef polyhedra}. 148 | Hierdoor zijn er testen gedaan met data tot 6D gebaseerd op ``echte'' GIS data, \emph{wat een goede basis is voor $n$D GIS}.\@ 149 | 150 | In de toekomst kan dit onderzoek worden uitgebreid met wijzigingsbewerkingen voor $n$D objecten, ``echte'' 4D ruimtelijk-temporele datasets en correctie methodes die de kwaliteit van de $n$D data garanderen. 151 | Alle implementaties van deze dissertatie zijn publiekelijk beschikbaar via open source licenties. 152 | 153 | } 154 | 155 | \chapter{Resumen (Spanish summary)} 156 | 157 | {\selectlanguage{spanish} 158 | 159 | Nuestro mundo es tridimensional y complejo, cambiando continuamente a través del tiempo y mostrándose distinto a distintas escalas. 160 | Aún así, cuando lo modelamos usando sistemas de información geográfica (SIG), generalmente usamos representaciones 2D, las cuales esencialmente consisten en conjuntos de puntos, líneas y polígonos enlazados entre sí (\reffiges{fig:brep-sum-es}). 161 | \marginpar{ 162 | \captionsetup{type=figure} 163 | \includegraphics[width=\marginparwidth]{figs/brep} 164 | \caption[Un cubo representado por las 6 caras cuadradas en su superficie]{En los SIG, un cubo no se representa como un sólido, sino como las 6 caras cuadradas en su superficie.} 165 | \label{fig:brep-sum-es} 166 | } 167 | Estas representaciones son relativamente fáciles de usar y eficientes, y una gran variedad de métodos se han construido usándolas. 168 | Sin embargo, las representaciones 2D son necesariamente restrictivas. 169 | Nos fuerzan a reducir los problemas a dos dimensiones, limitan el tipo de objetos que podemos representar y dificultan guardar las relaciones entre diferentes objetos---especialmente cuando éstas son a través del tiempo y diferentes escalas. 170 | A pesar de ello, la mayoría de la investigación en SIG se dedica a mejorar estas representaciones 2D, así como a desarrollar nuevos métodos que las usan para resolver problemas, sean éstos nuevos o antiguos. 171 | 172 | Esta tesis explora un nuevo y fundamentalmente distinto paradigma de modelado---integrando características espaciales y espaciales como dimensiones en el sentido geométrico, específicamente apuntando hacia los casos del tiempo y la escala (\reffiges{fig:axes-sum-es}). 173 | \marginpar{ 174 | \captionsetup{type=figure} 175 | \includegraphics[width=\marginparwidth]{figs/axes-es} 176 | \caption{El espacio 3D, el tiempo y la escala modelados como un espacio 5D.} 177 | \label{fig:axes-sum-es} 178 | } 179 | A pesar de que este paradigma ha sido propuesto antes a un nivel conceptual, esta tesis tiene como objetivo llevarlo a cabo al \emph{implementar los aspectos fundamentales de un SIG de altas dimensiones}, desarrollando representaciones para objetos en altas dimensiones ($n$D), así como nuevos métodos que operen en ellas para crear, manipular y visualizar información geográfica. 180 | Como esta tesis muestra, el paradigma de altas dimensiones tiene un alto consumo de memoria pero también es muy poderoso, proveyendo un método simple y consistente para guardar la geometría, los atributos y las relaciones topológicas entre objetos de cualquier dimensión. 181 | Este paradigma genérico puede ser fácilmente extendido a otras características no espaciales, haciendo posible un mejor manejo de datos con consistencia a través de las dimensiones y operaciones más poderosas. 182 | % , como verificar si dos objetos son adyacentes en algún momento. 183 | 184 | Para poder modelar el espacio de altas dimensiones, es mejor considerar una partición espacial $n$D como una base (\reffiges{fig:space-filling-sum-es}), la que es conceptualizada como un complejo simplicial o celular. 185 | \marginpar{ 186 | \captionsetup{type=figure} 187 | \includegraphics[width=\marginparwidth]{figs/space-filling} 188 | \caption[Partición espacial 3D]{Una partición espacial 3D se compone de un conjunto de volúmenes que llenan el espacio sin huecos y sin solaparse entre ellos.} 189 | \label{fig:space-filling-sum-es} 190 | } 191 | Éste puede entonces ser implementado con una estructura de datos basada en símplices, un grafo de incidencia, como un conjunto de poliedros Nef, o---como en esta tesis---usando modelos topológicos ordenados, como la tupla de células (\emph{cell-tuple}) o los mapas generalizados o combinatorios (\emph{generalised/combinatorial maps}). 192 | 193 | \marginpar{ 194 | \captionsetup{type=figure} 195 | \subfloat[]{\includegraphics[width=\marginparwidth]{figs/extrusion-1}}\\ 196 | \subfloat[]{\includegraphics[width=\marginparwidth]{figs/extrusion-2}} 197 | \caption[Un conjunto de polígonos se extrude en un conjunto de paralelepípedos.]{(a) Un conjunto de polígonos se convierte en (b) un conjunto de paralelepípedos al aplicar una extrusión 2D a 3D.} 198 | \label{fig:extrusion-sum-es} 199 | } 200 | \marginpar{ 201 | \captionsetup{type=figure} 202 | \includegraphics[width=\marginparwidth]{figs/link2} 203 | \caption[Dos niveles de detalle de una casa se enlazan en un modelo 4D]{Dos niveles de detalle de una casa (izquierda y derecha) se enlazan en un modelo 4D.} 204 | \label{fig:link-sum-es} 205 | } 206 | Crear representaciones de objetos en altas dimensiones puede ser complejo. 207 | Los métodos comunes usados en 2D y 3D, como la manipulación directa de elementos combinatorios primitivos, o el uso de operaciones de construcción que operan al nivel de los elementos primitivos (como las operaciones de Euler), se basan en nuestra intuición de la geometría 2D/3D, y por lo mismo no funcionan bien en altas dimensiones. 208 | Esto causa que sea demasiado fácil crear objetos inválidos, los cuales no pueden ser fácilmente interpretados o reparados---un problema que es extremadamente aparente incluso en tres dimensiones. 209 | 210 | Esta tesis propone tres métodos novedosos para crear fácilmente representaciones de objetos en altas dimensiones, todos los cuales son intuitivos e intentar crear datos de salida válidos. 211 | La \emph{extrusión} recibe un complejo celular $n-1$ dimensional y un conjunto de intervalos por cada célula, proyectándolos de forma paralela a un nuevo eje para crear un complejo celular $n$ dimensional (\reffiges{fig:extrusion-sum-es}). 212 | La \emph{construcción incremental} describe un objeto $n$ dimensional basado en su frontera $n-1$ dimensional, desde la dimensión cero (puntos) y hacia arriba. 213 | Finalmente, es posible construir un modelo 4D \emph{enlazando} una serie de modelos 3D a diferentes niveles de detalle (\reffiges{fig:link-sum-es}). 214 | 215 | Para poder visualizar modelos en altas dimensiones, así como poder procesarlos en el software existente, es importante tener métodos para extraer de éstos subconjuntos significativos 2D/3D. 216 | % Estos métodos consistirían de dos pasos: (i) seleccionar un subconjunto de los objetos en el modelo y (ii) proyectar este subconjunto a una dimensión menor. 217 | Como un paso inicial hacia este tipo de métodos, esta tesis muestra como se pueden definir las proyecciones ortográficas y de perspectiva de $n$ dimensiones a $n-1$. 218 | 219 | Finalmente, esta tesis tuvo un enfoque importante en validar los algoritmos con datos reales, lo cual sólo fue posible al desarrollar métodos para reparar datos inválidos, los cuales son comunes en la práctica. 220 | Esta tesis por lo tanto contiene métodos para crear polígonos y particiones planares válidas usando una triangulación restringida de los datos de entrada, así como un método para reparar poliedros y particiones 3D juntando objetos (\emph{snapping}) de menores dimensiones y eliminando las partes que se solapan utilizando operaciones booleanas de conjuntos con poliedros Nef. 221 | Esto permitió pruebas hasta en seis dimensiones basados en datos reales---\emph{una buena base para un SIG de altas dimensiones}. 222 | 223 | En el futuro, el trabajo de esta tesis será extendido con operaciones de modificación en altas dimensiones, datos reales espaciales y temporales 4D, así como métodos de reparación de datos con garantías de calidad. 224 | Todas las implementaciones hechas para esta tesis están disponibles públicamente bajo licencias de código abierto. 225 | 226 | } 227 | -------------------------------------------------------------------------------- /thesis.tex: -------------------------------------------------------------------------------- 1 | %!TEX program = xelatex 2 | %!TEX encoding = UTF-8 Unicode 3 | \documentclass[parskip=half, 4 | fontsize=9pt, 5 | % chapterprefix=true, 6 | numbers=noenddot, 7 | bibliography=totoc]{scrbook} 8 | 9 | % Golden ratio proportions on crown quarto with marginpar inside 10 | \usepackage[includemp, 11 | paperwidth=18.90cm, 12 | paperheight=24.58cm, 13 | top=2.170cm, 14 | bottom=3.510cm, 15 | inner=2.1835cm, 16 | outer=2.1835cm, 17 | marginparwidth=4cm, % Fixed for now 18 | marginparsep=0.4cm]{geometry} 19 | 20 | % For full bleed printing on crown quarto with 1/8 inch trim margin 21 | % \usepackage[includemp, 22 | % paperwidth=19.54cm, 23 | % paperheight=25.22cm, 24 | % % showframe, 25 | % layoutwidth=18.90cm, 26 | % layoutheight=24.58cm, 27 | % layouthoffset=0.32cm, 28 | % layoutvoffset=0.32cm, 29 | % top=2.170cm, 30 | % bottom=3.510cm, 31 | % inner=2.1835cm, 32 | % outer=2.1835cm, 33 | % marginparwidth=4cm, % Fixed for now 34 | % marginparsep=0.4cm]{geometry} 35 | 36 | % For printing on A4 37 | % \usepackage[includemp, 38 | % a4paper, 39 | % layoutwidth=18.90cm, 40 | % layoutheight=24.58cm, 41 | % layouthoffset=1.05cm, 42 | % layoutvoffset=2.56cm, 43 | % top=2.170cm, 44 | % bottom=3.510cm, 45 | % inner=1.668cm, 46 | % outer=2.699cm, 47 | % marginparwidth=4cm, % Fixed for now 48 | % marginparsep=0.4cm]{geometry} 49 | 50 | \usepackage{tocloft} % Customise table of contents 51 | \usepackage{amsmath,amssymb} % AMS symbols and environments 52 | \usepackage{mathtools} % More math symbols and environments 53 | \usepackage{fontspec} % Selecting fonts 54 | \usepackage{unicode-math} % Use unicode math font, not TeX 55 | \usepackage[main=english,dutch,spanish]{babel} % Correct hyphenation 56 | \usepackage{subfig} % Subfigures 57 | \usepackage{booktabs} % Nicer tables 58 | \usepackage{xcolor} % Colours in text 59 | \usepackage{etoolbox} % Easy programming to modify TeX stuff 60 | \usepackage{ccicons} % Creative Commons icons 61 | \usepackage{pdfpages} % Insert PDF pages 62 | \definecolor{greenforlinks}{rgb}{0.09, 0.45, 0.27} 63 | \PassOptionsToPackage{hyphens}{url}\usepackage[xetex, 64 | unicode, 65 | breaklinks=true, 66 | colorlinks=true, 67 | allcolors=greenforlinks, 68 | pagebackref, 69 | linktoc=all, 70 | pdftitle={Higher-dimensional modelling of geographic information}, 71 | pdfauthor={Ken Arroyo Ohori}]{hyperref} % Hyperlinks 72 | \usepackage{bookmark} % Add things in TOC 73 | % \usepackage{showframe} % Frames to easily set up page layout 74 | \usepackage[hypcap=true]{caption} % Correctly placed anchors for hyperlinks 75 | \usepackage{floatrow} % Set up captions of floats 76 | \usepackage{marginfix} % Make marginpars float freely 77 | \usepackage{metalogo} % XeTeX logo 78 | \usepackage{scrlayer-scrpage} % Customise head and foot regions 79 | \usepackage[footnote]{snotez} % Footnotes as sidenotes 80 | % \usepackage{showlabels} % Show labels 81 | \usepackage{listings} % Code 82 | \usepackage[linesnumbered, 83 | ruled, 84 | vlined]{algorithm2e} % Algorithms 85 | \usepackage{multirow} % Cells occupying multiple rows in tables 86 | \usepackage{multicol} % Multiple columns in dictionary 87 | \setlength\columnseprule{.4pt} 88 | \usepackage[square]{natbib} % Bibliography management 89 | 90 | % More floats 91 | \extrafloats{100} 92 | 93 | % Figures and tables 94 | \floatsetup[figure]{margins=hangoutside, 95 | facing=yes, 96 | capposition=beside, 97 | capbesideposition={center,outside}, 98 | floatwidth=\textwidth} 99 | \floatsetup[widefigure]{margins=hangoutside, 100 | facing=yes, 101 | capposition=bottom} 102 | \floatsetup[table]{margins=hangoutside, 103 | facing=yes, 104 | capposition=beside, 105 | capbesideposition={center,outside}, 106 | floatwidth=\textwidth} 107 | \floatsetup[widetable]{margins=hangoutside, 108 | facing=yes, 109 | capposition=bottom} 110 | 111 | % Sidenotes 112 | \setsidenotes{text-mark-format=\textsuperscript{\normalfont#1}, 113 | note-mark-format=#1:, 114 | note-mark-sep=\enskip} 115 | 116 | % Listings code 117 | \definecolor{listingkeywords}{rgb}{0.00, 0.5, 0.0} 118 | \definecolor{listingidentifiers}{rgb}{0, 0, 0} 119 | \definecolor{listingcomments}{rgb}{0.25, 0.5, 0.5} 120 | \definecolor{listingstrings}{rgb}{0.73, 0.13, 0.13} 121 | \definecolor{listingnumbers}{rgb}{0.25, 0.25, 0.25} 122 | \lstset{ 123 | basicstyle=\scriptsize\ttfamily, 124 | keywordstyle=\color{listingkeywords}\bfseries, 125 | identifierstyle=\color{listingidentifiers}, 126 | commentstyle=\color{listingcomments}\itshape, 127 | stringstyle=\color{listingstrings}, 128 | numberstyle=\scriptsize\color{listingnumbers}\ttfamily, 129 | frame=single, 130 | tabsize=4, 131 | language=[ISO]C++ 132 | } 133 | 134 | % Draw safety margins for variation in cropping, etc. 135 | % \usepackage{background} 136 | % \backgroundsetup{ 137 | % color=black, 138 | % scale=1, 139 | % opacity=1, 140 | % angle=0, 141 | % contents={ 142 | % \tikz\draw[line width=1pt,black] (-8.18cm,-11.02cm) rectangle (8.18cm,11.02cm); % 1/2 inch safety margin 143 | % \tikz\draw[line width=1pt,black] (-8.81cm,-11.65cm) rectangle (8.81cm,11.65cm); % 1/4 inch safety margin 144 | % \tikz\draw[line width=1pt,black] (-9.45cm,-12.29cm) rectangle (9.45cm,12.29cm); % Crown quarto page 145 | % }} 146 | 147 | % Figure captions with no indentation 148 | \setcapindent{0pt} 149 | 150 | % List of figures title as "Figures" 151 | \renewcaptionname{english}{\listfigurename}{Figures} 152 | \renewcaptionname{english}{\listtablename}{Tables} 153 | 154 | % Add half-title to PDF bookmarks 155 | \makeatletter 156 | \pretocmd{\maketitle}{% 157 | \if@openright\cleardoublepage\else\clearpage\fi 158 | \pdfbookmark[0]{Preliminaries}{title}% TODO: Change link to cover in online PDF version 159 | \pdfbookmark[1]{Half title}{title}% 160 | }{}{}% 161 | \makeatother 162 | % Add table of contents to PDF bookmarks 163 | \makeatletter 164 | \pretocmd{\tableofcontents}{% 165 | \if@openright\cleardoublepage\else\clearpage\fi 166 | \pdfbookmark[1]{Table of contents}{toc}% 167 | }{}{}% 168 | \makeatother 169 | % Add list of figures to PDF bookmarks 170 | \makeatletter 171 | \pretocmd{\listoffigures}{% 172 | \if@openright\cleardoublepage\else\clearpage\fi 173 | \pdfbookmark[1]{List of figures}{lof}% 174 | }{}{}% 175 | \makeatother 176 | 177 | % Font setup 178 | \setmainfont[Ligatures=TeX,ItalicFont=Feijoa-MediumItalic,StylisticSet=6]{Feijoa} 179 | \setmonofont[BoldFont=GTPressuraMono-Bold,ItalicFont=GTPressuraMono-LightItalic]{GTPressuraMono-Light} 180 | \setmathfont{Asana-Math.otf} 181 | \newfontfamily\fanciestfont[Ligatures={TeX,Discretionary}]{Feijoa-Display} 182 | \newfontfamily\fancyfont[Ligatures=TeX]{Feijoa-Display} 183 | \newfontfamily\chapternumberfont[Ligatures=TeX,Numbers=Lining]{Feijoa-Display} 184 | \addtokomafont{disposition}{\fancyfont} 185 | \addtokomafont{title}{\fanciestfont} 186 | \addtokomafont{chapter}{\fanciestfont} 187 | \addtokomafont{chapterentry}{\normalfont\scshape} 188 | \addtokomafont{descriptionlabel}{\normalfont\bfseries} 189 | \addtokomafont{caption}{\footnotesize} 190 | 191 | % Levels in table of contents 192 | \setcounter{tocdepth}{1} 193 | 194 | % Table of contents styles 195 | \newlength{\alignviiilength} 196 | \setlength{\alignviiilength}{7.5mm} 197 | \newlength{\alignxlength} 198 | \setlength{\alignxlength}{8.5mm} 199 | % \renewcommand{\cftdotsep}{\cftnodots} 200 | % \renewcommand{\cftpnumalign}{l} 201 | 202 | \setlength{\cftpartnumwidth}{\alignviiilength} 203 | \renewcommand{\cftpartfont}{\fancyfont\LARGE\hypersetup{allcolors=black}} 204 | \renewcommand{\cftpartpagefont}{\fancyfont\LARGE} 205 | 206 | \setlength{\cftchapnumwidth}{\alignviiilength} 207 | \renewcommand{\cftchapfont}{\fancyfont\large\hypersetup{allcolors=black}} 208 | % \renewcommand{\cftchapleader}{\hspace{1em}} 209 | \renewcommand{\cftchappagefont}{\fancyfont\large} 210 | % \renewcommand{\cftchapafterpnum}{\cftparfillskip} 211 | 212 | \setlength{\cftsecnumwidth}{\alignviiilength} 213 | \renewcommand{\cftsecfont}{\hypersetup{allcolors=black}} 214 | \setlength{\cftsecindent}{\alignviiilength} 215 | \renewcommand{\cftsecleader}{\hspace{1em}} 216 | % \renewcommand{\cftsecpagefont}{\normalfont\color{greenforlinks}} 217 | \renewcommand{\cftsecafterpnum}{\cftparfillskip} 218 | 219 | \setlength{\cftfigindent}{0mm} 220 | \renewcommand{\cftfigfont}{\hypersetup{allcolors=black}} 221 | \setlength{\cftfignumwidth}{\alignxlength} 222 | \renewcommand{\cftfigleader}{\hspace{1em}} 223 | \renewcommand{\cftfigafterpnum}{\cftparfillskip} 224 | 225 | \setlength{\cfttabindent}{0mm} 226 | \setlength{\cfttabnumwidth}{\alignxlength} 227 | \renewcommand{\cfttabfont}{\hypersetup{allcolors=black}} 228 | \renewcommand{\cfttableader}{\hspace{1em}} 229 | \renewcommand{\cfttabafterpnum}{\cftparfillskip} 230 | 231 | % Page styles for tables of contents, figures and tables 232 | \renewpagestyle{scrheadings}{ 233 | {\makebox[2em][r]{\thepage}\quad\rule{1pt}{100pt}\quad{}Contents}% 234 | {\hfill\rightmark\quad\rule{1pt}{100pt}\quad\makebox[2em][l]{\thepage}}% 235 | {} 236 | }{ 237 | {}% 238 | {}% 239 | {} 240 | } 241 | \renewpagestyle{plain.scrheadings}{ 242 | {}% 243 | {}% 244 | {} 245 | }{ 246 | {\thepage}% 247 | {\hfill\thepage}% 248 | {} 249 | } 250 | 251 | % Part title style [todo] 252 | \addtokomafont{part}{\Huge} 253 | \renewcommand*{\partformat}{\vspace{-6cm}\partname~\thepart\autodot\thispagestyle{empty}} 254 | 255 | % Chapter title style 256 | \makeatletter 257 | \setlength{\fboxsep}{0cm} 258 | \renewcommand*{\@@makechapterhead}[1]{% 259 | \vspace*{3\baselineskip plus \parskip} 260 | \makebox{% 261 | \makebox[\linewidth]{\parbox[c][2cm]{\linewidth}{\if@mainmatter\raggedleft\fi\size@chapter{#1}}}% 262 | \if@mainmatter% 263 | \makebox[\marginparsep]{\parbox[c][2cm]{\marginparsep}{\centering\rule{1pt}{2cm}}}% 264 | \makebox[4cm]{\parbox[c][2cm]{4cm}{\scalebox{5}{\chapternumberfont\thechapter\autodot}}}% 265 | \fi 266 | }% 267 | \vspace*{1.5\baselineskip plus .1\baselineskip minus .167\baselineskip} 268 | } 269 | \makeatother 270 | 271 | % Formatting of back references 272 | \renewcommand*{\backref}[1]{} 273 | \renewcommand*{\backrefalt}[4]{{% 274 | \ifcase#1 Not cited.% 275 | \or{}Cited on page~#2.% 276 | \else Cited on pages~#2.% 277 | \fi% 278 | }} 279 | 280 | % Bullets 281 | \renewcommand{\labelitemi}{►} 282 | 283 | % Custom commands 284 | \newcommand{\ie}{i.e.} 285 | \newcommand{\eg}{e.g.} 286 | \newcommand{\cf}{cf.} 287 | \newcommand{\refpa}[1]{\hyperref[#1]{Part}~\ref{#1}} 288 | \newcommand{\refch}[1]{\hyperref[#1]{Chapter}~\ref{#1}} 289 | \newcommand{\refchs}[1]{Chapters~\ref{#1}} 290 | \newcommand{\refse}[1]{\hyperref[#1]{\S}\ref{#1}} 291 | % \newcommand{\refses}[1]{\S\ref{#1}} 292 | \newcommand{\refap}[1]{\hyperref[#1]{Appendix}~\ref{#1}} 293 | \newcommand{\reffig}[1]{\hyperref[#1]{Figure}~\ref{#1}} 294 | \newcommand{\reffiges}[1]{\hyperref[#1]{Figura}~\ref{#1}} 295 | \newcommand{\reffignl}[1]{\hyperref[#1]{Figuur}~\ref{#1}} 296 | \newcommand{\reffigs}[1]{Figures~\ref{#1}} 297 | \newcommand{\reffigp}[1]{\hyperref[#1]{Figure}~\ref{#1} on \hyperref[#1]{page}~\pageref{#1}} 298 | \newcommand{\reftab}[1]{\hyperref[#1]{Table}~\ref{#1}} 299 | \newcommand{\refalgo}[1]{\hyperref[#1]{Algorithm}~\ref{#1}} 300 | 301 | % Papers 302 | \newcommand{\paperostravaedgematching}{\item \textbf{Edge-matching polygons with a constrained triangulation}. Hugo Ledoux and Ken Arroyo Ohori. \emph{Proceedings of GIS Ostrava 2011}, Ostrava, Czech Republic, January 2011, pp. 377--390.} 303 | \newcommand{\paperagileprepair}{\item[\href{http://dx.doi.org/10.5194/isprsarchives-xxxviii-4-c26-7-2012}{►}] \href{http://dx.doi.org/10.5194/isprsarchives-xxxviii-4-c26-7-2012}{\textbf{Automatically repairing invalid polygons with a constrained triangulation}}. Hugo Ledoux, Ken Arroyo Ohori and Martijn Meijers. In J\'er\^ome Gensel, Didier Josselin and Danny Vandenbroucke (eds.), \emph{Multidisciplinary Research on Geographical Information in Europe and Beyond. Proceedings of the 15th AGILE International Conference on Geographic Information Science}, Avignon, France, April 2012, pp. 13--18.} 304 | \newcommand{\papertdgeoinfond}{\item[\href{http://dx.doi.org/10.5194/isprsarchives-xxxviii-4-c26-7-2012}{►}] \href{http://dx.doi.org/10.5194/isprsarchives-xxxviii-4-c26-7-2012}{\textbf{Integrating scale and space in 3D city models}}. Jantien Stoter, Hugo Ledoux, Martijn Meijers and Ken Arroyo Ohori. In Jacynthe Pouliot, Sylvie Daniel, Fr\'ed\'eric Hubert and Alborz Zamyadi (eds.), \emph{Proceedings of the 7th International 3D GeoInfo Conference, International Archives of the Photogrammetry, Remote Sensing and Spatial Information Sciences} XXXVIII--4/C26, ISPRS, Québec City, Canada, May 2012, pp. 7--10.} 305 | \newcommand{\paperosgisrepair}{\item \textbf{Automatically repairing polygons and planar partitions with \emph{prepair} and \emph{pprepair}}. Ken Arroyo Ohori, Hugo Ledoux and Martijn Meijers. \emph{Proceedings of the 4th Open Source GIS UK Conference}, Nottingham, United Kingdom, September 2012.} 306 | \newcommand{\paperpfgpprepair}{\item[\href{http://dx.doi.org/10.1127/1432-8364/2012/0143}{►}] \href{http://dx.doi.org/10.1127/1432-8364/2012/0143}{\textbf{Validation and automatic repair of planar partitions using a constrained triangulation}}. Ken Arroyo Ohori, Hugo Ledoux and Martijn Meijers. \emph{Photogrammetrie, Fernerkundung, Geoinformation} 5, October 2012, pp. 613--630.} 307 | \newcommand{\paperagileslicing}{\item \textbf{Manipulating higher dimensional spatial information}. Ken Arroyo Ohori, Filip Biljecki, Jantien Stoter and Hugo Ledoux. In Danny Vandenbroucke, B\'en\'edicte Bucher and Joep Crompvoets (eds.), \emph{Geographic Information Science at the Heart of Europe. Proceedings of the 16th AGILE International Conference on Geographic Information Science}, Leuven, Belgium, May 2013.} 308 | \newcommand{\papergeoadvancesnd}{\item[\href{http://dx.doi.org/10.1007/978-3-642-36379-5_2}{►}] \href{http://dx.doi.org/10.1007/978-3-642-36379-5_2}{\textbf{Representing the dual of objects in a four-dimensional GIS}}.\@ Ken Arroyo Ohori, Pawel Boguslawski and Hugo Ledoux. In A. Abdul Rahman, P. Boguslawski, C. Gold and M. N. Said (eds.), \emph{Developments in Multidimensional Spatial Data Models}, Lecture Notes in Geoinformation and Cartography, Springer Berlin Heidelberg, Johor Bahru, Malaysia, May 2013, pp. 17--31.} 309 | \newcommand{\papericcsand}{\item[\href{http://dx.doi.org/10.1007/978-3-642-39637-3_41}{►}] \href{http://dx.doi.org/10.1007/978-3-642-39637-3_41}{\textbf{Modelling higher dimensional data for GIS using generalised maps}}. Ken Arroyo Ohori, Hugo Ledoux and Jantien Stoter. In B. Murgante, S. Misra, M. Carlini, C. Torre, H. Q. Nguyen, D. Taniar, B. Apduhan and O. Gervasi (eds.), \emph{Computational Science and Its Applications --- ICCSA 2013. 13th International Conference, Ho Chi Minh City, Vietnam, June 24–27, 2013, Proceedings, Part I}, Lecture Notes in Computer Science 7971, Springer Berlin Heidelberg, June 2013, pp. 526--539.} 310 | \newcommand{\paperacmsigspatialextrusion}{\item[\href{http://dx.doi.org/10.1145/2525314.2525447}{►}] \href{http://dx.doi.org/10.1145/2525314.2525447}{\textbf{Using extrusion to generate higher-dimensional GIS datasets}}. Ken Arroyo Ohori and Hugo Ledoux. In Craig Knoblock, Peer Kr\"oger, John Krumm, Markus Schneider and Peter Widmayer (eds.), \emph{SIGSPATIAL'13: Proceedings of the 21st ACM SIGSPATIAL International Conference on Advances in Geographic Information Systems}, ACM, Orlando, Florida, United States, November 2013, pp. 398--401.} 311 | \newcommand{\papericaaincrementalconstruction}{\item[\href{http://dx.doi.org/10.1007/978-3-319-04126-1_4}{►}] \href{http://dx.doi.org/10.1007/978-3-319-04126-1_4}{\textbf{Constructing an $n$-dimensional cell complex from a soup of $(n-1)$-dimensional faces}}. Ken Arroyo Ohori, Guillaume Damiand and Hugo Ledoux. In Prosenjit Gupta and Christos Zaroliagis (eds.), \emph{Applied Algorithms. First International Conference, ICAA 2014, Kolkata, India, January 13--15, 2014. Proceedings}, Lecture Notes in Computer Science 8321, Springer International Publishing Switzerland, Kolkata, India, January 2014, pp. 37--48.} 312 | \newcommand{\papercgeoprepair}{\item[\href{http://dx.doi.org/10.1016/j.cageo.2014.01.009}{►}] \href{http://dx.doi.org/10.1016/j.cageo.2014.01.009}{\textbf{A triangulation-based approach to automatically repair GIS polygons}}. Hugo Ledoux, Ken Arroyo Ohori and Martijn Meijers. \emph{Computers \& Geosciences} 66, May 2014, pp. 121--131.} 313 | \newcommand{\paperijgisndstructures}{\item[\href{http://dx.doi.org/10.1080/13658816.2014.999683}{►}] \href{http://dx.doi.org/10.1080/13658816.2014.999683}{\textbf{An evaluation and classification of $n$D topological data structures for the representation of objects in a higher-dimensional GIS}}.\@ Ken Arroyo Ohori, Hugo Ledoux and Jantien Stoter. \emph{International Journal of Geographical Information Science} 29(5), May 2015, pp. 825--849.} 314 | \newcommand{\paperijgisextrusion}{\item[\href{http://dx.doi.org/10.1080/13658816.2015.1010535}{►}] \href{http://dx.doi.org/10.1080/13658816.2015.1010535}{\textbf{A dimension-independent extrusion algorithm using generalised maps}}. Ken Arroyo Ohori, Hugo Ledoux and Jantien Stoter. \emph{International Journal of Geographical Information Science} 29(7), July 2015, pp. 1166--1186.} 315 | \newcommand{\paperijgind}{\item[\href{http://dx.doi.org/10.3390/ijgi4031055}{►}] \href{http://dx.doi.org/10.3390/ijgi4031055}{\textbf{Modelling a 3D city model and its levels of detail as a true 4D model}}. Ken Arroyo Ohori, Hugo Ledoux, Filip Biljecki and Jantien Stoter. \emph{ISPRS International Journal of Geo-Information}, 4(3), September 2015, pp. 1055--1075.} 316 | \newcommand{\paperisprsnd}{\item[\href{http://dx.doi.org/10.5194/isprsannals-II-2-W2-1-2015}{►}] \href{http://dx.doi.org/10.5194/isprsannals-II-2-W2-1-2015}{\textbf{Storing a 3D city model, its levels of detail and the correspondences between objects as a 4D combinatorial map}}. Ken Arroyo Ohori, Hugo Ledoux and Jantien Stoter. In Alias Abdul Rahman, Umit Isikdag and Francesc Ant\'on Castro (eds.), Joint International Geoinformation Conference 2015, 28--30 October 2015, Kuala Lumpur, Malaysia, ISPRS Annals of the Photogrammetry, Remote Sensing and Spatial Information Sciences II--2/W2, ISPRS, Kuala Lumpur, Malaysia, October 2015, pp. 1--8.} 317 | \newcommand{\paperudmvobj}{\item[\href{http://dx.doi.org/10.2312/udmv.20151345}{►}] \href{http://dx.doi.org/10.2312/udmv.20151345}{\textbf{Automatic semantic-preserving conversion between OBJ and CityGML}}. Filip Biljecki and Ken Arroyo Ohori. In F. Biljecki and V. Tourre (eds.), \emph{Eurographics Workshop on Urban Data Modelling and Visualisation}, Eurographics Association, Delft, The Netherlands, November 2015, pp. 25--30.} 318 | \newcommand{\paperijgisroeland}{\item[\href{http://dx.doi.org/10.1080/13658816.2015.1072201}{►}] \href{http://dx.doi.org/10.1080/13658816.2015.1072201}{\textbf{Automatically enhancing CityGML LOD2 models with a corresponding indoor geometry}}. Roeland Boeters, Ken Arroyo Ohori, Filip Biljecki and Sisi Zlatanova. \emph{International Journal of Geographical Information Science} 29(12), December 2015, pp. 2248--2268.} 319 | \newcommand{\papermethodsxvoxelisation}{\item[\href{http://dx.doi.org/10.1016/j.mex.2016.01.001}{►}] \href{http://dx.doi.org/10.1016/j.mex.2016.01.001}{\textbf{Voxelization algorithms for geospatial applications: Computational methods for voxelating spatial datasets of 3D city models containing 3D surface, curve and point data models}}. Pirouz Nourian, Romulo Gon\c{c}alves, Sisi Zlatanova, Ken Arroyo Ohori and Anh Vu Vo. \emph{MethodsX} 3, January 2016, pp. 69--86.} 320 | 321 | % \nofiles% 322 | \begin{document} 323 | 324 | % Front cover 325 | \includepdf{cover-front.pdf} 326 | 327 | % Sloppy spacing works better for small paper sizes: better than text outside margin, esp. because of marginpars 328 | \sloppy 329 | 330 | \frontmatter 331 | 332 | \newgeometry{top=2.170cm, 333 | bottom=3.510cm, 334 | inner=2.1835cm, 335 | outer=2.1835cm, 336 | ignoremp} 337 | \input{pre} 338 | 339 | % No colour links in tables of contents and list of figures 340 | \cleardoublepage% 341 | \tableofcontents 342 | % \cleardoublepage% 343 | \listoffigures 344 | % \cleardoublepage% 345 | % \listoftables 346 | \restoregeometry% 347 | 348 | \mainmatter% 349 | 350 | % Lengths used for page head 351 | \newlength{\overflowingheadlen} 352 | \setlength{\overflowingheadlen}{\linewidth} 353 | \addtolength{\overflowingheadlen}{\marginparsep} 354 | \addtolength{\overflowingheadlen}{\marginparwidth} 355 | 356 | % Page style for preface 357 | \renewpagestyle{scrheadings}{ 358 | {\hspace{-\marginparwidth}\hspace{-\marginparsep}\makebox[\overflowingheadlen][l]{\makebox[2em][r]{\thepage}\quad\rule{1pt}{100pt}\quad{}Preface}}% 359 | {\makebox[\overflowingheadlen][r]{\rightmark\quad\rule{1pt}{100pt}\quad\makebox[2em][l]{\thepage}}}% 360 | {} 361 | }{ 362 | {}% 363 | {}% 364 | {} 365 | } 366 | \renewpagestyle{plain.scrheadings}{ 367 | {}% 368 | {}% 369 | {} 370 | }{ 371 | {\thepage}% 372 | {\makebox[\overflowingheadlen][r]{\thepage}}% 373 | {} 374 | } 375 | 376 | \input{preface} 377 | 378 | % Page style for chapters 379 | \renewpagestyle{scrheadings}{ 380 | {\hspace{-\marginparwidth}\hspace{-\marginparsep}\makebox[\overflowingheadlen][l]{\makebox[2em][r]{\thepage}\quad\rule{1pt}{100pt}\quad{}\leftmark}}% 381 | {\makebox[\overflowingheadlen][r]{\rightmark\quad\rule{1pt}{100pt}\quad\makebox[2em][l]{\thepage}}}% 382 | {} 383 | }{ 384 | {}% 385 | {}% 386 | {} 387 | } 388 | \renewpagestyle{plain.scrheadings}{ 389 | {}% 390 | {}% 391 | {} 392 | }{ 393 | {\thepage}% 394 | {\makebox[\overflowingheadlen][r]{\thepage}}% 395 | {} 396 | } 397 | 398 | \input{introduction} 399 | 400 | \setpartpreamble{ 401 | \vspace{3cm} 402 | \begin{center} 403 | \includegraphics[width=0.8\linewidth]{figs/gmaps-3d-simplices} 404 | \end{center} 405 | } 406 | \newgeometry{top=2.170cm, 407 | bottom=3.510cm, 408 | inner=2.1835cm, 409 | outer=2.1835cm, 410 | ignoremp} 411 | \part{Representing geographic information} 412 | \label{pa:representation} 413 | \restoregeometry% 414 | % The underlying 3D simplicial complex in the representation of a cube as a 3D generalised map. 415 | 416 | \input{math} 417 | 418 | \input{modelling-background} 419 | 420 | \input{nd-modelling} 421 | 422 | \setpartpreamble{ 423 | \vspace{5cm} 424 | \includegraphics[width=\linewidth]{figs/extrusion-steps} 425 | } 426 | \newgeometry{top=2.170cm, 427 | bottom=3.510cm, 428 | inner=2.1835cm, 429 | outer=2.1835cm, 430 | ignoremp} 431 | \part{Constructing and manipulating objects} 432 | \label{pa:operations} 433 | \restoregeometry% 434 | 435 | \input{operations-background} 436 | 437 | \input{extrusion} 438 | 439 | \input{incremental-construction} 440 | 441 | \input{linking-lods} 442 | 443 | \input{slicing} 444 | 445 | \bookmarksetup{startatroot} 446 | \addtocontents{toc}{\medskip\bigskip} 447 | 448 | \input{cleaning} 449 | 450 | \input{conclusions} 451 | 452 | \appendix% 453 | 454 | \addtocontents{toc}{\medskip\bigskip} 455 | 456 | \input{implementation} 457 | 458 | \cleardoublepage% 459 | \renewpagestyle{scrheadings}{ 460 | {\makebox[2em][r]{\thepage}\quad\rule{1pt}{100pt}\quad\leftmark}% 461 | {\hfill\rightmark\quad\rule{1pt}{100pt}\quad\makebox[2em][l]{\thepage}}% 462 | {} 463 | }{ 464 | {}% 465 | {}% 466 | {} 467 | } 468 | \renewpagestyle{plain.scrheadings}{ 469 | {}% 470 | {}% 471 | {} 472 | }{ 473 | {\thepage}% 474 | {\hfill\thepage}% 475 | {} 476 | } 477 | \newgeometry{top=2.170cm, 478 | bottom=3.510cm, 479 | inner=2.1835cm, 480 | outer=2.1835cm, 481 | ignoremp} 482 | 483 | \input{dictionary} 484 | 485 | \addtocontents{toc}{\medskip\bigskip} 486 | 487 | \backmatter% 488 | 489 | % Bibliograhy 490 | \bibliographystyle{plainnat} 491 | {\small\bibliography{docs}} 492 | 493 | \restoregeometry% 494 | 495 | % Page style for back matter 496 | \renewpagestyle{scrheadings}{ 497 | {\hspace{-\marginparwidth}\hspace{-\marginparsep}\makebox[\overflowingheadlen][l]{\makebox[2em][r]{\thepage}\quad\rule{1pt}{100pt}\quad\leftmark}}% 498 | {\makebox[\overflowingheadlen][r]{\rightmark\quad\rule{1pt}{100pt}\quad\makebox[2em][l]{\thepage}}}% 499 | {} 500 | }{ 501 | {}% 502 | {}% 503 | {} 504 | } 505 | \renewpagestyle{plain.scrheadings}{ 506 | {}% 507 | {}% 508 | {} 509 | }{ 510 | {\thepage}% 511 | {\makebox[\overflowingheadlen][r]{\thepage}}% 512 | {} 513 | } 514 | 515 | \cleardoublepage% 516 | \label{thesis:back} 517 | \pdfbookmark[-1]{Back matter}{thesis:back} 518 | 519 | \input{summary} 520 | 521 | \input{cv} 522 | 523 | % Back cover 524 | \clearpage 525 | \thispagestyle{empty} 526 | \null% 527 | \clearpage 528 | \includepdf{cover-back.pdf} 529 | 530 | \end{document} --------------------------------------------------------------------------------