- About
- Code Installation
- Introduction to the GUI Interface
- Step-by-step Instructions for Creating a K-hedral Tiling
This code repo implements a computational approach called inverse tiling to produce K-hedral tilings on square grids.
We also provide the tiling results (.til files in the Result/_paper folder) and the input domains (.dom files in the Shape folder) on square grids, as referenced in the paper.
We implemented our computational approach in C++ and libigl [Jacobson et al. 2018] on a desktop computer with 3.6 GHz 8-Core Intel processor and 16 GB RAM.
If you have any problems when using this code, you can contact me any time through [email protected].
If you make use of this repo in your scientific work, please cite our paper. For your convenience, you can use the following bibtex snippet:
@inproceedings {Chen-2025-InverseTiling,
author = {Rulin Chen and Xuyang Ma and Praveer Tewari and Chi-Wing Fu and Peng Song},
title = {Inverse Tiling of 2D Finite Domains},
booktitle = {SIGGRAPH Asia Conference Papers},
year = {2025}}
First, clone the repository, run CMake to generate Makefiles or CMake/Visual Studio project files, and the rest should work automatically.
$ cd [current folder path]
$ mkdir build
$ cd build
$ cmake ..
$ make -j 16
The integer following make -j is the number of threads supported by your CPU architecture. Replace it with your optimal value. Please note that the code has been tested on MacOS and Ubuntu environment. Specifically, to compile the code in the Ubuntu environment, the following packages are required:
libboost-filesystem-devlibboost-thread-devlibgmp-devlibmpfr-devlibglfw3-devlibxinerama-devlibxi-dev
Our code can be run on VM16 + Ubuntu 20.04 environment.
The GUI interface consists of two parts: the visualization panel (the left side) and the control panel (the right side). The visualization panel is divided into three sub-windows: (1) the top left window displays the input domain; (2) the top right window shows the computed K-hedral tiling; (3) the bottom window visualizes prototiles of the K-hedral tiling. The control panel has three sub-components: Status Bar, Parameters and Control Buttons.
-
DomainDisplay the name of the input domain.Number of Grid Cells (M)Display the number of grid cells of the input domain.Average Tile SizeDisplay the average size of tiles, i.e., M / N.Number of Prototiles (K)Display the number of prototiles in the computed K-hedral tiling. -
Number of Tiles (N)Specify the total number of tiles.Target KSpecify the maximally allowed K of the resulting K-hedral tiling. The program will keep running until constructing a K-hedral tiling whose K is less or equal than the target K.Min Tile Size (C_min)Specify the minimally allowed size of tiles.Max Tile Size (C_max)Specify the maximally allowed size of tiles. -
Load An Input DomainImport an input domain in the format of .dom file.Prototile Set ConstructionFind a K-hedral tiling whose K is less or equal than the target K, corresponding to Sections 5.1 and 5.2 in the paper.Prototile Set ReductionEliminate few-instances prototiles to reduce the number of prototiles, corresponding to Section 5.3 in the paper.Save K-hedral TilingSave the computed K-hedral tiling.
These instructions give an example of how to use our program to generate a K-hedral tiling with a given input domain. Specifically, we use .dom files to store the input domains, and .til files to store the computed K-hedral tilings.
Import a bird_16x16.dom file by clicking Load An Input Domain button.
Specify the Number of Tiles (N) as 24, Target K as 8, Min Tile Size (C_min) as 4 and Max Tile Size (C_max) as 7.
Click the Prototile Set Construction button to compute a K-hedral tiling whose K is less or equal than the target K.
Click the Prototile Set Reduction button to eliminate few-instances prototiles.
Our program will stop once we can reduce K. You can click the button more than once.
Here, we first click the button and reduce K from 8 to 7.
Then, we click the button again and reduce K from 7 to 6.
Lastly, you can click Save K-hedral Tiling to save the computed K-hedral tiling as a .til file with a default file name in the format of "[name of the input domain]_[bounding box of the input domain]_K[the number of prototiles K].til", which can also be loaded by our program.
We thank the reviewers for their valuable comments. This work was supported by the Singapore MOE AcRF Tier 2 Grant (MOE-T2EP20123-0016).






