├── .gitignore
├── LICENSE
├── README.md
├── demo
├── airplane.png
├── bathtub.png
├── bottles.png
├── car.png
├── guitar.png
├── knife.png
└── mug.png
├── learningpatches
├── __init__.py
├── coons_utils.py
├── datasets.py
├── interfaces.py
├── models.py
└── utils.py
├── requirements.txt
├── scripts
├── run.py
└── train.py
└── templates
├── airplanes
├── adjacencies.txt
├── edges.txt
├── junction_order.txt
├── topology.txt
└── vertices.txt
├── bathtubs
├── adjacencies.txt
├── edges.txt
├── junction_order.txt
├── topology.txt
└── vertices.txt
├── bottles
├── adjacencies.txt
├── edges.txt
├── junction_order.txt
├── topology.txt
└── vertices.txt
├── cars
├── adjacencies.txt
├── edges.txt
├── junction_order.txt
├── topology.txt
└── vertices.txt
├── guitars
├── adjacencies.txt
├── edges.txt
├── junction_order.txt
├── topology.txt
└── vertices.txt
├── guns
├── adjacencies.txt
├── edges.txt
├── junction_order.txt
├── topology.txt
└── vertices.txt
├── knives
├── adjacencies.txt
├── edges.txt
├── junction_order.txt
├── topology.txt
└── vertices.txt
├── mugs
├── adjacencies.txt
├── edges.txt
├── junction_order.txt
├── topology.txt
└── vertices.txt
├── sphere24
├── adjacencies.txt
├── edges.txt
├── junction_order.txt
├── topology.txt
└── vertices.txt
└── sphere54
├── adjacencies.txt
├── edges.txt
├── junction_order.txt
├── topology.txt
└── vertices.txt
/.gitignore:
--------------------------------------------------------------------------------
1 | # Byte-compiled / optimized / DLL files
2 | __pycache__/
3 | *.py[cod]
4 | *$py.class
5 |
6 | # C extensions
7 | *.so
8 |
9 | # Distribution / packaging
10 | .Python
11 | build/
12 | develop-eggs/
13 | dist/
14 | downloads/
15 | eggs/
16 | .eggs/
17 | lib/
18 | lib64/
19 | parts/
20 | sdist/
21 | var/
22 | wheels/
23 | pip-wheel-metadata/
24 | share/python-wheels/
25 | *.egg-info/
26 | .installed.cfg
27 | *.egg
28 | MANIFEST
29 |
30 | # PyInstaller
31 | # Usually these files are written by a python script from a template
32 | # before PyInstaller builds the exe, so as to inject date/other infos into it.
33 | *.manifest
34 | *.spec
35 |
36 | # Installer logs
37 | pip-log.txt
38 | pip-delete-this-directory.txt
39 |
40 | # Unit test / coverage reports
41 | htmlcov/
42 | .tox/
43 | .nox/
44 | .coverage
45 | .coverage.*
46 | .cache
47 | nosetests.xml
48 | coverage.xml
49 | *.cover
50 | *.py,cover
51 | .hypothesis/
52 | .pytest_cache/
53 |
54 | # Translations
55 | *.mo
56 | *.pot
57 |
58 | # Django stuff:
59 | *.log
60 | local_settings.py
61 | db.sqlite3
62 | db.sqlite3-journal
63 |
64 | # Flask stuff:
65 | instance/
66 | .webassets-cache
67 |
68 | # Scrapy stuff:
69 | .scrapy
70 |
71 | # Sphinx documentation
72 | docs/_build/
73 |
74 | # PyBuilder
75 | target/
76 |
77 | # Jupyter Notebook
78 | .ipynb_checkpoints
79 |
80 | # IPython
81 | profile_default/
82 | ipython_config.py
83 |
84 | # pyenv
85 | .python-version
86 |
87 | # pipenv
88 | # According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control.
89 | # However, in case of collaboration, if having platform-specific dependencies or dependencies
90 | # having no cross-platform support, pipenv may install dependencies that don't work, or not
91 | # install all needed dependencies.
92 | #Pipfile.lock
93 |
94 | # PEP 582; used by e.g. github.com/David-OConnor/pyflow
95 | __pypackages__/
96 |
97 | # Celery stuff
98 | celerybeat-schedule
99 | celerybeat.pid
100 |
101 | # SageMath parsed files
102 | *.sage.py
103 |
104 | # Environments
105 | .env
106 | .venv
107 | env/
108 | venv/
109 | ENV/
110 | env.bak/
111 | venv.bak/
112 |
113 | # Spyder project settings
114 | .spyderproject
115 | .spyproject
116 |
117 | # Rope project settings
118 | .ropeproject
119 |
120 | # mkdocs documentation
121 | /site
122 |
123 | # mypy
124 | .mypy_cache/
125 | .dmypy.json
126 | dmypy.json
127 |
128 | # Pyre type checker
129 | .pyre/
130 |
131 | models
132 | *obj
133 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) 2021 Dima Smirnov
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | ## LearningPatches | [Webpage](https://people.csail.mit.edu/smirnov/learning-patches/) | [Paper](https://openreview.net/forum?id=Gu5WqN9J3Fn) | [Video](https://youtu.be/mxpkK9hHfFE)
2 |
3 |
4 |
5 | **Learning Manifold Patch-Based Representations of Man-Made Shapes**
6 | Dmitriy Smirnov, Mikhail Bessmeltsev, Justin Solomon
7 | [International Conference on Learning Representations (ICLR) 2021](https://iclr.cc/Conferences/2021/)
8 |
9 | ### Set-up
10 | To install the code, run:
11 | ```
12 | conda create -n learningpatches python=3.6 -y
13 | conda activate learningpatches
14 | conda install pytorch=1.3.1 torchvision cudatoolkit=10.2 -c pytorch -y
15 | pip install -r requirements.txt
16 | ```
17 |
18 | Also, be sure to execute `export PYTHONPATH=:$PYTHONPATH` prior to running any of the scripts.
19 |
20 | ### Demo
21 | First, download the pretrained models for each shape category:
22 | ```
23 | wget -O models.zip https://www.dropbox.com/s/ntt1ytpjwx2385i/learningpatches_models.zip?dl=0
24 | unzip models.zip
25 | ```
26 |
27 | Then, run the following to generate an OBJ file with the 3D model for a given input sketch PNG image:
28 | ```
29 | python scripts/run.py demo/airplane.png airplanes out.obj --no-turbines
30 | ```
31 | Make sure to specify `airplanes`, `bathtubs`, `bottles`, `cars`, `guitars`,
32 | `guns`, `knives`, or `guns` as the shape category. Optionally, for the airplanes
33 | category, the `--no-turbines` flag does not output the turbine patches in the
34 | 3D model.
35 |
36 | The `demo` directory contains PNGs of some sample input sketches.
37 |
38 | Note that the meshes output by the demo script may have non-manifold discontinuities between patches due to
39 | discretization artifacts. This can be avoided by choosing the number of subdivisions based on patch boundary
40 | arc lengths. The results shown in the paper are all computed in this way.
41 |
42 | ### BibTeX
43 | ```
44 | @inproceedings{smirnov2021patches,
45 | title={Learning Manifold Patch-Based Representations of Man-Made Shapes},
46 | author={Smirnov, Dmitriy and Bessmeltsev, Mikhail and Solomon, Justin},
47 | year={2021},
48 | booktitle={International Conference on Learning Representations (ICLR)}
49 | }
50 | ```
51 |
--------------------------------------------------------------------------------
/demo/airplane.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dmsm/LearningPatches/12384b3e1e93cdbbdbb5a63fec8b4f7631eafe50/demo/airplane.png
--------------------------------------------------------------------------------
/demo/bathtub.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dmsm/LearningPatches/12384b3e1e93cdbbdbb5a63fec8b4f7631eafe50/demo/bathtub.png
--------------------------------------------------------------------------------
/demo/bottles.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dmsm/LearningPatches/12384b3e1e93cdbbdbb5a63fec8b4f7631eafe50/demo/bottles.png
--------------------------------------------------------------------------------
/demo/car.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dmsm/LearningPatches/12384b3e1e93cdbbdbb5a63fec8b4f7631eafe50/demo/car.png
--------------------------------------------------------------------------------
/demo/guitar.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dmsm/LearningPatches/12384b3e1e93cdbbdbb5a63fec8b4f7631eafe50/demo/guitar.png
--------------------------------------------------------------------------------
/demo/knife.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dmsm/LearningPatches/12384b3e1e93cdbbdbb5a63fec8b4f7631eafe50/demo/knife.png
--------------------------------------------------------------------------------
/demo/mug.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dmsm/LearningPatches/12384b3e1e93cdbbdbb5a63fec8b4f7631eafe50/demo/mug.png
--------------------------------------------------------------------------------
/learningpatches/__init__.py:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dmsm/LearningPatches/12384b3e1e93cdbbdbb5a63fec8b4f7631eafe50/learningpatches/__init__.py
--------------------------------------------------------------------------------
/learningpatches/coons_utils.py:
--------------------------------------------------------------------------------
1 | import torch as th
2 | from torch.nn import functional as F
3 |
4 |
5 | def coons_mtds(s, t, params):
6 | # params [..., 12, 3]
7 | params = params[...,None]
8 | det = ((params[...,0,0,:]*(s - 1)**3 - params[...,9,0,:]*(s - 1)**3 - s*(3*params[...,3,0,:]*(t - 1)**2 - 3*params[...,4,0,:]*(t - 1)**2 + 3*params[...,5,0,:]*t**2 - 3*params[...,6,0,:]*t**2 + 6*params[...,5,0,:]*t*(t - 1) - 3*params[...,4,0,:]*t*(2*t - 2)) + params[...,3,0,:]*s - params[...,6,0,:]*s + (s - 1)*(3*params[...,0,0,:]*(t - 1)**2 - 3*params[...,11,0,:]*(t - 1)**2 - 3*params[...,9,0,:]*t**2 + 3*params[...,10,0,:]*t**2 + 6*params[...,10,0,:]*t*(t - 1) - 3*params[...,11,0,:]*t*(2*t - 2)) - params[...,0,0,:]*(s - 1) + params[...,9,0,:]*(s - 1) - params[...,3,0,:]*s**3 + params[...,6,0,:]*s**3 - 3*params[...,1,0,:]*s*(s - 1)**2 + 3*params[...,2,0,:]*s**2*(s - 1) - 3*params[...,7,0,:]*s**2*(s - 1) + 3*params[...,8,0,:]*s*(s - 1)**2)**2 + (params[...,0,1,:]*(s - 1)**3 - params[...,9,1,:]*(s - 1)**3 - s*(3*params[...,3,1,:]*(t - 1)**2 - 3*params[...,4,1,:]*(t - 1)**2 + 3*params[...,5,1,:]*t**2 - 3*params[...,6,1,:]*t**2 + 6*params[...,5,1,:]*t*(t - 1) - 3*params[...,4,1,:]*t*(2*t - 2)) + params[...,3,1,:]*s - params[...,6,1,:]*s + (s - 1)*(3*params[...,0,1,:]*(t - 1)**2 - 3*params[...,11,1,:]*(t - 1)**2 - 3*params[...,9,1,:]*t**2 + 3*params[...,10,1,:]*t**2 + 6*params[...,10,1,:]*t*(t - 1) - 3*params[...,11,1,:]*t*(2*t - 2)) - params[...,0,1,:]*(s - 1) + params[...,9,1,:]*(s - 1) - params[...,3,1,:]*s**3 + params[...,6,1,:]*s**3 - 3*params[...,1,1,:]*s*(s - 1)**2 + 3*params[...,2,1,:]*s**2*(s - 1) - 3*params[...,7,1,:]*s**2*(s - 1) + 3*params[...,8,1,:]*s*(s - 1)**2)**2 + (params[...,0,2,:]*(s - 1)**3 - params[...,9,2,:]*(s - 1)**3 - s*(3*params[...,3,2,:]*(t - 1)**2 - 3*params[...,4,2,:]*(t - 1)**2 + 3*params[...,5,2,:]*t**2 - 3*params[...,6,2,:]*t**2 + 6*params[...,5,2,:]*t*(t - 1) - 3*params[...,4,2,:]*t*(2*t - 2)) + params[...,3,2,:]*s - params[...,6,2,:]*s + (s - 1)*(3*params[...,0,2,:]*(t - 1)**2 - 3*params[...,11,2,:]*(t - 1)**2 - 3*params[...,9,2,:]*t**2 + 3*params[...,10,2,:]*t**2 + 6*params[...,10,2,:]*t*(t - 1) - 3*params[...,11,2,:]*t*(2*t - 2)) - params[...,0,2,:]*(s - 1) + params[...,9,2,:]*(s - 1) - params[...,3,2,:]*s**3 + params[...,6,2,:]*s**3 - 3*params[...,1,2,:]*s*(s - 1)**2 + 3*params[...,2,2,:]*s**2*(s - 1) - 3*params[...,7,2,:]*s**2*(s - 1) + 3*params[...,8,2,:]*s*(s - 1)**2)**2)*((params[...,0,0,:]*(t - 1)**3 - params[...,3,0,:]*(t - 1)**3 + t*(3*params[...,8,0,:]*(s - 1)**2 - 3*params[...,9,0,:]*(s - 1)**2 + 3*params[...,6,0,:]*s**2 - 3*params[...,7,0,:]*s**2 - 6*params[...,7,0,:]*s*(s - 1) + 3*params[...,8,0,:]*s*(2*s - 2)) - params[...,6,0,:]*t + params[...,9,0,:]*t + (t - 1)*(3*params[...,0,0,:]*(s - 1)**2 - 3*params[...,1,0,:]*(s - 1)**2 + 3*params[...,2,0,:]*s**2 - 3*params[...,3,0,:]*s**2 + 6*params[...,2,0,:]*s*(s - 1) - 3*params[...,1,0,:]*s*(2*s - 2)) - params[...,0,0,:]*(t - 1) + params[...,3,0,:]*(t - 1) + params[...,6,0,:]*t**3 - params[...,9,0,:]*t**3 + 3*params[...,4,0,:]*t*(t - 1)**2 - 3*params[...,5,0,:]*t**2*(t - 1) + 3*params[...,10,0,:]*t**2*(t - 1) - 3*params[...,11,0,:]*t*(t - 1)**2)**2 + (params[...,0,1,:]*(t - 1)**3 - params[...,3,1,:]*(t - 1)**3 + t*(3*params[...,8,1,:]*(s - 1)**2 - 3*params[...,9,1,:]*(s - 1)**2 + 3*params[...,6,1,:]*s**2 - 3*params[...,7,1,:]*s**2 - 6*params[...,7,1,:]*s*(s - 1) + 3*params[...,8,1,:]*s*(2*s - 2)) - params[...,6,1,:]*t + params[...,9,1,:]*t + (t - 1)*(3*params[...,0,1,:]*(s - 1)**2 - 3*params[...,1,1,:]*(s - 1)**2 + 3*params[...,2,1,:]*s**2 - 3*params[...,3,1,:]*s**2 + 6*params[...,2,1,:]*s*(s - 1) - 3*params[...,1,1,:]*s*(2*s - 2)) - params[...,0,1,:]*(t - 1) + params[...,3,1,:]*(t - 1) + params[...,6,1,:]*t**3 - params[...,9,1,:]*t**3 + 3*params[...,4,1,:]*t*(t - 1)**2 - 3*params[...,5,1,:]*t**2*(t - 1) + 3*params[...,10,1,:]*t**2*(t - 1) - 3*params[...,11,1,:]*t*(t - 1)**2)**2 + (params[...,0,2,:]*(t - 1)**3 - params[...,3,2,:]*(t - 1)**3 + t*(3*params[...,8,2,:]*(s - 1)**2 - 3*params[...,9,2,:]*(s - 1)**2 + 3*params[...,6,2,:]*s**2 - 3*params[...,7,2,:]*s**2 - 6*params[...,7,2,:]*s*(s - 1) + 3*params[...,8,2,:]*s*(2*s - 2)) - params[...,6,2,:]*t + params[...,9,2,:]*t + (t - 1)*(3*params[...,0,2,:]*(s - 1)**2 - 3*params[...,1,2,:]*(s - 1)**2 + 3*params[...,2,2,:]*s**2 - 3*params[...,3,2,:]*s**2 + 6*params[...,2,2,:]*s*(s - 1) - 3*params[...,1,2,:]*s*(2*s - 2)) - params[...,0,2,:]*(t - 1) + params[...,3,2,:]*(t - 1) + params[...,6,2,:]*t**3 - params[...,9,2,:]*t**3 + 3*params[...,4,2,:]*t*(t - 1)**2 - 3*params[...,5,2,:]*t**2*(t - 1) + 3*params[...,10,2,:]*t**2*(t - 1) - 3*params[...,11,2,:]*t*(t - 1)**2)**2) - ((params[...,0,0,:]*(s - 1)**3 - params[...,9,0,:]*(s - 1)**3 - s*(3*params[...,3,0,:]*(t - 1)**2 - 3*params[...,4,0,:]*(t - 1)**2 + 3*params[...,5,0,:]*t**2 - 3*params[...,6,0,:]*t**2 + 6*params[...,5,0,:]*t*(t - 1) - 3*params[...,4,0,:]*t*(2*t - 2)) + params[...,3,0,:]*s - params[...,6,0,:]*s + (s - 1)*(3*params[...,0,0,:]*(t - 1)**2 - 3*params[...,11,0,:]*(t - 1)**2 - 3*params[...,9,0,:]*t**2 + 3*params[...,10,0,:]*t**2 + 6*params[...,10,0,:]*t*(t - 1) - 3*params[...,11,0,:]*t*(2*t - 2)) - params[...,0,0,:]*(s - 1) + params[...,9,0,:]*(s - 1) - params[...,3,0,:]*s**3 + params[...,6,0,:]*s**3 - 3*params[...,1,0,:]*s*(s - 1)**2 + 3*params[...,2,0,:]*s**2*(s - 1) - 3*params[...,7,0,:]*s**2*(s - 1) + 3*params[...,8,0,:]*s*(s - 1)**2)*(params[...,0,0,:]*(t - 1)**3 - params[...,3,0,:]*(t - 1)**3 + t*(3*params[...,8,0,:]*(s - 1)**2 - 3*params[...,9,0,:]*(s - 1)**2 + 3*params[...,6,0,:]*s**2 - 3*params[...,7,0,:]*s**2 - 6*params[...,7,0,:]*s*(s - 1) + 3*params[...,8,0,:]*s*(2*s - 2)) - params[...,6,0,:]*t + params[...,9,0,:]*t + (t - 1)*(3*params[...,0,0,:]*(s - 1)**2 - 3*params[...,1,0,:]*(s - 1)**2 + 3*params[...,2,0,:]*s**2 - 3*params[...,3,0,:]*s**2 + 6*params[...,2,0,:]*s*(s - 1) - 3*params[...,1,0,:]*s*(2*s - 2)) - params[...,0,0,:]*(t - 1) + params[...,3,0,:]*(t - 1) + params[...,6,0,:]*t**3 - params[...,9,0,:]*t**3 + 3*params[...,4,0,:]*t*(t - 1)**2 - 3*params[...,5,0,:]*t**2*(t - 1) + 3*params[...,10,0,:]*t**2*(t - 1) - 3*params[...,11,0,:]*t*(t - 1)**2) + (params[...,0,1,:]*(s - 1)**3 - params[...,9,1,:]*(s - 1)**3 - s*(3*params[...,3,1,:]*(t - 1)**2 - 3*params[...,4,1,:]*(t - 1)**2 + 3*params[...,5,1,:]*t**2 - 3*params[...,6,1,:]*t**2 + 6*params[...,5,1,:]*t*(t - 1) - 3*params[...,4,1,:]*t*(2*t - 2)) + params[...,3,1,:]*s - params[...,6,1,:]*s + (s - 1)*(3*params[...,0,1,:]*(t - 1)**2 - 3*params[...,11,1,:]*(t - 1)**2 - 3*params[...,9,1,:]*t**2 + 3*params[...,10,1,:]*t**2 + 6*params[...,10,1,:]*t*(t - 1) - 3*params[...,11,1,:]*t*(2*t - 2)) - params[...,0,1,:]*(s - 1) + params[...,9,1,:]*(s - 1) - params[...,3,1,:]*s**3 + params[...,6,1,:]*s**3 - 3*params[...,1,1,:]*s*(s - 1)**2 + 3*params[...,2,1,:]*s**2*(s - 1) - 3*params[...,7,1,:]*s**2*(s - 1) + 3*params[...,8,1,:]*s*(s - 1)**2)*(params[...,0,1,:]*(t - 1)**3 - params[...,3,1,:]*(t - 1)**3 + t*(3*params[...,8,1,:]*(s - 1)**2 - 3*params[...,9,1,:]*(s - 1)**2 + 3*params[...,6,1,:]*s**2 - 3*params[...,7,1,:]*s**2 - 6*params[...,7,1,:]*s*(s - 1) + 3*params[...,8,1,:]*s*(2*s - 2)) - params[...,6,1,:]*t + params[...,9,1,:]*t + (t - 1)*(3*params[...,0,1,:]*(s - 1)**2 - 3*params[...,1,1,:]*(s - 1)**2 + 3*params[...,2,1,:]*s**2 - 3*params[...,3,1,:]*s**2 + 6*params[...,2,1,:]*s*(s - 1) - 3*params[...,1,1,:]*s*(2*s - 2)) - params[...,0,1,:]*(t - 1) + params[...,3,1,:]*(t - 1) + params[...,6,1,:]*t**3 - params[...,9,1,:]*t**3 + 3*params[...,4,1,:]*t*(t - 1)**2 - 3*params[...,5,1,:]*t**2*(t - 1) + 3*params[...,10,1,:]*t**2*(t - 1) - 3*params[...,11,1,:]*t*(t - 1)**2) + (params[...,0,2,:]*(s - 1)**3 - params[...,9,2,:]*(s - 1)**3 - s*(3*params[...,3,2,:]*(t - 1)**2 - 3*params[...,4,2,:]*(t - 1)**2 + 3*params[...,5,2,:]*t**2 - 3*params[...,6,2,:]*t**2 + 6*params[...,5,2,:]*t*(t - 1) - 3*params[...,4,2,:]*t*(2*t - 2)) + params[...,3,2,:]*s - params[...,6,2,:]*s + (s - 1)*(3*params[...,0,2,:]*(t - 1)**2 - 3*params[...,11,2,:]*(t - 1)**2 - 3*params[...,9,2,:]*t**2 + 3*params[...,10,2,:]*t**2 + 6*params[...,10,2,:]*t*(t - 1) - 3*params[...,11,2,:]*t*(2*t - 2)) - params[...,0,2,:]*(s - 1) + params[...,9,2,:]*(s - 1) - params[...,3,2,:]*s**3 + params[...,6,2,:]*s**3 - 3*params[...,1,2,:]*s*(s - 1)**2 + 3*params[...,2,2,:]*s**2*(s - 1) - 3*params[...,7,2,:]*s**2*(s - 1) + 3*params[...,8,2,:]*s*(s - 1)**2)*(params[...,0,2,:]*(t - 1)**3 - params[...,3,2,:]*(t - 1)**3 + t*(3*params[...,8,2,:]*(s - 1)**2 - 3*params[...,9,2,:]*(s - 1)**2 + 3*params[...,6,2,:]*s**2 - 3*params[...,7,2,:]*s**2 - 6*params[...,7,2,:]*s*(s - 1) + 3*params[...,8,2,:]*s*(2*s - 2)) - params[...,6,2,:]*t + params[...,9,2,:]*t + (t - 1)*(3*params[...,0,2,:]*(s - 1)**2 - 3*params[...,1,2,:]*(s - 1)**2 + 3*params[...,2,2,:]*s**2 - 3*params[...,3,2,:]*s**2 + 6*params[...,2,2,:]*s*(s - 1) - 3*params[...,1,2,:]*s*(2*s - 2)) - params[...,0,2,:]*(t - 1) + params[...,3,2,:]*(t - 1) + params[...,6,2,:]*t**3 - params[...,9,2,:]*t**3 + 3*params[...,4,2,:]*t*(t - 1)**2 - 3*params[...,5,2,:]*t**2*(t - 1) + 3*params[...,10,2,:]*t**2*(t - 1) - 3*params[...,11,2,:]*t*(t - 1)**2))**2
9 | det = det.clamp_min_(1e-10).sqrt_()
10 | return det
11 |
12 | def coons_normals(s, t, params):
13 | params = params[...,None]
14 | normals = th.stack([(params[...,0,2,:]*(s - 1)**3 - params[...,9,2,:]*(s - 1)**3 - s*(3*params[...,3,2,:]*(t - 1)**2 - 3*params[...,4,2,:]*(t - 1)**2 + 3*params[...,5,2,:]*t**2 - 3*params[...,6,2,:]*t**2 + 6*params[...,5,2,:]*t*(t - 1) - 3*params[...,4,2,:]*t*(2*t - 2)) + params[...,3,2,:]*s - params[...,6,2,:]*s + (s - 1)*(3*params[...,0,2,:]*(t - 1)**2 - 3*params[...,11,2,:]*(t - 1)**2 - 3*params[...,9,2,:]*t**2 + 3*params[...,10,2,:]*t**2 + 6*params[...,10,2,:]*t*(t - 1) - 3*params[...,11,2,:]*t*(2*t - 2)) - params[...,0,2,:]*(s - 1) + params[...,9,2,:]*(s - 1) - params[...,3,2,:]*s**3 + params[...,6,2,:]*s**3 - 3*params[...,1,2,:]*s*(s - 1)**2 + 3*params[...,2,2,:]*s**2*(s - 1) - 3*params[...,7,2,:]*s**2*(s - 1) + 3*params[...,8,2,:]*s*(s - 1)**2)*(params[...,0,1,:]*(t - 1)**3 - params[...,3,1,:]*(t - 1)**3 + t*(3*params[...,8,1,:]*(s - 1)**2 - 3*params[...,9,1,:]*(s - 1)**2 + 3*params[...,6,1,:]*s**2 - 3*params[...,7,1,:]*s**2 - 6*params[...,7,1,:]*s*(s - 1) + 3*params[...,8,1,:]*s*(2*s - 2)) - params[...,6,1,:]*t + params[...,9,1,:]*t + (t - 1)*(3*params[...,0,1,:]*(s - 1)**2 - 3*params[...,1,1,:]*(s - 1)**2 + 3*params[...,2,1,:]*s**2 - 3*params[...,3,1,:]*s**2 + 6*params[...,2,1,:]*s*(s - 1) - 3*params[...,1,1,:]*s*(2*s - 2)) - params[...,0,1,:]*(t - 1) + params[...,3,1,:]*(t - 1) + params[...,6,1,:]*t**3 - params[...,9,1,:]*t**3 + 3*params[...,4,1,:]*t*(t - 1)**2 - 3*params[...,5,1,:]*t**2*(t - 1) + 3*params[...,10,1,:]*t**2*(t - 1) - 3*params[...,11,1,:]*t*(t - 1)**2) - (params[...,0,1,:]*(s - 1)**3 - params[...,9,1,:]*(s - 1)**3 - s*(3*params[...,3,1,:]*(t - 1)**2 - 3*params[...,4,1,:]*(t - 1)**2 + 3*params[...,5,1,:]*t**2 - 3*params[...,6,1,:]*t**2 + 6*params[...,5,1,:]*t*(t - 1) - 3*params[...,4,1,:]*t*(2*t - 2)) + params[...,3,1,:]*s - params[...,6,1,:]*s + (s - 1)*(3*params[...,0,1,:]*(t - 1)**2 - 3*params[...,11,1,:]*(t - 1)**2 - 3*params[...,9,1,:]*t**2 + 3*params[...,10,1,:]*t**2 + 6*params[...,10,1,:]*t*(t - 1) - 3*params[...,11,1,:]*t*(2*t - 2)) - params[...,0,1,:]*(s - 1) + params[...,9,1,:]*(s - 1) - params[...,3,1,:]*s**3 + params[...,6,1,:]*s**3 - 3*params[...,1,1,:]*s*(s - 1)**2 + 3*params[...,2,1,:]*s**2*(s - 1) - 3*params[...,7,1,:]*s**2*(s - 1) + 3*params[...,8,1,:]*s*(s - 1)**2)*(params[...,0,2,:]*(t - 1)**3 - params[...,3,2,:]*(t - 1)**3 + t*(3*params[...,8,2,:]*(s - 1)**2 - 3*params[...,9,2,:]*(s - 1)**2 + 3*params[...,6,2,:]*s**2 - 3*params[...,7,2,:]*s**2 - 6*params[...,7,2,:]*s*(s - 1) + 3*params[...,8,2,:]*s*(2*s - 2)) - params[...,6,2,:]*t + params[...,9,2,:]*t + (t - 1)*(3*params[...,0,2,:]*(s - 1)**2 - 3*params[...,1,2,:]*(s - 1)**2 + 3*params[...,2,2,:]*s**2 - 3*params[...,3,2,:]*s**2 + 6*params[...,2,2,:]*s*(s - 1) - 3*params[...,1,2,:]*s*(2*s - 2)) - params[...,0,2,:]*(t - 1) + params[...,3,2,:]*(t - 1) + params[...,6,2,:]*t**3 - params[...,9,2,:]*t**3 + 3*params[...,4,2,:]*t*(t - 1)**2 - 3*params[...,5,2,:]*t**2*(t - 1) + 3*params[...,10,2,:]*t**2*(t - 1) - 3*params[...,11,2,:]*t*(t - 1)**2), (params[...,0,0,:]*(s - 1)**3 - params[...,9,0,:]*(s - 1)**3 - s*(3*params[...,3,0,:]*(t - 1)**2 - 3*params[...,4,0,:]*(t - 1)**2 + 3*params[...,5,0,:]*t**2 - 3*params[...,6,0,:]*t**2 + 6*params[...,5,0,:]*t*(t - 1) - 3*params[...,4,0,:]*t*(2*t - 2)) + params[...,3,0,:]*s - params[...,6,0,:]*s + (s - 1)*(3*params[...,0,0,:]*(t - 1)**2 - 3*params[...,11,0,:]*(t - 1)**2 - 3*params[...,9,0,:]*t**2 + 3*params[...,10,0,:]*t**2 + 6*params[...,10,0,:]*t*(t - 1) - 3*params[...,11,0,:]*t*(2*t - 2)) - params[...,0,0,:]*(s - 1) + params[...,9,0,:]*(s - 1) - params[...,3,0,:]*s**3 + params[...,6,0,:]*s**3 - 3*params[...,1,0,:]*s*(s - 1)**2 + 3*params[...,2,0,:]*s**2*(s - 1) - 3*params[...,7,0,:]*s**2*(s - 1) + 3*params[...,8,0,:]*s*(s - 1)**2)*(params[...,0,2,:]*(t - 1)**3 - params[...,3,2,:]*(t - 1)**3 + t*(3*params[...,8,2,:]*(s - 1)**2 - 3*params[...,9,2,:]*(s - 1)**2 + 3*params[...,6,2,:]*s**2 - 3*params[...,7,2,:]*s**2 - 6*params[...,7,2,:]*s*(s - 1) + 3*params[...,8,2,:]*s*(2*s - 2)) - params[...,6,2,:]*t + params[...,9,2,:]*t + (t - 1)*(3*params[...,0,2,:]*(s - 1)**2 - 3*params[...,1,2,:]*(s - 1)**2 + 3*params[...,2,2,:]*s**2 - 3*params[...,3,2,:]*s**2 + 6*params[...,2,2,:]*s*(s - 1) - 3*params[...,1,2,:]*s*(2*s - 2)) - params[...,0,2,:]*(t - 1) + params[...,3,2,:]*(t - 1) + params[...,6,2,:]*t**3 - params[...,9,2,:]*t**3 + 3*params[...,4,2,:]*t*(t - 1)**2 - 3*params[...,5,2,:]*t**2*(t - 1) + 3*params[...,10,2,:]*t**2*(t - 1) - 3*params[...,11,2,:]*t*(t - 1)**2) - (params[...,0,2,:]*(s - 1)**3 - params[...,9,2,:]*(s - 1)**3 - s*(3*params[...,3,2,:]*(t - 1)**2 - 3*params[...,4,2,:]*(t - 1)**2 + 3*params[...,5,2,:]*t**2 - 3*params[...,6,2,:]*t**2 + 6*params[...,5,2,:]*t*(t - 1) - 3*params[...,4,2,:]*t*(2*t - 2)) + params[...,3,2,:]*s - params[...,6,2,:]*s + (s - 1)*(3*params[...,0,2,:]*(t - 1)**2 - 3*params[...,11,2,:]*(t - 1)**2 - 3*params[...,9,2,:]*t**2 + 3*params[...,10,2,:]*t**2 + 6*params[...,10,2,:]*t*(t - 1) - 3*params[...,11,2,:]*t*(2*t - 2)) - params[...,0,2,:]*(s - 1) + params[...,9,2,:]*(s - 1) - params[...,3,2,:]*s**3 + params[...,6,2,:]*s**3 - 3*params[...,1,2,:]*s*(s - 1)**2 + 3*params[...,2,2,:]*s**2*(s - 1) - 3*params[...,7,2,:]*s**2*(s - 1) + 3*params[...,8,2,:]*s*(s - 1)**2)*(params[...,0,0,:]*(t - 1)**3 - params[...,3,0,:]*(t - 1)**3 + t*(3*params[...,8,0,:]*(s - 1)**2 - 3*params[...,9,0,:]*(s - 1)**2 + 3*params[...,6,0,:]*s**2 - 3*params[...,7,0,:]*s**2 - 6*params[...,7,0,:]*s*(s - 1) + 3*params[...,8,0,:]*s*(2*s - 2)) - params[...,6,0,:]*t + params[...,9,0,:]*t + (t - 1)*(3*params[...,0,0,:]*(s - 1)**2 - 3*params[...,1,0,:]*(s - 1)**2 + 3*params[...,2,0,:]*s**2 - 3*params[...,3,0,:]*s**2 + 6*params[...,2,0,:]*s*(s - 1) - 3*params[...,1,0,:]*s*(2*s - 2)) - params[...,0,0,:]*(t - 1) + params[...,3,0,:]*(t - 1) + params[...,6,0,:]*t**3 - params[...,9,0,:]*t**3 + 3*params[...,4,0,:]*t*(t - 1)**2 - 3*params[...,5,0,:]*t**2*(t - 1) + 3*params[...,10,0,:]*t**2*(t - 1) - 3*params[...,11,0,:]*t*(t - 1)**2), (params[...,0,1,:]*(s - 1)**3 - params[...,9,1,:]*(s - 1)**3 - s*(3*params[...,3,1,:]*(t - 1)**2 - 3*params[...,4,1,:]*(t - 1)**2 + 3*params[...,5,1,:]*t**2 - 3*params[...,6,1,:]*t**2 + 6*params[...,5,1,:]*t*(t - 1) - 3*params[...,4,1,:]*t*(2*t - 2)) + params[...,3,1,:]*s - params[...,6,1,:]*s + (s - 1)*(3*params[...,0,1,:]*(t - 1)**2 - 3*params[...,11,1,:]*(t - 1)**2 - 3*params[...,9,1,:]*t**2 + 3*params[...,10,1,:]*t**2 + 6*params[...,10,1,:]*t*(t - 1) - 3*params[...,11,1,:]*t*(2*t - 2)) - params[...,0,1,:]*(s - 1) + params[...,9,1,:]*(s - 1) - params[...,3,1,:]*s**3 + params[...,6,1,:]*s**3 - 3*params[...,1,1,:]*s*(s - 1)**2 + 3*params[...,2,1,:]*s**2*(s - 1) - 3*params[...,7,1,:]*s**2*(s - 1) + 3*params[...,8,1,:]*s*(s - 1)**2)*(params[...,0,0,:]*(t - 1)**3 - params[...,3,0,:]*(t - 1)**3 + t*(3*params[...,8,0,:]*(s - 1)**2 - 3*params[...,9,0,:]*(s - 1)**2 + 3*params[...,6,0,:]*s**2 - 3*params[...,7,0,:]*s**2 - 6*params[...,7,0,:]*s*(s - 1) + 3*params[...,8,0,:]*s*(2*s - 2)) - params[...,6,0,:]*t + params[...,9,0,:]*t + (t - 1)*(3*params[...,0,0,:]*(s - 1)**2 - 3*params[...,1,0,:]*(s - 1)**2 + 3*params[...,2,0,:]*s**2 - 3*params[...,3,0,:]*s**2 + 6*params[...,2,0,:]*s*(s - 1) - 3*params[...,1,0,:]*s*(2*s - 2)) - params[...,0,0,:]*(t - 1) + params[...,3,0,:]*(t - 1) + params[...,6,0,:]*t**3 - params[...,9,0,:]*t**3 + 3*params[...,4,0,:]*t*(t - 1)**2 - 3*params[...,5,0,:]*t**2*(t - 1) + 3*params[...,10,0,:]*t**2*(t - 1) - 3*params[...,11,0,:]*t*(t - 1)**2) - (params[...,0,0,:]*(s - 1)**3 - params[...,9,0,:]*(s - 1)**3 - s*(3*params[...,3,0,:]*(t - 1)**2 - 3*params[...,4,0,:]*(t - 1)**2 + 3*params[...,5,0,:]*t**2 - 3*params[...,6,0,:]*t**2 + 6*params[...,5,0,:]*t*(t - 1) - 3*params[...,4,0,:]*t*(2*t - 2)) + params[...,3,0,:]*s - params[...,6,0,:]*s + (s - 1)*(3*params[...,0,0,:]*(t - 1)**2 - 3*params[...,11,0,:]*(t - 1)**2 - 3*params[...,9,0,:]*t**2 + 3*params[...,10,0,:]*t**2 + 6*params[...,10,0,:]*t*(t - 1) - 3*params[...,11,0,:]*t*(2*t - 2)) - params[...,0,0,:]*(s - 1) + params[...,9,0,:]*(s - 1) - params[...,3,0,:]*s**3 + params[...,6,0,:]*s**3 - 3*params[...,1,0,:]*s*(s - 1)**2 + 3*params[...,2,0,:]*s**2*(s - 1) - 3*params[...,7,0,:]*s**2*(s - 1) + 3*params[...,8,0,:]*s*(s - 1)**2)*(params[...,0,1,:]*(t - 1)**3 - params[...,3,1,:]*(t - 1)**3 + t*(3*params[...,8,1,:]*(s - 1)**2 - 3*params[...,9,1,:]*(s - 1)**2 + 3*params[...,6,1,:]*s**2 - 3*params[...,7,1,:]*s**2 - 6*params[...,7,1,:]*s*(s - 1) + 3*params[...,8,1,:]*s*(2*s - 2)) - params[...,6,1,:]*t + params[...,9,1,:]*t + (t - 1)*(3*params[...,0,1,:]*(s - 1)**2 - 3*params[...,1,1,:]*(s - 1)**2 + 3*params[...,2,1,:]*s**2 - 3*params[...,3,1,:]*s**2 + 6*params[...,2,1,:]*s*(s - 1) - 3*params[...,1,1,:]*s*(2*s - 2)) - params[...,0,1,:]*(t - 1) + params[...,3,1,:]*(t - 1) + params[...,6,1,:]*t**3 - params[...,9,1,:]*t**3 + 3*params[...,4,1,:]*t*(t - 1)**2 - 3*params[...,5,1,:]*t**2*(t - 1) + 3*params[...,10,1,:]*t**2*(t - 1) - 3*params[...,11,1,:]*t*(t - 1)**2)], dim=-1)
15 | return F.normalize(normals, p=2, dim=-1)
16 |
--------------------------------------------------------------------------------
/learningpatches/datasets.py:
--------------------------------------------------------------------------------
1 | import os
2 |
3 | import numpy as np
4 | from PIL import Image
5 | import torch as th
6 | from torchvision import transforms
7 |
8 |
9 | class SketchDataset(th.utils.data.Dataset):
10 | """Dataset of pairs of sketch images and target 3D geometry."""
11 |
12 | def __init__(self, args, jitter=True, val=False):
13 | """Initialize dataset with optional jittering of input images."""
14 | self.args = args
15 | self._jitter = transforms.Compose([
16 | transforms.Pad(20, fill=(255, 255, 255)),
17 | transforms.RandomRotation(15, resample=Image.BILINEAR),
18 | transforms.CenterCrop(args.im_size),
19 | transforms.RandomResizedCrop(args.im_size, (0.9, 1), (1, 1)),
20 | transforms.RandomHorizontalFlip(p=0.5),
21 | transforms.ColorJitter(
22 | brightness=0.2, contrast=0.2, saturation=0.2, hue=0.2),
23 | transforms.ToTensor()
24 | ]) if jitter else transforms.ToTensor()
25 |
26 | self.root = args.data
27 | self.turbine_files = [f.strip() for f in
28 | open(os.path.join(self.root, 'turbines.txt'),
29 | 'r').readlines()] \
30 | if os.path.exists(os.path.join(self.root, 'turbines.txt')) else []
31 |
32 | if args.wheels:
33 | self.files = []
34 | for f in sorted([f for f in os.listdir(self.root)
35 | if os.path.isdir(os.path.join(self.root, f))]):
36 | if np.load(os.path.join(self.root, f, 'wheels.npy')).sum() < \
37 | int(args.n_samples*0.1232):
38 | continue
39 | else:
40 | self.files.append(f)
41 | else:
42 | self.files = sorted([f for f in os.listdir(
43 | self.root) if os.path.isdir(os.path.join(self.root, f))])
44 | cutoff = int(0.9*len(self.files))
45 | if val:
46 | self.files = self.files[cutoff:]
47 | else:
48 | self.files = self.files[:cutoff]
49 |
50 | def __repr__(self):
51 | return "SketchDataset | {} entries".format(len(self))
52 |
53 | def __len__(self):
54 | return len(self.files)
55 |
56 | def get(self, name):
57 | idx = self.files.index(name)
58 | return self[idx]
59 |
60 | def __getitem__(self, idx):
61 | model = self.files[idx]
62 |
63 | fnames = [f for f in os.listdir(os.path.join(
64 | self.root, model, 'pngs')) if f.endswith('.png')]
65 |
66 | ims = []
67 | if self.args.p2m:
68 | ims = self._jitter(
69 | Image.open(
70 | os.path.join(self.root, model, 'pngs',
71 | np.random.choice(fnames))
72 | ).convert('RGB'))[None]
73 |
74 | else:
75 | views = set()
76 | for f in fnames:
77 | views.add(f.split('_')[0].replace('.png', ''))
78 | n_views = np.random.randint(
79 | 1, min(self.args.n_views, len(views))+1)
80 | selected_views = np.random.choice(
81 | list(views), size=n_views, replace=False)
82 | fnames_per_view = [
83 | [f for f in fnames if f.startswith(v)] for v in selected_views]
84 |
85 | for fnames in fnames_per_view:
86 | f = np.random.choice(fnames)
87 | im = self._jitter(Image.open(os.path.join(
88 | self.root, model, 'pngs', f)).convert('RGB'))
89 | ims.append(im)
90 |
91 | ims = th.stack(ims, dim=0)
92 | ims = th.cat([ims, ims[:1].expand(
93 | self.args.n_views-n_views, -1, -1, -1)], dim=0)
94 |
95 | samples = np.load(os.path.join(self.root, model,
96 | 'samples.npy')).astype(np.float32)
97 | perm = np.random.permutation(samples.shape[0])
98 | points, normals = np.split(samples[perm], 2, axis=1)
99 |
100 | ratio = 0.
101 | if self.args.wheels:
102 | wheel_mask = np.load(os.path.join(
103 | self.root, model, 'wheels.npy'))[perm]
104 | ratio = wheel_mask.sum() / wheel_mask.size
105 |
106 | wheel_points = points[wheel_mask][:int(self.args.n_samples*0.1232)]
107 | wheel_normals = normals[wheel_mask][:int(
108 | self.args.n_samples*0.1232)]
109 |
110 | points = points[np.logical_not(wheel_mask)]
111 | normals = normals[np.logical_not(wheel_mask)]
112 |
113 | points = points[:self.args.n_samples]
114 | normals = normals[:self.args.n_samples]
115 | else:
116 | wheel_points = wheel_normals = np.array([])
117 |
118 | points = points[:self.args.n_samples]
119 | normals = normals[:self.args.n_samples]
120 |
121 | return {
122 | 'fname': model,
123 | 'ims': ims,
124 | 'points': th.from_numpy(points),
125 | 'normals': th.from_numpy(normals),
126 | 'wheel_points': th.from_numpy(wheel_points),
127 | 'wheel_normals': th.from_numpy(wheel_normals),
128 | 'turbines': model in self.turbine_files,
129 | 'ratio': th.tensor(ratio),
130 | }
131 |
--------------------------------------------------------------------------------
/learningpatches/interfaces.py:
--------------------------------------------------------------------------------
1 | import itertools
2 |
3 | import numpy as np
4 | import torch as th
5 | from ttools.training import ModelInterface
6 |
7 | from . import utils
8 |
9 |
10 | class ReconstructionInterface(ModelInterface):
11 | def __init__(self, model, args, vertex_idxs, face_idxs, junctions,
12 | edge_data, vertex_t, adjacencies, junction_order,
13 | template_normals, symmetries=None):
14 | self.model = model
15 |
16 | self.vertex_idxs = vertex_idxs
17 | self.face_idxs = face_idxs
18 | self.junctions = junctions
19 | self.edge_data = edge_data
20 | self.vertex_t = vertex_t
21 | self.junction_order = junction_order
22 | self.template_normals = template_normals[None]
23 |
24 | self.args = args
25 |
26 | self.n_samples_per_loop_side = int(
27 | np.ceil(np.sqrt(args.n_samples / face_idxs.shape[0])))
28 |
29 | self.optimizer = th.optim.Adam(self.model.parameters(), lr=args.lr)
30 |
31 | self.edge_idxs = [[0, 1, 2, 3], [3, 4, 5, 6],
32 | [6, 7, 8, 9], [9, 10, 11, 0]]
33 |
34 | self.nonadjacent_patch_pairs = []
35 | self.adjacent_patch_pairs = []
36 | for i1, i2 in list(
37 | itertools.combinations(range(face_idxs.shape[0]), 2)):
38 | if args.wheels and (
39 | i1 in [5, 11, 17, 23] or i2 in [5, 11, 17, 23]):
40 | continue
41 | if i2 in adjacencies[i1]:
42 | e1 = adjacencies[i1][i2]
43 | self.adjacent_patch_pairs.append((i1, i2, e1))
44 | else:
45 | self.nonadjacent_patch_pairs.append((i1, i2))
46 |
47 | self.d_points_to_tris = utils.PointToTriangleDistance.apply
48 |
49 | p_edge0, p_edge1, p_edge2, p_edge3 = [], [], [], []
50 | for i in range(self.n_samples_per_loop_side):
51 | for j in range(self.n_samples_per_loop_side):
52 | n = self.n_samples_per_loop_side
53 |
54 | if i > 0:
55 | p_edge0.append(i + j*self.n_samples_per_loop_side)
56 | if i < n-1:
57 | p_edge2.append(i + j*self.n_samples_per_loop_side)
58 | if j > 0:
59 | p_edge3.append(i + j*self.n_samples_per_loop_side)
60 | if j < n-1:
61 | p_edge1.append(i + j*self.n_samples_per_loop_side)
62 | self.grid_point_edges = (p_edge0, p_edge1, p_edge2, p_edge3)
63 |
64 | self.triangulation = []
65 | t_edge0, t_edge1, t_edge2, t_edge3 = [], [], [], []
66 | for i in range(self.n_samples_per_loop_side-1):
67 | for j in range(self.n_samples_per_loop_side-1):
68 | n = self.n_samples_per_loop_side-1
69 |
70 | if i > 1:
71 | t_edge0.extend(
72 | [len(self.triangulation), len(self.triangulation)+1])
73 | if i < n-2:
74 | t_edge2.extend(
75 | [len(self.triangulation), len(self.triangulation)+1])
76 | if j > 1:
77 | t_edge3.extend(
78 | [len(self.triangulation), len(self.triangulation)+1])
79 | if j < n-2:
80 | t_edge1.extend(
81 | [len(self.triangulation), len(self.triangulation)+1])
82 |
83 | self.triangulation.extend(
84 | [[i + j*self.n_samples_per_loop_side,
85 | i + (j+1)*self.n_samples_per_loop_side,
86 | i + (j+1)*self.n_samples_per_loop_side + 1],
87 | [i + j*self.n_samples_per_loop_side,
88 | i + j*self.n_samples_per_loop_side + 1,
89 | i + (j+1)*self.n_samples_per_loop_side + 1]])
90 | self.triangulation_edges = (t_edge0, t_edge1, t_edge2, t_edge3)
91 |
92 | _loss = Loss(args, self.triangulation_edges, self.triangulation,
93 | self.grid_point_edges, self.n_samples_per_loop_side,
94 | self.d_points_to_tris, self.edge_idxs,
95 | self.nonadjacent_patch_pairs, self.adjacent_patch_pairs,
96 | self.template_normals, symmetries)
97 | self._compute_losses = th.nn.DataParallel(
98 | _loss) if args.cuda else _loss
99 |
100 | if args.cuda:
101 | self.model.cuda()
102 | self._compute_losses.cuda()
103 |
104 | def forward(self, batch):
105 | ims = batch['ims']
106 | if self.args.cuda:
107 | ims = ims.cuda()
108 |
109 | params = self.model(ims)
110 | vertices, patches = utils.process_patches(
111 | params, self.vertex_idxs, self.face_idxs, self.edge_data,
112 | self.junctions, self.junction_order, self.vertex_t)
113 |
114 | st = th.empty(patches.shape[0], patches.shape[1],
115 | self.n_samples_per_loop_side**2, 2).uniform_().to(params)
116 |
117 | points = utils.coons_sample(st[..., 0], st[..., 1], patches)
118 | normals = utils.coons_normals(st[..., 0], st[..., 1], patches)
119 | mtds = utils.coons_mtds(st[..., 0], st[..., 1], patches)
120 |
121 | return {'patches': patches, 'points': points, 'normals': normals,
122 | 'mtds': mtds, 'st': st, 'params': params, 'vertices': vertices}
123 |
124 | def training_step(self, batch):
125 | self.model.train()
126 | self.optimizer.zero_grad()
127 |
128 | losses_dict = self._compute_losses(batch, self.forward(batch))
129 | loss = losses_dict['loss']
130 | loss.mean().backward()
131 | self.optimizer.step()
132 |
133 | return {k: v.mean().item() for k, v in losses_dict.items()}
134 |
135 | def init_validation(self):
136 | losses = ['loss', 'chamferloss', 'normalsloss', 'collisionloss',
137 | 'planarloss', 'templatenormalsloss', 'symmetryloss']
138 | ret = {loss: 0 for loss in losses}
139 | ret['count'] = 0
140 | return ret
141 |
142 | def validation_step(self, batch, running_data):
143 | self.model.eval()
144 | count = running_data['count']
145 | n = batch['ims'].shape[0]
146 | losses_dict = self._compute_losses(batch, self.forward(batch))
147 | loss = losses_dict['loss']
148 | chamferloss = losses_dict['chamferloss']
149 | normalsloss = losses_dict['normalsloss']
150 | collisionloss = losses_dict['collisionloss']
151 | planarloss = losses_dict['planarloss']
152 | templatenormalsloss = losses_dict['templatenormalsloss']
153 | symmetryloss = losses_dict['symmetryloss']
154 | return {
155 | 'loss': (running_data['loss']*count +
156 | loss.mean().item()*n) / (count+n),
157 | 'chamferloss': (running_data['chamferloss']*count +
158 | chamferloss.mean().item()*n) / (count+n),
159 | 'normalsloss': (running_data['normalsloss']*count +
160 | normalsloss.mean().item()*n) / (count+n),
161 | 'collisionloss': (running_data['collisionloss']*count +
162 | collisionloss.mean().item()*n) / (count+n),
163 | 'planarloss': (running_data['planarloss']*count +
164 | planarloss.mean().item()*n) / (count+n),
165 | 'templatenormalsloss': (running_data['templatenormalsloss']*count +
166 | templatenormalsloss.mean().item()*n)
167 | / (count+n),
168 | 'symmetryloss': (running_data['symmetryloss']*count
169 | + symmetryloss.mean().item()*n) / (count+n),
170 | 'count': count + n
171 | }
172 |
173 |
174 | wheel_idxs = list(range(24))
175 | no_wheel_idxs = list(range(24, 43))
176 |
177 |
178 | class Loss(th.nn.Module):
179 | def __init__(self, args, triangulation_edges, triangulation,
180 | grid_point_edges, n_samples_per_loop_side, d_points_to_tris,
181 | edge_idxs, nonadjacent_patch_pairs, adjacent_patch_pairs,
182 | template_normals, symmetries):
183 | super(Loss, self).__init__()
184 | self.args = args
185 | self.triangulation_edges = triangulation_edges
186 | self.triangulation = triangulation
187 | self.grid_point_edges = grid_point_edges
188 | self.d_points_to_tris = d_points_to_tris
189 | self.edge_idxs = edge_idxs
190 | self.nonadjacent_patch_pairs = nonadjacent_patch_pairs
191 | self.adjacent_patch_pairs = adjacent_patch_pairs
192 | self.symmetries = symmetries
193 |
194 | linspace = th.linspace(0, 1, n_samples_per_loop_side)
195 | s_grid, t_grid = th.meshgrid(linspace, linspace)
196 | self.s_grid = th.nn.Parameter(s_grid.flatten(), requires_grad=False)
197 | self.t_grid = th.nn.Parameter(t_grid.flatten(), requires_grad=False)
198 | self.template_normals = th.nn.Parameter(
199 | template_normals, requires_grad=False)
200 |
201 | def forward(self, batch, fwd_data):
202 | patches = fwd_data['patches'] # [b, n_patches, 12, 3]
203 | points = fwd_data['points']
204 | normals = fwd_data['normals']
205 | mtds = fwd_data['mtds']
206 | vertices = fwd_data['vertices']
207 |
208 | target_points = batch['points'].to(points) # [b, n_points, 3]
209 | target_normals = batch['normals'].to(normals)
210 | if self.args.wheels:
211 | wheel_target_points = batch['wheel_points'].to(points)
212 | wheel_target_normals = batch['wheel_normals'].to(normals)
213 |
214 | b, n_patches, _, _ = patches.shape
215 |
216 | st = fwd_data['st']
217 |
218 | if self.symmetries is not None:
219 | xs, ys = self.symmetries
220 | xs_ = vertices[:, xs]
221 | ys_ = vertices[:, ys] * vertices.new_tensor([[[-1, 1, 1]]])
222 | symmetryloss = th.sum((xs_ - ys_)**2, dim=-1).mean()
223 | else:
224 | symmetryloss = patches.new_zeros(1)
225 |
226 | if self.args.wheels:
227 | mtds = mtds.view(b, -1)
228 |
229 | wheel_points = points[:, wheel_idxs]
230 | no_wheel_points = points[:, no_wheel_idxs]
231 |
232 | wheel_normals = normals[:, wheel_idxs]
233 | no_wheel_normals = normals[:, no_wheel_idxs]
234 |
235 | wheel_chamferloss_a, wheel_chamferloss_b, wheel_normalsloss_a, \
236 | wheel_normalsloss_b = utils.compute_chamfer_losses(
237 | wheel_points, wheel_normals, wheel_target_points,
238 | wheel_target_normals, self.args.w_normals > 0)
239 | no_wheel_chamferloss_a, no_wheel_chamferloss_b, \
240 | no_wheel_normalsloss_a, no_wheel_normalsloss_b = \
241 | utils.compute_chamfer_losses(no_wheel_points, no_wheel_normals,
242 | target_points, target_normals,
243 | self.args.w_normals > 0)
244 |
245 | chamferloss_a = th.cat(
246 | [wheel_chamferloss_a, no_wheel_chamferloss_a], dim=1)
247 | normalsloss_a = th.cat(
248 | [wheel_normalsloss_a, no_wheel_normalsloss_a], dim=1)
249 |
250 | ratio = batch['ratio']
251 | n_wheel_pts = wheel_target_points.shape[1]
252 | n_no_wheel_pts = target_points.shape[1]
253 | n_pts = n_wheel_pts + n_no_wheel_pts
254 | ratio_wheel = ratio * n_pts/n_wheel_pts
255 | ratio_no_wheel = (1-ratio) * n_pts/n_no_wheel_pts
256 |
257 | chamferloss_a = th.sum(mtds*chamferloss_a, dim=-1) / mtds.sum(-1)
258 | chamferloss_b = ratio_wheel * \
259 | wheel_chamferloss_b.mean(
260 | 1) + ratio_no_wheel * no_wheel_chamferloss_b.mean(1)
261 | chamferloss = ((chamferloss_a+chamferloss_b).mean() / 2).view(1)
262 |
263 | normalsloss_a = th.sum(mtds*normalsloss_a, dim=-1) / mtds.sum(-1)
264 | normalsloss_b = ratio_wheel * \
265 | wheel_normalsloss_b.mean(
266 | 1) + ratio_no_wheel * no_wheel_normalsloss_b.mean(1)
267 | normalsloss = ((normalsloss_a+normalsloss_b).mean() / 2).view(1)
268 |
269 | elif self.args.seperate_turbines:
270 | turbine_idxs = [x for x in range(76) if x not in [72, 73, 74, 75]]
271 | no_turbine_idxs = [x for x in range(76)
272 | if x not in [10, 12, 14, 17, 19, 20, 21, 24, 25,
273 | 27, 28, 29, 30, 31, 32, 33, 34,
274 | 66]]
275 |
276 | turbine_points = points[batch['turbines']]
277 | turbine_points = turbine_points[:, turbine_idxs]
278 | no_turbine_points = points[batch['turbines']]
279 | no_turbine_points = no_turbine_points[:, no_turbine_idxs]
280 |
281 | turbine_normals = normals[batch['turbines']]
282 | turbine_normals = turbine_normals[:, turbine_idxs]
283 | no_turbine_normals = normals[batch['turbines']]
284 | no_turbine_normals = no_turbine_normals[:, no_turbine_idxs]
285 |
286 | turbine_mtds = mtds[batch['turbines']]
287 | turbine_mtds = turbine_mtds[:, turbine_idxs]
288 | no_turbine_mtds = mtds[batch['turbines']]
289 | no_turbine_mtds = no_turbine_mtds[:, no_turbine_idxs]
290 |
291 | turbine_patches = patches[batch['turbines']]
292 | turbine_patches = turbine_patches[:, turbine_idxs]
293 | no_turbine_patches = patches[batch['turbines']]
294 | no_turbine_patches = no_turbine_patches[:, no_turbine_idxs]
295 |
296 | turbine_target_points = target_points[batch['turbines']]
297 | no_turbine_target_points = target_points[batch['turbines']]
298 |
299 | turbine_target_normals = target_normals[batch['turbines']]
300 | no_turbine_target_normals = target_normals[batch['turbines']]
301 |
302 | if turbine_points.shape[0] > 0:
303 | turbine_mtds = turbine_mtds.view(turbine_mtds.shape[0], -1)
304 | turbine_chamferloss_a, turbine_chamferloss_b, \
305 | turbine_normalsloss_a, turbine_normalsloss_b = \
306 | utils.compute_chamfer_losses(turbine_points,
307 | turbine_normals,
308 | turbine_target_points,
309 | turbine_target_normals,
310 | self.args.w_normals > 0)
311 | turbine_chamferloss_a = th.sum(
312 | turbine_mtds*turbine_chamferloss_a,
313 | dim=-1) / turbine_mtds.sum(-1)
314 | turbine_chamferloss_b = turbine_chamferloss_b.mean(1)
315 | turbine_chamferloss = (
316 | (turbine_chamferloss_a +
317 | turbine_chamferloss_b).mean() / 2).view(1)
318 | turbine_normalsloss_a = th.sum(
319 | turbine_mtds*turbine_normalsloss_a,
320 | dim=-1) / turbine_mtds.sum(-1)
321 | turbine_normalsloss_b = turbine_normalsloss_b.mean(-1)
322 | turbine_normalsloss = (
323 | (turbine_normalsloss_a +
324 | turbine_normalsloss_b).mean() / 2).view(1)
325 | else:
326 | turbine_chamferloss = turbine_normalsloss = points.new_zeros(1)
327 |
328 | if no_turbine_points.shape[0] > 0:
329 | no_turbine_mtds = no_turbine_mtds.view(
330 | no_turbine_mtds.shape[0], -1)
331 | no_turbine_chamferloss_a, no_turbine_chamferloss_b, \
332 | no_turbine_normalsloss_a, no_turbine_normalsloss_b = \
333 | utils.compute_chamfer_losses(no_turbine_points,
334 | no_turbine_normals,
335 | no_turbine_target_points,
336 | no_turbine_target_normals,
337 | self.args.w_normals > 0)
338 | no_turbine_chamferloss_a = th.sum(
339 | no_turbine_mtds*no_turbine_chamferloss_a,
340 | dim=-1) / no_turbine_mtds.sum(-1)
341 | no_turbine_chamferloss_b = no_turbine_chamferloss_b.mean(1)
342 | no_turbine_chamferloss = (
343 | (no_turbine_chamferloss_a +
344 | no_turbine_chamferloss_b).mean() / 2).view(1)
345 | no_turbine_normalsloss_a = th.sum(
346 | no_turbine_mtds*no_turbine_normalsloss_a,
347 | dim=-1) / no_turbine_mtds.sum(-1)
348 | no_turbine_normalsloss_b = no_turbine_normalsloss_b.mean(-1)
349 | no_turbine_normalsloss = (
350 | (no_turbine_normalsloss_a +
351 | no_turbine_normalsloss_b).mean() / 2).view(1)
352 | else:
353 | no_turbine_chamferloss = no_turbine_normalsloss = \
354 | points.new_zeros(1)
355 |
356 | ratio_turbine = turbine_points.shape[0] / b
357 | chamferloss = ratio_turbine*turbine_chamferloss + \
358 | (1-ratio_turbine)*no_turbine_chamferloss
359 | normalsloss = ratio_turbine*turbine_normalsloss + \
360 | (1-ratio_turbine)*no_turbine_normalsloss
361 |
362 | del turbine_normals, turbine_target_normals, no_turbine_normals, \
363 | no_turbine_target_normals, turbine_points, \
364 | turbine_target_points, no_turbine_points, \
365 | no_turbine_target_points
366 | else:
367 | mtds = mtds.view(b, -1)
368 |
369 | chamferloss_a, chamferloss_b, normalsloss_a, normalsloss_b = \
370 | utils.compute_chamfer_losses(
371 | points, normals, target_points, target_normals,
372 | self.args.w_normals > 0)
373 | chamferloss_a = th.sum(mtds*chamferloss_a, dim=-1) / mtds.sum(-1)
374 | chamferloss_b = chamferloss_b.mean(1)
375 | chamferloss = ((chamferloss_a+chamferloss_b).mean() / 2).view(1)
376 | normalsloss_a = th.sum(mtds*normalsloss_a, dim=-1) / mtds.sum(-1)
377 | normalsloss_b = normalsloss_b.mean(-1)
378 | normalsloss = ((normalsloss_a+normalsloss_b).mean() / 2).view(1)
379 |
380 | mtds = mtds.view(b, n_patches, -1)
381 |
382 | if self.args.w_templatenormals:
383 | templatenormalsloss = th.sum(
384 | (self.template_normals - normals)**2, dim=-1)
385 | templatenormalsloss = th.sum(
386 | mtds*templatenormalsloss, dim=-1) / mtds.sum(-1)
387 | else:
388 | templatenormalsloss = th.zeros_like(chamferloss)
389 |
390 | del target_normals, normals, target_points
391 |
392 | if self.args.w_planar > 0:
393 | planarloss = utils.planar_patch_loss(st, points, mtds)
394 | else:
395 | planarloss = th.zeros_like(chamferloss)
396 |
397 | del points, mtds
398 |
399 | if self.args.w_collision > 0:
400 | collisionloss = chamferloss.new_zeros([b, 0])
401 | grid_points = utils.coons_sample(self.s_grid, self.t_grid, patches)
402 | triangles = grid_points[:, :, self.triangulation]
403 |
404 | i1s, i2s, e1s = zip(*self.adjacent_patch_pairs)
405 | points1 = grid_points[:, i1s]
406 | point_idxs = th.tensor([self.grid_point_edges[e]
407 | for e in e1s]).to(points1.device)
408 | point_idxs = point_idxs[None, :, :, None].expand(b, -1, -1, 3)
409 | points1 = th.gather(points1, 2, point_idxs)
410 | points2 = grid_points[:, i2s]
411 |
412 | triangles1 = triangles[:, i1s]
413 | triangle_idxs = th.tensor(
414 | [self.triangulation_edges[e] for e in e1s]
415 | ).to(triangles1.device)
416 | triangle_idxs = triangle_idxs[None, :, :,
417 | None, None].expand(b, -1, -1, 3, 3)
418 | triangles1 = th.gather(triangles1, 2, triangle_idxs)
419 | triangles2 = triangles[:, i2s]
420 |
421 | idxs = utils.bboxes_intersect(
422 | points1, points2, dim=2).any(0).nonzero().squeeze(1)
423 | n_adjacent_intersections = idxs.shape[0]
424 |
425 | if n_adjacent_intersections > 0:
426 | points1 = points1[:, idxs].view([-1] + list(points1.shape[2:]))
427 | points2 = points2[:, idxs].view([-1] + list(points2.shape[2:]))
428 | triangles1 = triangles1[:, idxs].view(
429 | [-1] + list(triangles1.shape[2:]))
430 | triangles2 = triangles2[:, idxs].view(
431 | [-1] + list(triangles2.shape[2:]))
432 | d1 = self.d_points_to_tris(points1, triangles2)
433 | d2 = self.d_points_to_tris(points2, triangles1)
434 | d = th.min(d1, d2).view(b, -1)
435 | collisionloss = th.cat(
436 | [collisionloss, th.exp(-(d/self.args.sigma_collision)**2)],
437 | dim=1)
438 |
439 | i1s, i2s = zip(*self.nonadjacent_patch_pairs)
440 | idxs = utils.bboxes_intersect(
441 | grid_points[:, i1s], grid_points[:, i2s], dim=2
442 | ).any(0).nonzero().squeeze(1)
443 | n_nonadjacent_intersections = idxs.shape[0]
444 | i1s = th.tensor(i1s).to(grid_points.device)[idxs]
445 | i2s = th.tensor(i2s).to(grid_points.device)[idxs]
446 |
447 | if n_nonadjacent_intersections > 0:
448 | points1 = grid_points[:, i1s].view(
449 | [-1] + list(grid_points.shape[2:]))
450 | points2 = grid_points[:, i2s].view(
451 | [-1] + list(grid_points.shape[2:]))
452 | triangles1 = triangles[:, i1s].view(
453 | [-1] + list(triangles.shape[2:]))
454 | triangles2 = triangles[:, i2s].view(
455 | [-1] + list(triangles.shape[2:]))
456 | d1 = self.d_points_to_tris(points1, triangles2)
457 | d2 = self.d_points_to_tris(points2, triangles1)
458 | d = th.min(d1, d2).view(b, -1)
459 | collisionloss = th.cat(
460 | [collisionloss, th.exp(-(d/self.args.sigma_collision)**2)],
461 | dim=1)
462 |
463 | del triangles
464 |
465 | if n_adjacent_intersections + n_nonadjacent_intersections > 0:
466 | collisionloss = collisionloss.sum(-1).mean()
467 | else:
468 | collisionloss = th.zeros_like(chamferloss)
469 | else:
470 | collisionloss = th.zeros_like(chamferloss)
471 |
472 | loss = chamferloss + self.args.w_normals*normalsloss + \
473 | self.args.w_collision*collisionloss + \
474 | self.args.w_planar*planarloss + \
475 | self.args.w_templatenormals*templatenormalsloss + \
476 | self.args.w_symmetry*symmetryloss
477 |
478 | return {
479 | 'loss': loss,
480 | 'chamferloss': chamferloss,
481 | 'normalsloss': normalsloss,
482 | 'collisionloss': collisionloss,
483 | 'planarloss': planarloss,
484 | 'templatenormalsloss': templatenormalsloss,
485 | 'symmetryloss': symmetryloss,
486 | }
487 |
--------------------------------------------------------------------------------
/learningpatches/models.py:
--------------------------------------------------------------------------------
1 | import torch as th
2 | import torch.nn as nn
3 | from torchvision.models import resnet18
4 |
5 |
6 | class ReconstructionModel(nn.Module):
7 | """Sketch to patch model that encodes an image and outputs parameters."""
8 |
9 | def __init__(self, output_dim, init=None):
10 | """Construct the model according to the necessary output dimension."""
11 | super(ReconstructionModel, self).__init__()
12 |
13 | self.encode = resnet18(num_classes=1024)
14 | self.decode = nn.Sequential(
15 | nn.LayerNorm(1024),
16 | nn.LeakyReLU(),
17 | nn.Linear(1024, 512),
18 | nn.LayerNorm(512),
19 | nn.LeakyReLU(),
20 | nn.Linear(512, 256),
21 | nn.LayerNorm(256),
22 | nn.LeakyReLU(),
23 | )
24 | self.out = nn.Linear(256, output_dim)
25 |
26 | if init is not None:
27 | nn.init.zeros_(self.out.weight)
28 | with th.no_grad():
29 | self.out.bias.data = init.clone()
30 |
31 | def forward(self, ims):
32 | """Process one our more images, corresponding to different views."""
33 | codes = th.stack([self.encode(im.squeeze(1))
34 | for im in th.split(ims, 1, dim=1)], dim=-1)
35 | return self.out(self.decode(codes.max(-1)[0]))
36 |
--------------------------------------------------------------------------------
/learningpatches/utils.py:
--------------------------------------------------------------------------------
1 | import numpy as np
2 | import torch as th
3 |
4 | from .coons_utils import *
5 |
6 |
7 | def subbezier(t1, t2, params):
8 | """Compute control points for cubic Bezier curve between t1 and t2.
9 |
10 | t1 -- [batch_size]
11 | t2 -- [batch_size]
12 | params -- [batch_size, 4, 3]
13 | """
14 | def dB_dt(t):
15 | return params[:, 0]*(-3*(1-t)**2) + params[:, 1]*(3*(1-4*t+3*t**2)) \
16 | + params[:, 2]*(3*(2*t-3*t**2)) + params[:, 3]*(3*t**2)
17 |
18 | t1 = t1[:, None]
19 | t2 = t2[:, None]
20 | sub_pts = th.empty_like(params)
21 | sub_pts[:, 0] = bezier_sample(t1[:, :, None], params).squeeze(1)
22 | sub_pts[:, 3] = bezier_sample(t2[:, :, None], params).squeeze(1)
23 | sub_pts[:, 1] = (t2-t1)*dB_dt(t1)/3 + sub_pts[:, 0]
24 | sub_pts[:, 2] = sub_pts[:, 3] - (t2-t1)*dB_dt(t2)/3
25 | return sub_pts
26 |
27 |
28 | def bezier_sample(t, params):
29 | """Sample points from cubic Bezier curves defined by params at t values."""
30 | A = params.new_tensor([[1, 0, 0, 0],
31 | [-3, 3, 0, 0],
32 | [3, -6, 3, 0],
33 | [-1, 3, -3, 1]])
34 |
35 | t = t.pow(t.new_tensor([0, 1, 2, 3])) # [n_samples, 4]
36 |
37 | points = t @ A @ params # [..., n_samples, 3]
38 | return points
39 |
40 |
41 | def coons_sample(s, t, params):
42 | """Sample points from Coons patch defined by params at s, t values.
43 |
44 | params -- [..., 12, 3]
45 | """
46 | sides = [params[..., :4, :], params[..., 3:7, :],
47 | params[..., 6:10, :], params[..., [9, 10, 11, 0], :]]
48 | corners = [params[..., [0], :], params[..., [3], :],
49 | params[..., [9], :], params[..., [6], :]]
50 |
51 | s = s[..., None]
52 | t = t[..., None]
53 | B = corners[0] * (1-s) * (1-t) + corners[1] * s * (1-t) + \
54 | corners[2] * (1-s) * t + corners[3] * s * t # [..., n_samples, 3]
55 |
56 | Lc = bezier_sample(s, sides[0]) * (1-t) + bezier_sample(1-s, sides[2]) * t
57 | Ld = bezier_sample(t, sides[1]) * s + bezier_sample(1-t, sides[3]) * (1-s)
58 | return Lc + Ld - B
59 |
60 |
61 | def batched_cdist_l2(x1, x2):
62 | """Compute batched l2 cdist."""
63 | x1_norm = x1.pow(2).sum(-1, keepdim=True)
64 | x2_norm = x2.pow(2).sum(-1, keepdim=True)
65 | res = th.baddbmm(
66 | x2_norm.transpose(-2, -1),
67 | x1,
68 | x2.transpose(-2, -1),
69 | alpha=-2
70 | ).add_(x1_norm).clamp_min_(1e-10).sqrt_()
71 | return res
72 |
73 |
74 | def planar_patch_loss(params, points, mtds):
75 | """Compute planar patch loss from control points, samples, and Jacobians.
76 |
77 | params -- [..., 2]
78 | points -- [..., 3]
79 | """
80 | X = th.cat([params.new_ones(list(params.shape[:-1]) + [1]), params],
81 | dim=-1)
82 | b = th.inverse(X.transpose(-1, -2) @ X) @ X.transpose(-1, -2) @ points
83 | distances = (X @ b - points).pow(2).sum(-1)
84 | return th.sum(distances*mtds, dim=-1) / mtds.sum(-1)
85 |
86 |
87 | def dot(a, b):
88 | """Dot product."""
89 | return th.sum(a*b, dim=-1, keepdim=True)
90 |
91 |
92 | def dot2(a):
93 | """Squared norm."""
94 | return dot(a, a)
95 |
96 |
97 | def d_points_to_tris(points, triangles):
98 | """Compute distance frome each point to the corresponding triangle.
99 |
100 | points -- [b, n, 3]
101 | triangles -- [b, n, 3, 3]
102 | """
103 | v21 = triangles[:, :, 1]-triangles[:, :, 0]
104 | v32 = triangles[:, :, 2]-triangles[:, :, 1]
105 | v13 = triangles[:, :, 0]-triangles[:, :, 2]
106 | p1 = points - triangles[:, :, 0]
107 | p2 = points - triangles[:, :, 1]
108 | p3 = points - triangles[:, :, 2]
109 | nor = th.cross(v21, v13, dim=-1)
110 |
111 | cond = dot(th.cross(v21, nor, dim=-1), p1).sign() \
112 | + dot(th.cross(v32, nor, dim=-1), p2).sign() \
113 | + dot(th.cross(v13, nor, dim=-1), p3).sign() < 2
114 | cond = cond.float()
115 | result = cond * th.stack([
116 | dot2(v21 * th.clamp(dot(v21, p1) / dot2(v21), 0, 1) - p1),
117 | dot2(v32 * th.clamp(dot(v32, p2) / dot2(v32), 0, 1) - p2),
118 | dot2(v13 * th.clamp(dot(v13, p3) / dot2(v13), 0, 1) - p3)
119 | ], dim=-1).min(-1)[0] + (1-cond) * dot(nor, p1) * dot(nor, p1) / dot2(nor)
120 | return result.squeeze(-1).min(-1)[0]
121 |
122 |
123 | class PointToTriangleDistance(th.autograd.Function):
124 | """Autograd function for computing smallest point to triangle distance."""
125 |
126 | @staticmethod
127 | def forward(ctx, points, triangles):
128 | """Compute smallest distance between each point and triangle batch.
129 |
130 | points -- [batch_size, n_points, 3]
131 | triangles -- [batch_size, n_triagles, 3, 3]
132 | """
133 | b = points.shape[0]
134 |
135 | v21 = triangles[:, None, :, 1]-triangles[:, None, :, 0]
136 | v32 = triangles[:, None, :, 2]-triangles[:, None, :, 1]
137 | v13 = triangles[:, None, :, 0]-triangles[:, None, :, 2]
138 | p1 = points[:, :, None] - triangles[:, None, :, 0]
139 | p2 = points[:, :, None] - triangles[:, None, :, 1]
140 | p3 = points[:, :, None] - triangles[:, None, :, 2]
141 | nor = th.cross(v21, v13, dim=-1)
142 |
143 | cond = dot(th.cross(v21, nor, dim=-1), p1).sign() \
144 | + dot(th.cross(v32, nor, dim=-1), p2).sign() \
145 | + dot(th.cross(v13, nor, dim=-1), p3).sign() < 2
146 | cond = cond.float()
147 | result = cond * th.stack([
148 | dot2(v21 * th.clamp(dot(v21, p1) / dot2(v21), 0, 1) - p1),
149 | dot2(v32 * th.clamp(dot(v32, p2) / dot2(v32), 0, 1) - p2),
150 | dot2(v13 * th.clamp(dot(v13, p3) / dot2(v13), 0, 1) - p3)
151 | ], dim=-1).min(-1)[0] + (1-cond) \
152 | * dot(nor, p1) * dot(nor, p1) / dot2(nor)
153 | result = result.squeeze(-1)
154 |
155 | _, nearest_tris_idxs = result.min(-1) # [b, n_points]
156 | _, nearest_points_idxs = result.min(-2) # [b, n_tris]
157 | ctx.save_for_backward(
158 | points, triangles, nearest_tris_idxs, nearest_points_idxs)
159 |
160 | return result.view(b, -1).min(-1)[0]
161 |
162 | @staticmethod
163 | def backward(ctx, grad_output):
164 | """Only consider the closest point-triangle pair for gradient."""
165 | points, triangles, nearest_tris_idxs, nearest_points_idxs = \
166 | ctx.saved_tensors
167 | grad_points = grad_tris = None
168 |
169 | if ctx.needs_input_grad[0]:
170 | idx = nearest_tris_idxs[..., None, None].expand(
171 | list(nearest_tris_idxs.shape) + [3, 3])
172 | nearest_tris = triangles.gather(index=idx, dim=1)
173 | with th.enable_grad():
174 | distance = d_points_to_tris(points, nearest_tris)
175 | grad_points = th.autograd.grad(outputs=distance, inputs=points,
176 | grad_outputs=grad_output,
177 | only_inputs=True)[0]
178 | if ctx.needs_input_grad[1]:
179 | idx = nearest_points_idxs[..., None].expand(
180 | list(nearest_points_idxs.shape) + [3])
181 | nearest_points = points.gather(index=idx, dim=1)
182 | with th.enable_grad():
183 | distance = d_points_to_tris(nearest_points, triangles)
184 | grad_tris = th.autograd.grad(outputs=distance,
185 | inputs=triangles,
186 | grad_outputs=grad_output,
187 | only_inputs=True)[0]
188 |
189 | return grad_points, grad_tris
190 |
191 |
192 | def bboxes_intersect(points1, points2, dim=1):
193 | """Compute whether bounding boxes of two point clouds intersect."""
194 | min1 = points1.min(dim)[0]
195 | max1 = points1.max(dim)[0]
196 | min2 = points2.min(dim)[0]
197 | max2 = points2.max(dim)[0]
198 | center1 = (min1 + max1)/2
199 | center2 = (min2 + max2)/2
200 | size1 = max1 - min1
201 | size2 = max2 - min2
202 | return ((center1 - center2).abs() * 2 <= size1 + size2).all(-1)
203 |
204 |
205 | def logit(x):
206 | """Inverse of softmax."""
207 | return np.log(x / (1-x))
208 |
209 |
210 | def compute_chamfer_losses(points, normals, target_points, target_normals,
211 | compute_normals=True):
212 | """Compute area-weighted Chamfer and normals losses."""
213 | b = points.shape[0]
214 | points = points.view(b, -1, 3)
215 |
216 | # [b, n_total_samples, n_points]
217 | distances = batched_cdist_l2(points, target_points)
218 |
219 | chamferloss_a, idx_a = distances.min(2) # [b, n_total_samples]
220 | chamferloss_b, idx_b = distances.min(1)
221 |
222 | if compute_normals:
223 | normals = normals.view(b, -1, 3)
224 |
225 | # [b, n_total_samples, 1, 3]
226 | idx_a = idx_a[..., None, None].expand(-1, -1, -1, 3)
227 | nearest_target_normals = \
228 | target_normals[:, None].expand(list(distances.shape) + [3]) \
229 | .gather(index=idx_a, dim=2).squeeze(2) # [b, n_total_samples, 3]
230 |
231 | # [b, 1, n_points, 3]
232 | idx_b = idx_b[..., None, :, None].expand(-1, -1, -1, 3)
233 | nearest_normals = \
234 | normals[:, :, None].expand(list(distances.shape) + [3]) \
235 | .gather(index=idx_b, dim=1).squeeze(1) # [b, n_points, 3]
236 |
237 | normalsloss_a = th.sum((nearest_target_normals - normals)**2, dim=-1)
238 | normalsloss_b = th.sum((nearest_normals - target_normals)**2, dim=-1)
239 | else:
240 | normalsloss_a = th.zeros_like(chamferloss_a)
241 | normalsloss_b = th.zeros_like(chamferloss_b)
242 |
243 | return chamferloss_a, chamferloss_b, normalsloss_a, normalsloss_b
244 |
245 |
246 | def process_patches(params, vertex_idxs, face_idxs, edge_data, junctions,
247 | junction_order, vertex_t):
248 | """Process all junction curves to compute explicit patch control poitns."""
249 | vertices = params.clone()[:, vertex_idxs]
250 |
251 | for i in junction_order:
252 | edge = junctions[i]
253 | t = th.sigmoid(params[:, vertex_t[i]])
254 | vertex = bezier_sample(t[:, None, None], vertices[:, edge]).squeeze(1)
255 | vertices = vertices.clone()
256 | vertices[:, i] = vertex
257 |
258 | for a, b, c, d in edge_data[i]:
259 | if a not in junctions:
260 | a, b, c, d = d, c, b, a
261 |
262 | edge = junctions[a]
263 | t_a = th.sigmoid(params[:, vertex_t[a]])
264 | v0_a, _, _, v3_a = edge
265 | if d == v0_a:
266 | t_d = th.zeros_like(t_a)
267 | elif d == v3_a:
268 | t_d = th.ones_like(t_a)
269 | else:
270 | v0_d, _, _, v3_d = junctions[d]
271 | t_d = th.sigmoid(params[:, vertex_t[d]])
272 | if v0_a == v0_d and v3_a == v3_d:
273 | pass
274 | elif v0_a == v3_d and v3_a == v0_d:
275 | t_d = 1 - t_d
276 | else:
277 | edge = junctions[d]
278 | if a == v0_d:
279 | t_a = th.zeros_like(t_d)
280 | elif a == v3_d:
281 | t_a = th.ones_like(t_d)
282 |
283 | curve = subbezier(t_a, t_d, vertices[:, edge])[:, 1:-1]
284 | vertices = vertices.clone()
285 | vertices[:, [b, c]] = curve
286 |
287 | patches = vertices[:, face_idxs]
288 |
289 | return vertices, patches
290 |
291 |
292 | def tri_area(tri):
293 | """Compute the area of a triangle form its vertices."""
294 | a = tri[:, 0]
295 | b = tri[:, 1]
296 | c = tri[:, 2]
297 | ab = b - a
298 | ac = c - a
299 | return th.cross(ab, ac).abs().norm(2, dim=1) / 2
300 |
301 |
302 | def write_obj(file, patches, res=30):
303 | """Write Coons patches to an obj file."""
304 | linspace = th.linspace(0, 1, res).to(patches)
305 | s_grid, t_grid = th.meshgrid(linspace, linspace)
306 | verts = coons_sample(s_grid.flatten(),
307 | t_grid.flatten(), patches).cpu().numpy()
308 | n_verts = verts.shape[1]
309 | with open(file, 'w') as f:
310 | for p, patch in enumerate(verts):
311 | for x, y, z in patch:
312 | f.write(f'v {x} {y} {z}\n')
313 | for i in range(res-1):
314 | for j in range(res-1):
315 | f.write(
316 | f'f {i*res + j+2 + p*n_verts} {i*res + j+1 + p*n_verts} {(i+1)*res + j+1 + p*n_verts}\n')
317 | f.write(
318 | f'f {(i+1)*res + j+2 + p*n_verts} {i*res + j+2 + p*n_verts} {(i+1)*res + j+1 + p*n_verts}\n')
319 |
--------------------------------------------------------------------------------
/requirements.txt:
--------------------------------------------------------------------------------
1 | Pillow==8.1.0
2 | torch-tools==0.1.4
3 |
--------------------------------------------------------------------------------
/scripts/run.py:
--------------------------------------------------------------------------------
1 | import argparse
2 | import ast
3 | from collections import defaultdict
4 | import os
5 |
6 | import numpy as np
7 | from PIL import Image
8 | import torch as th
9 | from torchvision.transforms.functional import to_tensor
10 | import ttools
11 |
12 | from learningpatches.models import ReconstructionModel
13 | from learningpatches import utils
14 |
15 | th.manual_seed(123)
16 | th.backends.cudnn.deterministic = True
17 | th.backends.cudnn.benchmark = True
18 | np.random.seed(123)
19 |
20 | turbine_idxs = [x for x in range(76) if x not in [72, 73, 74, 75]]
21 | no_turbine_idxs = [x for x in range(76) if x not in
22 | [10, 12, 14, 17, 19, 20, 21, 24, 25, 27, 28, 29, 30, 31, 32,
23 | 33, 34, 66]]
24 |
25 |
26 | def main(args):
27 | device = "cuda" if th.cuda.is_available() and args.cuda else "cpu"
28 |
29 | edge_data = [line.strip().split(' ') for line in open(
30 | os.path.join('templates', args.category, 'edges.txt'), 'r')]
31 | edge_data = [(int(a), int(b), int(c), int(d)) for a, b, c, d in edge_data]
32 | junction_order = [int(line.strip()) for line in open(
33 | os.path.join('templates', args.category, 'junction_order.txt'), 'r')]
34 | topology = ast.literal_eval(
35 | open(os.path.join('templates', args.category,
36 | 'topology.txt'), 'r').read())
37 | adjacencies = {}
38 | for i, l in enumerate(
39 | open(os.path.join('templates', args.category, 'adjacencies.txt'),
40 | 'r')):
41 | adj = {}
42 | for x in l.strip().split(','):
43 | if x != '':
44 | j, edge = x.strip().split(' edge ')
45 | adj[int(j)] = int(edge)
46 | adjacencies[i] = adj
47 |
48 | vertex_t = {}
49 | init_params = []
50 | junctions = {}
51 | vertex_idxs = np.zeros(
52 | [len(open(os.path.join(
53 | 'templates', args.category, 'vertices.txt'), 'r').readlines()), 3],
54 | dtype=np.int64)
55 | processed_vertices = []
56 | for i, l in enumerate(
57 | open(os.path.join('templates', args.category, 'vertices.txt'),
58 | 'r')):
59 | value = l.strip().split(' ')
60 | if value[0] == 'Junction':
61 | v_type, v0, v1, v2, v3, t_init = value
62 | vertex_t[i] = len(init_params)
63 | init_params.append(utils.logit(float(t_init)))
64 | junctions[i] = (int(v0), int(v1), int(v2), int(v3))
65 | elif value[0] == 'RegularVertex':
66 | _, a, b, c = value
67 | vertex_idxs[i] = [len(init_params), len(
68 | init_params)+1, len(init_params)+2]
69 | init_params.extend([float(a), float(b), float(c)])
70 | processed_vertices.append(i)
71 |
72 | edge_data_ = defaultdict(list)
73 | processed_edges = []
74 | for i in junction_order:
75 | processed_vertices.append(i)
76 | for a, b, c, d in edge_data:
77 | if a in processed_vertices and \
78 | d in processed_vertices and \
79 | (a, b, c, d) not in processed_edges:
80 | edge_data_[i].append((a, b, c, d))
81 | processed_edges.append((a, b, c, d))
82 | edge_data = edge_data_
83 |
84 | face_idxs = np.empty([len(topology), 12])
85 | for i, patch in enumerate(topology):
86 | for j, k in enumerate(patch):
87 | face_idxs[i, j] = k
88 | face_idxs = th.from_numpy(face_idxs.astype(np.int64))
89 |
90 | init_params = th.tensor(init_params).squeeze().float()
91 |
92 | model = ReconstructionModel(len(init_params), init=init_params)
93 | model.to(device)
94 | model.eval()
95 |
96 | checkpointer = ttools.Checkpointer(f'models/{args.category}', model)
97 | extras, _ = checkpointer.load_latest()
98 | if extras is not None:
99 | print(f"Loaded checkpoint (epoch {extras['epoch']})")
100 | else:
101 | print("Unable to load checkpoint")
102 |
103 | with th.no_grad():
104 | im = to_tensor(Image.open(args.input).convert('RGB')).to(device)
105 | params = model(im[None, None])
106 | _, patches = utils.process_patches(
107 | params, vertex_idxs, face_idxs, edge_data,
108 | junctions, junction_order, vertex_t)
109 | if args.category == 'airplanes':
110 | if args.turbines:
111 | patches = patches.squeeze(0)[turbine_idxs]
112 | else:
113 | patches = patches.squeeze(0)[no_turbine_idxs]
114 | else:
115 | patches = patches.squeeze(0)
116 | utils.write_obj(args.output, patches)
117 |
118 |
119 | if __name__ == '__main__':
120 | parser = argparse.ArgumentParser()
121 | parser.add_argument("input", type=str)
122 | parser.add_argument("category", choices=[
123 | 'airplanes', 'guitars', 'bathtubs', 'knives', 'cars',
124 | 'bottles', 'guns', 'mugs'], default='airplanes')
125 | parser.add_argument("output", type=str)
126 | parser.add_argument("--cuda", dest='cuda', action='store_true')
127 | parser.add_argument("--no_cuda", dest='cuda', action='store_false')
128 | parser.add_argument("--turbines", dest='cuda', action='store_true')
129 | parser.add_argument("--no_turbines", dest='cuda', action='store_false')
130 | parser.set_defaults(cuda=True, turbines=True)
131 | args = parser.parse_args()
132 | main(args)
133 |
--------------------------------------------------------------------------------
/scripts/train.py:
--------------------------------------------------------------------------------
1 | import ast
2 | from collections import defaultdict
3 | import datetime
4 | import os
5 | import logging
6 |
7 | import numpy as np
8 | import torch as th
9 | from torch.utils.data import DataLoader
10 | from torch.utils.tensorboard import SummaryWriter
11 | import ttools
12 |
13 | from learningpatches import datasets
14 | from learningpatches.interfaces import ReconstructionInterface
15 | from learningpatches.models import ReconstructionModel
16 | from learningpatches import utils
17 |
18 |
19 | LOG = logging.getLogger(__name__)
20 |
21 | th.manual_seed(123)
22 | th.backends.cudnn.deterministic = True
23 | th.backends.cudnn.benchmark = True
24 | np.random.seed(123)
25 |
26 |
27 | def _worker_init_fn(worker_id):
28 | np.random.seed(worker_id)
29 |
30 |
31 | def main(args):
32 | data = datasets.SketchDataset(args)
33 | dataloader = DataLoader(data, batch_size=args.bs,
34 | num_workers=args.num_worker_threads,
35 | worker_init_fn=_worker_init_fn, shuffle=True,
36 | drop_last=True)
37 | LOG.info(data)
38 |
39 | val_data = datasets.SketchDataset(args, val=True)
40 | val_dataloader = DataLoader(val_data, batch_size=args.bs,
41 | num_workers=args.num_worker_threads,
42 | worker_init_fn=_worker_init_fn)
43 |
44 | edge_data = [line.strip().split(' ') for line in open(
45 | os.path.join(args.template_dir, 'edges.txt'), 'r')]
46 | edge_data = [(int(a), int(b), int(c), int(d)) for a, b, c, d in edge_data]
47 | junction_order = [int(line.strip()) for line in open(
48 | os.path.join(args.template_dir, 'junction_order.txt'), 'r')]
49 | topology = ast.literal_eval(
50 | open(os.path.join(args.template_dir, 'topology.txt'), 'r').read())
51 | adjacencies = {}
52 | for i, l in enumerate(
53 | open(os.path.join(args.template_dir, 'adjacencies.txt'), 'r')):
54 | adj = {}
55 | for x in l.strip().split(','):
56 | if x != '':
57 | j, edge = x.strip().split(' edge ')
58 | adj[int(j)] = int(edge)
59 | adjacencies[i] = adj
60 |
61 | vertex_t = {}
62 | init_params = []
63 | junctions = {}
64 | vertex_idxs = np.zeros(
65 | [len(open(os.path.join(
66 | args.template_dir, 'vertices.txt'), 'r').readlines()), 3],
67 | dtype=np.int64)
68 | processed_vertices = []
69 | for i, l in enumerate(
70 | open(os.path.join(args.template_dir, 'vertices.txt'), 'r')):
71 | value = l.strip().split(' ')
72 | if value[0] == 'Junction':
73 | v_type, v0, v1, v2, v3, t_init = value
74 | vertex_t[i] = len(init_params)
75 | init_params.append(utils.logit(float(t_init)))
76 | junctions[i] = (int(v0), int(v1), int(v2), int(v3))
77 | elif value[0] == 'RegularVertex':
78 | _, a, b, c = value
79 | vertex_idxs[i] = [len(init_params), len(
80 | init_params)+1, len(init_params)+2]
81 | init_params.extend([float(a), float(b), float(c)])
82 | processed_vertices.append(i)
83 |
84 | edge_data_ = defaultdict(list)
85 | processed_edges = []
86 | for i in junction_order:
87 | processed_vertices.append(i)
88 | for a, b, c, d in edge_data:
89 | if a in processed_vertices and \
90 | d in processed_vertices and \
91 | (a, b, c, d) not in processed_edges:
92 | edge_data_[i].append((a, b, c, d))
93 | processed_edges.append((a, b, c, d))
94 | edge_data = edge_data_
95 |
96 | face_idxs = np.empty([len(topology), 12])
97 | for i, patch in enumerate(topology):
98 | for j, k in enumerate(patch):
99 | face_idxs[i, j] = k
100 | face_idxs = th.from_numpy(face_idxs.astype(np.int64))
101 |
102 | init_params = th.tensor(init_params).squeeze()
103 | init_patches = utils.process_patches(
104 | init_params[None], vertex_idxs, face_idxs, edge_data, junctions,
105 | junction_order, vertex_t)[1][0]
106 | st = th.empty(init_patches.shape[0], 1, 2).fill_(0.5).to(init_params)
107 | template_normals = utils.coons_normals(
108 | st[..., 0], st[..., 1], init_patches)
109 |
110 | model = ReconstructionModel(len(init_params), init=init_params)
111 |
112 | if args.symmetries:
113 | xs, ys = [], []
114 | for line in open(os.path.join(args.data, 'symmetries.txt'), 'r'):
115 | x, y = line.strip().split(' ')
116 | xs.append(int(x))
117 | ys.append(int(y))
118 | symmetries = (xs, ys)
119 | else:
120 | symmetries = None
121 | interface = ReconstructionInterface(
122 | model, args, vertex_idxs, face_idxs, junctions, edge_data, vertex_t,
123 | adjacencies, junction_order, template_normals, symmetries)
124 | checkpointer = ttools.Checkpointer(
125 | args.checkpoint_dir, model=model, optimizers=interface.optimizer)
126 | extras, meta = checkpointer.load_latest()
127 |
128 | keys = ['loss', 'chamferloss', 'normalsloss', 'collisionloss',
129 | 'planarloss', 'templatenormalsloss', 'symmetryloss']
130 |
131 | writer = SummaryWriter(
132 | os.path.join(args.checkpoint_dir, 'summaries',
133 | datetime.datetime.now().strftime('train-%m%d%y-%H%M%S')),
134 | flush_secs=1)
135 | val_writer = SummaryWriter(
136 | os.path.join(args.checkpoint_dir, 'summaries',
137 | datetime.datetime.now().strftime('val-%m%d%y-%H%M%S')),
138 | flush_secs=1)
139 |
140 | trainer = ttools.Trainer(interface)
141 | trainer.add_callback(
142 | ttools.callbacks.TensorBoardLoggingCallback(keys=keys, writer=writer,
143 | val_writer=val_writer,
144 | frequency=5))
145 | trainer.add_callback(ttools.callbacks.ProgressBarCallback(keys=keys))
146 | trainer.add_callback(ttools.callbacks.CheckpointingCallback(
147 | checkpointer, max_files=1, max_epochs=2))
148 |
149 | starting_epoch = extras['epoch'] if extras is not None else None
150 | trainer.train(dataloader, num_epochs=args.num_epochs,
151 | val_dataloader=val_dataloader, starting_epoch=starting_epoch)
152 |
153 |
154 | if __name__ == '__main__':
155 | parser = ttools.BasicArgumentParser()
156 | parser.add_argument("--im_size", type=int, default=128)
157 | parser.add_argument("--template_dir", type=str)
158 | parser.add_argument("--w_normals", type=float, default=0.008)
159 | parser.add_argument("--w_collision", type=float, default=1e-5)
160 | parser.add_argument("--sigma_collision", type=float, default=1e-6)
161 | parser.add_argument("--w_planar", type=float, default=2)
162 | parser.add_argument("--w_templatenormals", type=float, default=1e-4)
163 | parser.add_argument("--w_symmetry", type=float, default=1)
164 | parser.add_argument("--n_samples", type=int, default=7000)
165 | parser.add_argument("--n_views", type=int, default=4)
166 | parser.add_argument('--seperate-turbines',
167 | dest='seperate_turbines', action='store_true')
168 | parser.add_argument('--no-seperate-turbines',
169 | dest='seperate_turbines', action='store_false')
170 | parser.add_argument('--wheels', dest='wheels', action='store_true')
171 | parser.add_argument('--no-wheels', dest='wheels', action='store_false')
172 | parser.add_argument('--p2m', dest='p2m', action='store_true')
173 | parser.add_argument('--no-p2m', dest='p2m', action='store_false')
174 | parser.add_argument('--symmetries', dest='symmetries', action='store_true')
175 | parser.add_argument('--no-symmetries',
176 | dest='symmetries', action='store_false')
177 | parser.set_defaults(seperate_turbines=False, wheels=False, p2m=False,
178 | symmetries=False, num_worker_threads=8, lr=1e-4, bs=8)
179 | args = parser.parse_args()
180 | ttools.set_logger(args.debug)
181 | main(args)
182 |
--------------------------------------------------------------------------------
/templates/airplanes/adjacencies.txt:
--------------------------------------------------------------------------------
1 | 2 edge 2, 4 edge 1, 41 edge 3, 42 edge 0, 51 edge 3, 67 edge 0,
2 | 2 edge 3, 3 edge 2, 4 edge 0, 41 edge 3, 67 edge 1,
3 | 0 edge 3, 1 edge 1, 3 edge 2, 4 edge 0, 41 edge 2, 51 edge 3,
4 | 1 edge 1, 2 edge 1, 26 edge 3, 36 edge 1, 41 edge 1, 48 edge 3, 54 edge 1, 56 edge 0, 67 edge 2,
5 | 0 edge 3, 1 edge 1, 2 edge 2, 67 edge 0,
6 | 7 edge 2, 9 edge 3, 18 edge 2, 23 edge 1, 50 edge 0, 65 edge 1,
7 | 7 edge 3, 9 edge 2, 18 edge 0, 43 edge 0, 50 edge 1,
8 | 5 edge 3, 6 edge 1, 9 edge 2, 18 edge 0, 23 edge 0, 43 edge 1,
9 | 40 edge 3, 42 edge 2, 44 edge 0, 48 edge 1, 49 edge 2, 65 edge 3,
10 | 5 edge 2, 6 edge 0, 7 edge 3, 50 edge 1,
11 | 12 edge 0, 16 edge 1, 24 edge 3, 47 edge 2, 55 edge 1, 66 edge 2, 73 edge 1
12 | 31 edge 1, 32 edge 1, 33 edge 2, 37 edge 2, 39 edge 0, 57 edge 3, 60 edge 1, 64 edge 0, 74 edge 1
13 | 10 edge 1, 16 edge 1, 20 edge 3, 24 edge 2, 28 edge 0, 38 edge 0, 55 edge 0, 72 edge 0, 73 edge 0
14 | 38 edge 3, 55 edge 2, 59 edge 0, 63 edge 1,
15 | 17 edge 2, 19 edge 3, 21 edge 0, 58 edge 2, 61 edge 1, 70 edge 1, 75 edge 1
16 | 41 edge 3, 42 edge 3, 45 edge 1, 49 edge 2, 51 edge 3, 54 edge 0, 59 edge 1, 63 edge 1,
17 | 10 edge 1, 12 edge 2, 36 edge 0, 47 edge 1, 54 edge 0, 55 edge 2, 63 edge 3, 66 edge 1, 73 edge 1
18 | 14 edge 0, 19 edge 3, 25 edge 2, 33 edge 2, 37 edge 2, 58 edge 1, 70 edge 1, 74 edge 1, 75 edge 1
19 | 5 edge 1, 6 edge 1, 7 edge 1, 22 edge 2, 23 edge 1, 43 edge 0, 68 edge 3,
20 | 14 edge 0, 17 edge 1, 21 edge 3, 25 edge 1, 34 edge 2,
21 | 12 edge 1, 24 edge 2, 28 edge 0, 30 edge 3, 38 edge 1, 55 edge 1, 72 edge 0, 73 edge 0
22 | 14 edge 0, 19 edge 1, 32 edge 3, 34 edge 2, 60 edge 3, 61 edge 3, 70 edge 0, 74 edge 3, 75 edge 3
23 | 18 edge 1, 23 edge 1, 49 edge 2, 57 edge 0, 62 edge 0, 64 edge 3, 65 edge 2, 68 edge 0,
24 | 5 edge 0, 7 edge 0, 18 edge 3, 22 edge 2, 49 edge 2, 50 edge 1, 65 edge 1,
25 | 10 edge 0, 12 edge 3, 20 edge 3, 30 edge 2, 66 edge 1,
26 | 17 edge 0, 19 edge 3, 33 edge 1, 34 edge 2, 37 edge 1, 58 edge 1, 74 edge 0, 75 edge 0
27 | 3 edge 3, 40 edge 1, 43 edge 1, 44 edge 0, 48 edge 3, 50 edge 1, 56 edge 2, 67 edge 3,
28 | 28 edge 1, 29 edge 3, 30 edge 2, 38 edge 1, 52 edge 0, 53 edge 0, 72 edge 0
29 | 12 edge 2, 20 edge 2, 27 edge 0, 30 edge 3, 38 edge 1, 53 edge 1, 55 edge 2, 72 edge 1, 73 edge 1
30 | 27 edge 1, 30 edge 2, 47 edge 0, 52 edge 0, 53 edge 1, 66 edge 3, 72 edge 0, 73 edge 0
31 | 20 edge 3, 24 edge 0, 27 edge 2, 28 edge 3, 29 edge 1, 66 edge 1,
32 | 11 edge 0, 32 edge 1, 33 edge 3, 34 edge 2, 37 edge 0, 60 edge 1, 74 edge 0
33 | 11 edge 1, 21 edge 2, 31 edge 0, 34 edge 3, 60 edge 1, 61 edge 2, 74 edge 1, 75 edge 1
34 | 11 edge 1, 17 edge 0, 25 edge 3, 31 edge 1, 34 edge 2, 37 edge 0, 58 edge 0, 74 edge 0, 75 edge 0
35 | 19 edge 0, 21 edge 3, 25 edge 1, 31 edge 2, 32 edge 3, 33 edge 1,
36 | 37 edge 1, 57 edge 0, 58 edge 2, 62 edge 3,
37 | 3 edge 2, 16 edge 1, 47 edge 1, 52 edge 1, 54 edge 1, 56 edge 3, 63 edge 1, 69 edge 0,
38 | 11 edge 1, 17 edge 2, 25 edge 2, 31 edge 1, 33 edge 1, 35 edge 3, 57 edge 0, 58 edge 2, 74 edge 1, 75 edge 1
39 | 12 edge 3, 13 edge 1, 20 edge 3, 27 edge 3, 28 edge 3, 53 edge 3, 55 edge 2, 59 edge 0, 72 edge 3, 73 edge 3
40 | 11 edge 3, 46 edge 3, 49 edge 0, 56 edge 2, 57 edge 3, 60 edge 3, 61 edge 3, 64 edge 3, 71 edge 1,
41 | 8 edge 2, 26 edge 0, 43 edge 0, 44 edge 1, 49 edge 3, 50 edge 3, 65 edge 3,
42 | 0 edge 3, 1 edge 0, 2 edge 3, 3 edge 0, 15 edge 2, 51 edge 3, 54 edge 1,
43 | 0 edge 1, 8 edge 3, 15 edge 2, 48 edge 3, 49 edge 2, 51 edge 1, 67 edge 0,
44 | 6 edge 3, 7 edge 3, 18 edge 3, 26 edge 1, 40 edge 2, 46 edge 3, 50 edge 2, 56 edge 0, 68 edge 3,
45 | 8 edge 2, 26 edge 0, 40 edge 3, 48 edge 1,
46 | 15 edge 0, 49 edge 3, 53 edge 2, 54 edge 1, 59 edge 1, 63 edge 1, 69 edge 2,
47 | 39 edge 0, 43 edge 2, 56 edge 1, 60 edge 0, 61 edge 3, 62 edge 3, 68 edge 3, 70 edge 3,
48 | 10 edge 1, 16 edge 1, 29 edge 0, 36 edge 2, 52 edge 3, 66 edge 0, 69 edge 3, 72 edge 0, 73 edge 0
49 | 3 edge 1, 8 edge 2, 26 edge 0, 42 edge 1, 44 edge 3, 49 edge 2, 67 edge 1,
50 | 8 edge 0, 15 edge 1, 22 edge 3, 23 edge 0, 39 edge 3, 40 edge 0, 42 edge 0, 45 edge 1, 48 edge 0, 51 edge 1, 64 edge 3, 65 edge 0, 69 edge 1, 71 edge 2,
51 | 5 edge 3, 6 edge 1, 9 edge 0, 23 edge 3, 26 edge 2, 40 edge 2, 43 edge 1, 65 edge 3,
52 | 0 edge 1, 2 edge 2, 15 edge 3, 41 edge 2, 42 edge 0, 49 edge 0, 67 edge 1,
53 | 27 edge 1, 29 edge 1, 36 edge 3, 47 edge 2, 53 edge 0, 66 edge 2, 69 edge 3, 72 edge 1, 73 edge 1
54 | 27 edge 3, 28 edge 3, 29 edge 3, 38 edge 2, 45 edge 1, 52 edge 3, 59 edge 1, 69 edge 0, 72 edge 3
55 | 3 edge 1, 15 edge 0, 16 edge 3, 36 edge 2, 41 edge 0, 45 edge 0, 59 edge 0, 63 edge 3,
56 | 10 edge 1, 12 edge 1, 13 edge 3, 16 edge 1, 20 edge 2, 28 edge 2, 38 edge 2, 63 edge 0, 72 edge 1, 73 edge 1
57 | 3 edge 0, 26 edge 0, 36 edge 3, 39 edge 1, 43 edge 0, 46 edge 1, 69 edge 3, 71 edge 2,
58 | 11 edge 3, 22 edge 2, 35 edge 0, 37 edge 3, 39 edge 3, 62 edge 1, 64 edge 2, 68 edge 2,
59 | 14 edge 3, 17 edge 3, 25 edge 3, 33 edge 3, 35 edge 1, 37 edge 2, 62 edge 0, 70 edge 3, 74 edge 3, 75 edge 3
60 | 13 edge 0, 15 edge 3, 38 edge 1, 45 edge 2, 53 edge 1, 54 edge 3, 63 edge 3, 69 edge 2,
61 | 11 edge 0, 21 edge 3, 31 edge 0, 32 edge 3, 39 edge 1, 46 edge 2, 61 edge 2, 74 edge 3, 75 edge 3
62 | 14 edge 2, 21 edge 2, 32 edge 3, 39 edge 0, 46 edge 0, 60 edge 3, 70 edge 1, 74 edge 2, 75 edge 2
63 | 22 edge 3, 35 edge 0, 46 edge 2, 57 edge 3, 58 edge 1, 64 edge 3, 68 edge 2, 70 edge 1,
64 | 13 edge 0, 15 edge 2, 16 edge 3, 36 edge 3, 45 edge 2, 54 edge 2, 55 edge 3, 59 edge 1,
65 | 11 edge 3, 22 edge 0, 39 edge 2, 49 edge 1, 57 edge 3, 62 edge 0, 68 edge 0,
66 | 5 edge 0, 8 edge 2, 22 edge 3, 23 edge 3, 40 edge 1, 49 edge 2, 50 edge 0,
67 | 10 edge 0, 16 edge 1, 24 edge 3, 29 edge 1, 30 edge 2, 47 edge 1, 52 edge 1, 72 edge 1, 73 edge 1
68 | 0 edge 1, 1 edge 3, 3 edge 3, 4 edge 0, 26 edge 3, 42 edge 1, 48 edge 2, 51 edge 1,
69 | 18 edge 0, 22 edge 0, 43 edge 3, 46 edge 2, 57 edge 1, 62 edge 1, 64 edge 1, 70 edge 2,
70 | 36 edge 1, 45 edge 1, 47 edge 1, 49 edge 0, 52 edge 1, 53 edge 1, 56 edge 2, 59 edge 1, 71 edge 3,
71 | 14 edge 3, 17 edge 3, 21 edge 3, 46 edge 0, 58 edge 2, 61 edge 3, 62 edge 1, 68 edge 1, 75 edge 3
72 | 39 edge 2, 49 edge 3, 56 edge 1, 69 edge 0,
73 | 73 edge 3, 53 edge 1, 55 edge 3, 47 edge 3, 52 edge 0, 38 edge 2, 27 edge 1, 28 edge 2, 20 edge 2, 12 edge 2, 66 edge 0, 29 edge 0
74 | 72 edge 0, 16 edge 2, 38 edge 0, 52 edge 0, 47 edge 3, 55 edge 1, 10 edge 2, 12 edge 1, 20 edge 1, 28 edge 1, 66 edge 3, 29 edge 3
75 | 75 edge 2, 61 edge 2, 58 edge 2, 11 edge 0, 37 edge 3, 60 edge 1, 31 edge 0, 33 edge 3, 25 edge 3, 17 edge 3, 32 edge 1, 21 edge 1
76 | 74 edge 3, 70 edge 1, 58 edge 2, 37 edge 2, 60 edge 3, 61 edge 0, 21 edge 0, 32 edge 0, 14 edge 1, 17 edge 2, 25 edge 2, 33 edge 2
77 |
--------------------------------------------------------------------------------
/templates/airplanes/edges.txt:
--------------------------------------------------------------------------------
1 | 0 1 2 3
2 | 15 16 17 18
3 | 18 19 20 21
4 | 21 26 27 9
5 | 28 29 30 31
6 | 18 34 35 36
7 | 36 37 38 28
8 | 41 42 43 44
9 | 53 54 55 56
10 | 56 57 58 59
11 | 47 65 66 53
12 | 75 76 77 78
13 | 86 87 88 89
14 | 95 96 97 98
15 | 101 102 103 104
16 | 104 105 106 95
17 | 107 108 109 86
18 | 83 110 111 112
19 | 130 131 132 133
20 | 139 140 141 142
21 | 145 146 147 148
22 | 151 152 153 154
23 | 86 157 158 159
24 | 159 160 161 151
25 | 133 162 163 164
26 | 167 168 169 136
27 | 170 171 172 53
28 | 175 176 177 178
29 | 178 179 180 170
30 | 112 192 193 194
31 | 194 195 196 189
32 | 186 197 198 199
33 | 202 203 204 178
34 | 207 208 209 210
35 | 207 215 216 175
36 | 175 217 218 47
37 | 228 229 230 183
38 | 183 231 232 167
39 | 239 240 241 28
40 | 244 245 246 247
41 | 247 256 257 107
42 | 189 258 259 250
43 | 253 263 264 265
44 | 265 266 267 260
45 | 101 272 273 274
46 | 285 286 287 199
47 | 199 288 289 277
48 | 164 290 291 101
49 | 280 292 293 228
50 | 310 311 312 313
51 | 316 317 318 31
52 | 31 319 320 310
53 | 301 321 322 104
54 | 327 328 329 115
55 | 334 335 336 337
56 | 340 341 342 343
57 | 346 347 348 236
58 | 21 353 354 355
59 | 355 356 357 139
60 | 139 358 359 360
61 | 363 364 365 0
62 | 148 368 369 75
63 | 75 370 371 363
64 | 372 373 374 239
65 | 239 375 376 346
66 | 346 377 378 56
67 | 385 386 387 388
68 | 388 389 390 145
69 | 391 392 393 343
70 | 343 394 395 372
71 | 372 396 397 398
72 | 260 401 402 89
73 | 89 403 404 154
74 | 154 405 406 313
75 | 233 409 410 36
76 | 346 424 425 426
77 | 9 429 430 360
78 | 360 431 432 148
79 | 433 434 435 244
80 | 313 436 437 433
81 | 433 438 439 385
82 | 385 440 441 327
83 | 327 442 443 247
84 | 355 448 449 316
85 | 316 450 451 151
86 | 121 454 455 159
87 | 473 474 475 307
88 | 274 482 483 98
89 | 98 484 485 391
90 | 391 488 489 490
91 | 490 491 492 130
92 | 130 493 494 285
93 | 210 502 503 334
94 | 334 504 505 95
95 | 44 506 507 426
96 | 426 508 509 78
97 | 78 510 511 207
98 | 265 514 515 221
99 | 363 518 519 36
100 | 497 524 525 398
101 | 398 526 527 170
102 | 417 528 529 388
103 | 310 532 533 464
104 | 490 536 537 497
105 | 497 538 539 473
106 | 473 540 541 133
107 |
--------------------------------------------------------------------------------
/templates/airplanes/junction_order.txt:
--------------------------------------------------------------------------------
1 | 388
2 | 310
3 | 385
4 | 145
5 | 334
6 | 343
7 | 210
8 | 95
9 | 327
10 | 433
11 | 247
12 | 104
13 | 101
14 | 228
15 | 189
16 | 244
17 | 239
18 | 28
19 | 36
20 | 75
21 | 363
22 | 0
23 | 346
24 | 78
25 | 426
26 | 44
27 | 56
28 | 391
29 | 398
30 | 170
31 | 497
32 | 473
33 | 490
34 | 133
35 | 178
36 | 130
37 | 199
38 | 285
39 | 112
40 | 167
41 | 53
42 | 175
43 | 47
44 | 98
45 | 274
46 | 18
47 | 313
48 | 316
49 | 151
50 | 159
51 | 86
52 | 355
53 | 139
54 | 21
55 | 360
56 | 9
57 | 154
58 | 89
59 | 265
60 | 260
61 |
--------------------------------------------------------------------------------
/templates/airplanes/topology.txt:
--------------------------------------------------------------------------------
1 | [[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, ],
2 | [12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, ],
3 | [6, 24, 25, 12, 23, 22, 21, 26, 27, 9, 8, 7, ],
4 | [28, 29, 30, 31, 32, 33, 18, 34, 35, 36, 37, 38, ],
5 | [3, 39, 40, 15, 14, 13, 12, 25, 24, 6, 5, 4, ],
6 | [41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, ],
7 | [53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, ],
8 | [47, 65, 66, 53, 64, 63, 62, 67, 68, 50, 49, 48, ],
9 | [69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, ],
10 | [62, 61, 60, 59, 81, 82, 41, 52, 51, 50, 68, 67, ],
11 | [83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, ],
12 | [95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, ],
13 | [107, 108, 109, 86, 85, 84, 83, 110, 111, 112, 113, 114, ],
14 | [115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, ],
15 | [127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, ],
16 | [139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, ],
17 | [151, 152, 153, 154, 155, 156, 86, 157, 158, 159, 160, 161, ],
18 | [136, 135, 134, 133, 162, 163, 164, 165, 166, 167, 168, 169, ],
19 | [170, 171, 172, 53, 173, 174, 175, 176, 177, 178, 179, 180, ],
20 | [127, 138, 137, 136, 181, 182, 183, 184, 185, 186, 187, 188, ],
21 | [189, 190, 191, 107, 114, 113, 112, 192, 193, 194, 195, 196, ],
22 | [130, 129, 128, 127, 188, 187, 186, 197, 198, 199, 200, 201, ],
23 | [202, 203, 204, 178, 205, 206, 207, 208, 209, 210, 211, 212, ],
24 | [47, 46, 45, 44, 213, 214, 207, 215, 216, 175, 217, 218, ],
25 | [83, 94, 93, 92, 219, 220, 221, 222, 223, 194, 224, 225, ],
26 | [167, 166, 165, 164, 226, 227, 228, 229, 230, 183, 231, 232, ],
27 | [233, 234, 235, 236, 237, 238, 239, 240, 241, 28, 242, 243, ],
28 | [244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, ],
29 | [250, 249, 248, 247, 256, 257, 107, 191, 190, 189, 258, 259, ],
30 | [260, 261, 262, 244, 255, 254, 253, 263, 264, 265, 266, 267, ],
31 | [194, 223, 222, 221, 268, 269, 253, 252, 251, 250, 270, 271, ],
32 | [101, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, ],
33 | [277, 276, 275, 274, 283, 284, 285, 286, 287, 199, 288, 289, ],
34 | [164, 290, 291, 101, 282, 281, 280, 292, 293, 228, 227, 226, ],
35 | [186, 185, 184, 183, 294, 295, 280, 279, 278, 277, 296, 297, ],
36 | [298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, ],
37 | [310, 311, 312, 313, 314, 315, 316, 317, 318, 31, 319, 320, ],
38 | [301, 321, 322, 104, 323, 324, 164, 325, 326, 304, 303, 302, ],
39 | [327, 328, 329, 115, 126, 125, 124, 330, 331, 107, 332, 333, ],
40 | [334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, ],
41 | [346, 347, 348, 236, 349, 350, 69, 80, 79, 78, 351, 352, ],
42 | [21, 353, 354, 355, 356, 357, 139, 358, 359, 360, 361, 362, ],
43 | [363, 364, 365, 0, 366, 367, 148, 368, 369, 75, 370, 371, ],
44 | [372, 373, 374, 239, 375, 376, 346, 377, 378, 56, 379, 380, ],
45 | [236, 235, 234, 233, 381, 382, 72, 71, 70, 69, 350, 349, ],
46 | [145, 144, 143, 142, 383, 384, 385, 386, 387, 388, 389, 390, ],
47 | [391, 392, 393, 343, 394, 395, 372, 396, 397, 398, 399, 400, ],
48 | [260, 401, 402, 89, 403, 404, 154, 405, 406, 313, 407, 408, ],
49 | [233, 409, 410, 36, 411, 412, 75, 74, 73, 72, 382, 381, ],
50 | [207, 413, 414, 148, 415, 416, 417, 418, 419, 337, 420, 421, ],
51 | [41, 82, 81, 59, 422, 423, 346, 424, 425, 426, 427, 428, ],
52 | [148, 367, 366, 0, 11, 10, 9, 429, 430, 360, 431, 432, ],
53 | [433, 434, 435, 244, 262, 261, 260, 408, 407, 313, 436, 437, ],
54 | [433, 438, 439, 385, 440, 441, 327, 442, 443, 247, 444, 445, ],
55 | [142, 446, 447, 355, 448, 449, 316, 450, 451, 151, 452, 453, ],
56 | [121, 454, 455, 159, 456, 457, 107, 331, 330, 124, 123, 122, ],
57 | [31, 458, 459, 372, 460, 461, 340, 462, 463, 464, 465, 466, ],
58 | [301, 300, 299, 298, 467, 468, 202, 469, 470, 95, 471, 472, ],
59 | [473, 474, 475, 307, 306, 305, 304, 326, 325, 164, 476, 477, ],
60 | [118, 117, 116, 115, 478, 479, 385, 384, 383, 142, 480, 481, ],
61 | [274, 482, 483, 98, 484, 485, 391, 486, 487, 285, 284, 283, ],
62 | [391, 488, 489, 490, 491, 492, 130, 493, 494, 285, 487, 486, ],
63 | [298, 309, 308, 307, 495, 496, 497, 498, 499, 202, 468, 467, ],
64 | [121, 120, 119, 118, 481, 480, 142, 453, 452, 151, 500, 501, ],
65 | [202, 212, 211, 210, 502, 503, 334, 504, 505, 95, 470, 469, ],
66 | [44, 506, 507, 426, 508, 509, 78, 510, 511, 207, 214, 213, ],
67 | [92, 91, 90, 89, 512, 513, 265, 514, 515, 221, 220, 219, ],
68 | [15, 40, 39, 3, 516, 517, 363, 518, 519, 36, 520, 521, ],
69 | [170, 522, 523, 202, 499, 498, 497, 524, 525, 398, 526, 527, ],
70 | [417, 528, 529, 388, 530, 531, 310, 532, 533, 464, 534, 535, ],
71 | [490, 536, 537, 497, 538, 539, 473, 540, 541, 133, 542, 543, ],
72 | [417, 535, 534, 464, 463, 462, 340, 339, 338, 337, 419, 418, ],
73 | [260, 261, 262, 244, 245, 246, 247, 256, 257, 107, 544, 545],
74 | [260, 545, 544, 107, 108, 109, 86, 87, 88, 89, 402, 401],
75 | [101, 272, 273, 274, 283, 284, 285, 546, 547, 164, 290, 291],
76 | [285, 494, 493, 130, 131, 132, 133, 162, 163, 164, 547, 546] ]
77 |
--------------------------------------------------------------------------------
/templates/airplanes/vertices.txt:
--------------------------------------------------------------------------------
1 | Junction 3 516 517 363 0.714286
2 | DependentVertex
3 | DependentVertex
4 | RegularVertex 0.11 -0.005 0.26
5 | RegularVertex 0.11 -0.005 0.26
6 | RegularVertex 0.11 -0.01 0.26
7 | RegularVertex 0.11 -0.015 0.26
8 | RegularVertex 0.085 -0.015 0.26
9 | RegularVertex 0.06 -0.015 0.26
10 | Junction 360 361 362 21 0.344828
11 | RegularVertex 0.035 -0.01 0.26
12 | RegularVertex 0.035 -0.005 0.26
13 | RegularVertex 0.11 -0.015 0.355
14 | RegularVertex 0.11 -0.01 0.355
15 | RegularVertex 0.11 -0.005 0.355
16 | RegularVertex 0.11 -0.005 0.355
17 | DependentVertex
18 | DependentVertex
19 | Junction 36 520 521 15 0.285714
20 | DependentVertex
21 | DependentVertex
22 | Junction 31 32 33 18 0.846154
23 | RegularVertex 0.06 -0.015 0.355
24 | RegularVertex 0.085 -0.015 0.355
25 | RegularVertex 0.11 -0.015 0.29
26 | RegularVertex 0.11 -0.015 0.32
27 | DependentVertex
28 | DependentVertex
29 | Junction 31 458 459 372 0.428571
30 | DependentVertex
31 | DependentVertex
32 | RegularVertex 0.035 -0.07 0.355
33 | RegularVertex 0.035 -0.045 0.355
34 | RegularVertex 0.035 -0.025 0.355
35 | DependentVertex
36 | DependentVertex
37 | Junction 28 242 243 233 0.40625
38 | DependentVertex
39 | DependentVertex
40 | RegularVertex 0.11 -0.005 0.29
41 | RegularVertex 0.11 -0.005 0.32
42 | RegularVertex -0.11 -0.005 0.26
43 | DependentVertex
44 | DependentVertex
45 | Junction 426 427 428 41 0.285714
46 | RegularVertex -0.035 -0.005 0.26
47 | RegularVertex -0.035 -0.01 0.26
48 | Junction 53 173 174 175 0.655172
49 | RegularVertex -0.06 -0.015 0.26
50 | RegularVertex -0.085 -0.015 0.26
51 | RegularVertex -0.11 -0.015 0.26
52 | RegularVertex -0.11 -0.01 0.26
53 | RegularVertex -0.11 -0.005 0.26
54 | Junction 56 379 380 372 0.153846
55 | DependentVertex
56 | DependentVertex
57 | Junction 59 422 423 346 0.714286
58 | DependentVertex
59 | DependentVertex
60 | RegularVertex -0.11 -0.005 0.355
61 | RegularVertex -0.11 -0.005 0.355
62 | RegularVertex -0.11 -0.01 0.355
63 | RegularVertex -0.11 -0.015 0.355
64 | RegularVertex -0.085 -0.015 0.355
65 | RegularVertex -0.06 -0.015 0.355
66 | DependentVertex
67 | DependentVertex
68 | RegularVertex -0.11 -0.015 0.32
69 | RegularVertex -0.11 -0.015 0.29
70 | RegularVertex -0.005 0.09 0.21
71 | RegularVertex 0.0 0.09 0.21
72 | RegularVertex 0.0 0.09 0.21
73 | RegularVertex 0.005 0.09 0.21
74 | RegularVertex 0.005 0.055 0.21
75 | RegularVertex 0.005 0.025 0.21
76 | Junction 207 413 414 148 0.571429
77 | DependentVertex
78 | DependentVertex
79 | Junction 207 413 414 148 0.428571
80 | RegularVertex -0.005 0.025 0.21
81 | RegularVertex -0.005 0.055 0.21
82 | RegularVertex -0.11 -0.005 0.32
83 | RegularVertex -0.11 -0.005 0.29
84 | RegularVertex 0.125 -0.085 -0.035
85 | RegularVertex 0.125 -0.075 -0.035
86 | RegularVertex 0.125 -0.065 -0.035
87 | Junction 159 456 457 107 0.675676
88 | DependentVertex
89 | DependentVertex
90 | Junction 154 155 156 86 0.611111
91 | RegularVertex 0.09 -0.065 -0.035
92 | RegularVertex 0.09 -0.075 -0.035
93 | RegularVertex 0.09 -0.085 -0.035
94 | RegularVertex 0.1 -0.085 -0.035
95 | RegularVertex 0.11 -0.085 -0.035
96 | Junction 343 344 345 334 0.692308
97 | DependentVertex
98 | DependentVertex
99 | Junction 343 344 345 334 0.307692
100 | RegularVertex -0.065 -0.05 -0.095
101 | RegularVertex -0.095 -0.05 -0.095
102 | Junction 104 323 324 164 0.714286
103 | DependentVertex
104 | DependentVertex
105 | Junction 95 471 472 301 0.310345
106 | DependentVertex
107 | DependentVertex
108 | RegularVertex 0.125 -0.06 -0.095
109 | DependentVertex
110 | DependentVertex
111 | DependentVertex
112 | DependentVertex
113 | Junction 194 224 225 83 0.25
114 | RegularVertex 0.125 -0.075 -0.095
115 | RegularVertex 0.125 -0.065 -0.095
116 | RegularVertex 0.325 -0.025 -0.095
117 | RegularVertex 0.325 -0.025 -0.03
118 | RegularVertex 0.325 -0.025 0.025
119 | RegularVertex 0.325 -0.025 0.09
120 | RegularVertex 0.325 -0.035 0.09
121 | RegularVertex 0.325 -0.045 0.09
122 | RegularVertex 0.325 -0.06 0.09
123 | RegularVertex 0.325 -0.06 0.025
124 | RegularVertex 0.325 -0.06 -0.03
125 | RegularVertex 0.325 -0.06 -0.095
126 | RegularVertex 0.325 -0.045 -0.095
127 | RegularVertex 0.325 -0.035 -0.095
128 | RegularVertex -0.09 -0.085 -0.035
129 | RegularVertex -0.09 -0.075 -0.035
130 | RegularVertex -0.09 -0.065 -0.035
131 | Junction 133 542 543 490 0.388889
132 | DependentVertex
133 | DependentVertex
134 | Junction 164 476 477 473 0.324324
135 | RegularVertex -0.125 -0.065 -0.035
136 | RegularVertex -0.125 -0.075 -0.035
137 | RegularVertex -0.125 -0.085 -0.035
138 | RegularVertex -0.11 -0.085 -0.035
139 | RegularVertex -0.1 -0.085 -0.035
140 | Junction 142 446 447 355 0.45283
141 | DependentVertex
142 | DependentVertex
143 | RegularVertex 0.035 -0.025 0.09
144 | RegularVertex 0.035 -0.015 0.09
145 | RegularVertex 0.035 -0.01 0.09
146 | Junction 148 415 416 417 0.212389
147 | DependentVertex
148 | DependentVertex
149 | RegularVertex 0.035 -0.005 0.21
150 | RegularVertex 0.035 -0.01 0.21
151 | RegularVertex 0.035 -0.015 0.21
152 | Junction 313 314 315 316 0.411111
153 | DependentVertex
154 | DependentVertex
155 | Junction 313 314 315 316 0.133333
156 | RegularVertex 0.065 -0.06 -0.035
157 | RegularVertex 0.095 -0.06 -0.035
158 | DependentVertex
159 | DependentVertex
160 | Junction 151 500 501 121 0.310345
161 | DependentVertex
162 | DependentVertex
163 | DependentVertex
164 | DependentVertex
165 | RegularVertex -0.125 -0.06 -0.095
166 | RegularVertex -0.125 -0.065 -0.095
167 | RegularVertex -0.125 -0.075 -0.095
168 | Junction 136 181 182 183 0.75
169 | DependentVertex
170 | DependentVertex
171 | Junction 56 379 380 372 0.307692
172 | DependentVertex
173 | DependentVertex
174 | RegularVertex -0.035 -0.015 0.305
175 | RegularVertex -0.035 -0.015 0.255
176 | Junction 178 205 206 207 0.5
177 | DependentVertex
178 | DependentVertex
179 | Junction 170 522 523 202 0.54717
180 | DependentVertex
181 | DependentVertex
182 | RegularVertex -0.125 -0.085 -0.06
183 | RegularVertex -0.125 -0.085 -0.085
184 | RegularVertex -0.125 -0.085 -0.115
185 | RegularVertex -0.11 -0.085 -0.115
186 | RegularVertex -0.1 -0.085 -0.115
187 | RegularVertex -0.09 -0.085 -0.115
188 | RegularVertex -0.09 -0.085 -0.085
189 | RegularVertex -0.09 -0.085 -0.06
190 | Junction 250 270 271 194 0.285714
191 | RegularVertex 0.125 -0.06 -0.105
192 | RegularVertex 0.125 -0.06 -0.1
193 | DependentVertex
194 | DependentVertex
195 | RegularVertex 0.125 -0.085 -0.115
196 | DependentVertex
197 | DependentVertex
198 | DependentVertex
199 | DependentVertex
200 | Junction 277 296 297 186 0.285714
201 | RegularVertex -0.09 -0.06 -0.085
202 | RegularVertex -0.09 -0.06 -0.06
203 | RegularVertex -0.035 -0.025 0.09
204 | DependentVertex
205 | DependentVertex
206 | RegularVertex -0.035 -0.015 0.21
207 | RegularVertex -0.035 -0.01 0.21
208 | RegularVertex -0.035 -0.005 0.21
209 | DependentVertex
210 | DependentVertex
211 | Junction 337 420 421 207 0.787611
212 | RegularVertex -0.035 -0.01 0.09
213 | RegularVertex -0.035 -0.015 0.09
214 | RegularVertex -0.035 -0.005 0.24
215 | RegularVertex -0.035 -0.005 0.225
216 | DependentVertex
217 | DependentVertex
218 | DependentVertex
219 | DependentVertex
220 | RegularVertex 0.09 -0.085 -0.06
221 | RegularVertex 0.09 -0.085 -0.085
222 | RegularVertex 0.09 -0.085 -0.115
223 | RegularVertex 0.1 -0.085 -0.115
224 | RegularVertex 0.11 -0.085 -0.115
225 | RegularVertex 0.125 -0.085 -0.085
226 | RegularVertex 0.125 -0.085 -0.06
227 | RegularVertex -0.125 -0.06 -0.1
228 | RegularVertex -0.125 -0.06 -0.105
229 | Junction 183 294 295 280 0.714286
230 | DependentVertex
231 | DependentVertex
232 | DependentVertex
233 | DependentVertex
234 | RegularVertex 0.005 0.09 0.355
235 | RegularVertex 0.0 0.09 0.355
236 | RegularVertex 0.0 0.09 0.355
237 | RegularVertex -0.005 0.09 0.355
238 | RegularVertex -0.005 0.035 0.355
239 | RegularVertex -0.005 -0.015 0.355
240 | Junction 31 458 459 372 0.571429
241 | DependentVertex
242 | DependentVertex
243 | RegularVertex 0.005 -0.015 0.355
244 | RegularVertex 0.005 0.035 0.355
245 | Junction 247 444 445 433 0.388889
246 | DependentVertex
247 | DependentVertex
248 | Junction 107 332 333 327 0.285714
249 | RegularVertex 0.125 -0.05 -0.1
250 | RegularVertex 0.125 -0.05 -0.105
251 | RegularVertex 0.125 -0.05 -0.115
252 | RegularVertex 0.11 -0.05 -0.115
253 | RegularVertex 0.1 -0.05 -0.115
254 | RegularVertex 0.09 -0.05 -0.115
255 | RegularVertex 0.09 -0.05 -0.105
256 | RegularVertex 0.09 -0.05 -0.1
257 | DependentVertex
258 | DependentVertex
259 | DependentVertex
260 | DependentVertex
261 | Junction 89 512 513 265 0.75
262 | RegularVertex 0.09 -0.055 -0.095
263 | RegularVertex 0.09 -0.05 -0.095
264 | DependentVertex
265 | DependentVertex
266 | Junction 221 268 269 253 0.714286
267 | DependentVertex
268 | DependentVertex
269 | RegularVertex 0.09 -0.07 -0.115
270 | RegularVertex 0.09 -0.06 -0.115
271 | RegularVertex 0.125 -0.06 -0.115
272 | RegularVertex 0.125 -0.07 -0.115
273 | DependentVertex
274 | DependentVertex
275 | Junction 98 99 100 101 0.611111
276 | RegularVertex -0.09 -0.05 -0.1
277 | RegularVertex -0.09 -0.05 -0.105
278 | RegularVertex -0.09 -0.05 -0.115
279 | RegularVertex -0.1 -0.05 -0.115
280 | RegularVertex -0.11 -0.05 -0.115
281 | RegularVertex -0.125 -0.05 -0.115
282 | RegularVertex -0.125 -0.05 -0.105
283 | RegularVertex -0.125 -0.05 -0.1
284 | RegularVertex -0.09 -0.05 -0.095
285 | RegularVertex -0.09 -0.055 -0.095
286 | Junction 199 200 201 130 0.25
287 | DependentVertex
288 | DependentVertex
289 | DependentVertex
290 | DependentVertex
291 | DependentVertex
292 | DependentVertex
293 | DependentVertex
294 | DependentVertex
295 | RegularVertex -0.125 -0.07 -0.115
296 | RegularVertex -0.125 -0.06 -0.115
297 | RegularVertex -0.09 -0.06 -0.115
298 | RegularVertex -0.09 -0.07 -0.115
299 | RegularVertex -0.325 -0.025 0.09
300 | RegularVertex -0.325 -0.025 0.025
301 | RegularVertex -0.325 -0.025 -0.03
302 | RegularVertex -0.325 -0.025 -0.095
303 | RegularVertex -0.325 -0.035 -0.095
304 | RegularVertex -0.325 -0.045 -0.095
305 | RegularVertex -0.325 -0.06 -0.095
306 | RegularVertex -0.325 -0.06 -0.03
307 | RegularVertex -0.325 -0.06 0.025
308 | RegularVertex -0.325 -0.06 0.09
309 | RegularVertex -0.325 -0.045 0.09
310 | RegularVertex -0.325 -0.035 0.09
311 | Junction 464 465 466 31 0.366197
312 | DependentVertex
313 | DependentVertex
314 | Junction 388 530 531 310 0.846154
315 | RegularVertex 0.035 -0.06 0.055
316 | RegularVertex 0.035 -0.06 0.205
317 | Junction 31 32 33 18 0.153846
318 | DependentVertex
319 | DependentVertex
320 | DependentVertex
321 | DependentVertex
322 | DependentVertex
323 | DependentVertex
324 | RegularVertex -0.125 -0.035 -0.095
325 | RegularVertex -0.125 -0.045 -0.095
326 | RegularVertex -0.19 -0.06 -0.095
327 | RegularVertex -0.255 -0.06 -0.095
328 | Junction 115 478 479 385 0.689655
329 | DependentVertex
330 | DependentVertex
331 | RegularVertex 0.255 -0.06 -0.095
332 | RegularVertex 0.19 -0.06 -0.095
333 | RegularVertex 0.125 -0.045 -0.095
334 | RegularVertex 0.125 -0.035 -0.095
335 | Junction 337 420 421 207 0.460177
336 | DependentVertex
337 | DependentVertex
338 | RegularVertex -0.035 -0.005 -0.355
339 | RegularVertex -0.035 -0.025 -0.355
340 | RegularVertex -0.035 -0.045 -0.355
341 | RegularVertex -0.035 -0.07 -0.355
342 | DependentVertex
343 | DependentVertex
344 | Junction 372 460 461 340 0.633803
345 | RegularVertex -0.035 -0.045 -0.095
346 | RegularVertex -0.035 -0.025 -0.095
347 | Junction 236 237 238 239 0.59375
348 | DependentVertex
349 | DependentVertex
350 | RegularVertex -0.005 0.09 0.305
351 | RegularVertex -0.005 0.09 0.255
352 | RegularVertex -0.005 -0.005 0.255
353 | RegularVertex -0.005 -0.005 0.305
354 | DependentVertex
355 | DependentVertex
356 | Junction 31 32 33 18 0.692308
357 | DependentVertex
358 | DependentVertex
359 | DependentVertex
360 | DependentVertex
361 | Junction 148 149 150 139 0.5
362 | RegularVertex 0.035 -0.015 0.255
363 | RegularVertex 0.035 -0.015 0.305
364 | Junction 36 411 412 75 0.655172
365 | DependentVertex
366 | DependentVertex
367 | RegularVertex 0.035 -0.005 0.24
368 | RegularVertex 0.035 -0.005 0.225
369 | DependentVertex
370 | DependentVertex
371 | DependentVertex
372 | DependentVertex
373 | RegularVertex -0.035 -0.07 0.355
374 | DependentVertex
375 | DependentVertex
376 | DependentVertex
377 | DependentVertex
378 | DependentVertex
379 | DependentVertex
380 | RegularVertex -0.035 -0.025 0.355
381 | RegularVertex -0.035 -0.045 0.355
382 | RegularVertex 0.005 0.09 0.305
383 | RegularVertex 0.005 0.09 0.255
384 | RegularVertex 0.035 -0.025 0.025
385 | RegularVertex 0.035 -0.025 -0.03
386 | Junction 388 530 531 310 0.307692
387 | DependentVertex
388 | DependentVertex
389 | Junction 148 415 416 417 0.539823
390 | DependentVertex
391 | DependentVertex
392 | Junction 343 344 345 334 0.153846
393 | DependentVertex
394 | DependentVertex
395 | DependentVertex
396 | DependentVertex
397 | DependentVertex
398 | DependentVertex
399 | Junction 56 379 380 372 0.846154
400 | RegularVertex -0.035 -0.06 0.205
401 | RegularVertex -0.035 -0.06 0.055
402 | DependentVertex
403 | DependentVertex
404 | DependentVertex
405 | DependentVertex
406 | DependentVertex
407 | DependentVertex
408 | RegularVertex 0.05 -0.06 -0.095
409 | RegularVertex 0.07 -0.06 -0.095
410 | DependentVertex
411 | DependentVertex
412 | RegularVertex 0.005 -0.005 0.305
413 | RegularVertex 0.005 -0.005 0.255
414 | RegularVertex -0.01 -0.005 0.21
415 | RegularVertex 0.01 -0.005 0.21
416 | RegularVertex 0.035 -0.005 0.02
417 | RegularVertex 0.035 -0.005 -0.165
418 | RegularVertex 0.035 -0.005 -0.355
419 | RegularVertex 0.01 -0.005 -0.355
420 | RegularVertex -0.01 -0.005 -0.355
421 | RegularVertex -0.035 -0.005 -0.165
422 | RegularVertex -0.035 -0.005 0.02
423 | RegularVertex -0.075 -0.005 0.355
424 | RegularVertex -0.04 -0.005 0.355
425 | DependentVertex
426 | DependentVertex
427 | Junction 78 351 352 346 0.344828
428 | RegularVertex -0.04 -0.005 0.26
429 | RegularVertex -0.075 -0.005 0.26
430 | DependentVertex
431 | DependentVertex
432 | DependentVertex
433 | DependentVertex
434 | Junction 388 530 531 310 0.692308
435 | DependentVertex
436 | DependentVertex
437 | DependentVertex
438 | DependentVertex
439 | DependentVertex
440 | DependentVertex
441 | DependentVertex
442 | DependentVertex
443 | DependentVertex
444 | DependentVertex
445 | RegularVertex 0.095 -0.05 -0.095
446 | RegularVertex 0.065 -0.05 -0.095
447 | RegularVertex 0.035 -0.025 0.175
448 | RegularVertex 0.035 -0.025 0.265
449 | DependentVertex
450 | DependentVertex
451 | DependentVertex
452 | DependentVertex
453 | RegularVertex 0.035 -0.045 0.09
454 | RegularVertex 0.035 -0.035 0.09
455 | DependentVertex
456 | DependentVertex
457 | RegularVertex 0.125 -0.06 0.025
458 | RegularVertex 0.125 -0.06 -0.03
459 | RegularVertex 0.01 -0.07 0.355
460 | RegularVertex -0.01 -0.07 0.355
461 | RegularVertex -0.035 -0.07 0.115
462 | RegularVertex -0.035 -0.07 -0.115
463 | RegularVertex -0.01 -0.07 -0.355
464 | RegularVertex 0.01 -0.07 -0.355
465 | RegularVertex 0.035 -0.07 -0.355
466 | RegularVertex 0.035 -0.07 -0.115
467 | RegularVertex 0.035 -0.07 0.115
468 | RegularVertex -0.225 -0.025 0.09
469 | RegularVertex -0.13 -0.025 0.09
470 | RegularVertex -0.035 -0.025 0.025
471 | RegularVertex -0.035 -0.025 -0.03
472 | RegularVertex -0.13 -0.025 -0.095
473 | RegularVertex -0.225 -0.025 -0.095
474 | Junction 307 495 496 497 0.689655
475 | DependentVertex
476 | DependentVertex
477 | RegularVertex -0.125 -0.06 -0.03
478 | RegularVertex -0.125 -0.06 0.025
479 | RegularVertex 0.225 -0.025 -0.095
480 | RegularVertex 0.13 -0.025 -0.095
481 | RegularVertex 0.13 -0.025 0.09
482 | RegularVertex 0.225 -0.025 0.09
483 | DependentVertex
484 | DependentVertex
485 | DependentVertex
486 | DependentVertex
487 | RegularVertex -0.05 -0.06 -0.095
488 | RegularVertex -0.07 -0.06 -0.095
489 | DependentVertex
490 | DependentVertex
491 | Junction 398 399 400 391 0.866667
492 | DependentVertex
493 | DependentVertex
494 | DependentVertex
495 | DependentVertex
496 | RegularVertex -0.225 -0.06 0.09
497 | RegularVertex -0.13 -0.06 0.09
498 | Junction 398 399 400 391 0.588889
499 | RegularVertex -0.035 -0.045 0.09
500 | RegularVertex -0.035 -0.035 0.09
501 | RegularVertex 0.13 -0.06 0.09
502 | RegularVertex 0.225 -0.06 0.09
503 | DependentVertex
504 | DependentVertex
505 | DependentVertex
506 | DependentVertex
507 | DependentVertex
508 | DependentVertex
509 | DependentVertex
510 | DependentVertex
511 | DependentVertex
512 | DependentVertex
513 | RegularVertex 0.09 -0.06 -0.06
514 | RegularVertex 0.09 -0.06 -0.085
515 | DependentVertex
516 | DependentVertex
517 | RegularVertex 0.075 -0.005 0.26
518 | RegularVertex 0.04 -0.005 0.26
519 | DependentVertex
520 | DependentVertex
521 | RegularVertex 0.04 -0.005 0.355
522 | RegularVertex 0.075 -0.005 0.355
523 | RegularVertex -0.035 -0.025 0.265
524 | RegularVertex -0.035 -0.025 0.175
525 | DependentVertex
526 | DependentVertex
527 | DependentVertex
528 | DependentVertex
529 | DependentVertex
530 | DependentVertex
531 | RegularVertex 0.035 -0.025 -0.095
532 | RegularVertex 0.035 -0.045 -0.095
533 | DependentVertex
534 | DependentVertex
535 | RegularVertex 0.035 -0.045 -0.355
536 | RegularVertex 0.035 -0.025 -0.355
537 | DependentVertex
538 | DependentVertex
539 | DependentVertex
540 | DependentVertex
541 | DependentVertex
542 | DependentVertex
543 | RegularVertex -0.095 -0.06 -0.035
544 | RegularVertex -0.065 -0.06 -0.035
545 | RegularVertex 0.11 -0.06 -0.095
546 | RegularVertex 0.1 -0.06 -0.095
547 | RegularVertex -0.1 -0.06 -0.095
548 | RegularVertex -0.11 -0.06 -0.095
549 |
--------------------------------------------------------------------------------
/templates/bathtubs/adjacencies.txt:
--------------------------------------------------------------------------------
1 | 2 edge 3, 5 edge 2, 6 edge 0, 7 edge 0, 9 edge 3, 11 edge 1,
2 | 2 edge 1, 4 edge 3, 7 edge 0, 9 edge 2,
3 | 0 edge 1, 1 edge 3, 5 edge 2, 6 edge 1, 7 edge 0, 9 edge 2,
4 | 4 edge 1, 5 edge 2, 6 edge 0, 7 edge 1, 9 edge 2, 12 edge 3,
5 | 1 edge 2, 3 edge 0, 5 edge 0, 6 edge 1, 7 edge 1, 9 edge 3,
6 | 0 edge 3, 2 edge 3, 3 edge 3, 4 edge 3, 9 edge 3, 11 edge 0, 12 edge 2, 13 edge 1,
7 | 0 edge 1, 2 edge 1, 3 edge 1, 4 edge 1, 7 edge 1, 8 edge 3, 11 edge 0, 12 edge 2,
8 | 0 edge 1, 1 edge 2, 2 edge 1, 3 edge 0, 4 edge 3, 6 edge 0,
9 | 6 edge 1, 10 edge 3, 11 edge 0, 12 edge 2,
10 | 0 edge 1, 1 edge 3, 2 edge 0, 3 edge 2, 4 edge 2, 5 edge 1,
11 | 8 edge 1, 11 edge 0, 12 edge 2, 13 edge 3,
12 | 0 edge 1, 5 edge 1, 6 edge 1, 8 edge 2, 10 edge 3, 13 edge 0,
13 | 3 edge 3, 5 edge 3, 6 edge 3, 8 edge 2, 10 edge 1, 13 edge 0,
14 | 5 edge 3, 10 edge 1, 11 edge 0, 12 edge 2,
15 |
--------------------------------------------------------------------------------
/templates/bathtubs/edges.txt:
--------------------------------------------------------------------------------
1 | 0 1 2 3
2 | 3 4 5 6
3 | 6 7 8 9
4 | 28 29 30 31
5 | 34 35 36 37
6 | 37 38 39 28
7 | 6 44 45 46
8 | 49 50 51 37
9 | 54 55 56 3
10 | 28 59 60 61
11 | 31 64 65 0
12 | 9 74 75 34
13 |
--------------------------------------------------------------------------------
/templates/bathtubs/junction_order.txt:
--------------------------------------------------------------------------------
1 | 3
2 | 28
3 | 31
4 | 0
5 | 6
6 | 37
7 | 9
8 | 34
9 |
--------------------------------------------------------------------------------
/templates/bathtubs/topology.txt:
--------------------------------------------------------------------------------
1 | [[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, ],
2 | [12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, ],
3 | [15, 24, 25, 0, 11, 10, 9, 26, 27, 18, 17, 16, ],
4 | [28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, ],
5 | [34, 33, 32, 31, 40, 41, 12, 23, 22, 21, 42, 43, ],
6 | [6, 44, 45, 46, 47, 48, 49, 50, 51, 37, 52, 53, ],
7 | [54, 55, 56, 3, 57, 58, 28, 59, 60, 61, 62, 63, ],
8 | [31, 64, 65, 0, 25, 24, 15, 14, 13, 12, 41, 40, ],
9 | [66, 67, 68, 54, 63, 62, 61, 69, 70, 71, 72, 73, ],
10 | [18, 27, 26, 9, 74, 75, 34, 43, 42, 21, 20, 19, ],
11 | [76, 77, 78, 66, 73, 72, 71, 79, 80, 81, 82, 83, ],
12 | [76, 84, 85, 46, 86, 87, 54, 68, 67, 66, 78, 77, ],
13 | [49, 88, 89, 81, 80, 79, 71, 70, 69, 61, 90, 91, ],
14 | [46, 85, 84, 76, 83, 82, 81, 89, 88, 49, 48, 47, ]]
15 |
--------------------------------------------------------------------------------
/templates/bathtubs/vertices.txt:
--------------------------------------------------------------------------------
1 | Junction 3 57 58 28 0.0769231
2 | DependentVertex
3 | DependentVertex
4 | Junction 46 86 87 54 0.9
5 | DependentVertex
6 | DependentVertex
7 | Junction 46 86 87 54 0.1
8 | DependentVertex
9 | DependentVertex
10 | Junction 37 52 53 6 0.923077
11 | RegularVertex 0.275 0.14 -0.065
12 | RegularVertex 0.275 0.14 0.065
13 | RegularVertex -0.275 -0.08 0.2
14 | RegularVertex -0.09 -0.08 0.2
15 | RegularVertex 0.09 -0.08 0.2
16 | RegularVertex 0.275 -0.08 0.2
17 | RegularVertex 0.275 -0.08 0.065
18 | RegularVertex 0.275 -0.08 -0.065
19 | RegularVertex 0.275 -0.08 -0.2
20 | RegularVertex 0.09 -0.08 -0.2
21 | RegularVertex -0.09 -0.08 -0.2
22 | RegularVertex -0.275 -0.08 -0.2
23 | RegularVertex -0.275 -0.08 -0.065
24 | RegularVertex -0.275 -0.08 0.065
25 | RegularVertex 0.275 -0.005 0.2
26 | RegularVertex 0.275 0.065 0.2
27 | RegularVertex 0.275 0.065 -0.2
28 | RegularVertex 0.275 -0.005 -0.2
29 | Junction 61 90 91 49 0.1
30 | DependentVertex
31 | DependentVertex
32 | Junction 3 57 58 28 0.923077
33 | RegularVertex -0.275 0.14 0.065
34 | RegularVertex -0.275 0.14 -0.065
35 | Junction 37 52 53 6 0.0769231
36 | DependentVertex
37 | DependentVertex
38 | Junction 61 90 91 49 0.9
39 | DependentVertex
40 | DependentVertex
41 | RegularVertex -0.275 0.065 0.2
42 | RegularVertex -0.275 -0.005 0.2
43 | RegularVertex -0.275 -0.005 -0.2
44 | RegularVertex -0.275 0.065 -0.2
45 | DependentVertex
46 | DependentVertex
47 | RegularVertex 0.325 0.14 -0.25
48 | RegularVertex 0.105 0.14 -0.25
49 | RegularVertex -0.105 0.14 -0.25
50 | RegularVertex -0.325 0.14 -0.25
51 | DependentVertex
52 | DependentVertex
53 | RegularVertex -0.105 0.14 -0.2
54 | RegularVertex 0.105 0.14 -0.2
55 | RegularVertex 0.325 0.14 0.25
56 | DependentVertex
57 | DependentVertex
58 | RegularVertex 0.105 0.14 0.2
59 | RegularVertex -0.105 0.14 0.2
60 | DependentVertex
61 | DependentVertex
62 | RegularVertex -0.325 0.14 0.25
63 | RegularVertex -0.105 0.14 0.25
64 | RegularVertex 0.105 0.14 0.25
65 | DependentVertex
66 | DependentVertex
67 | RegularVertex 0.325 -0.13 0.25
68 | RegularVertex 0.325 -0.04 0.25
69 | RegularVertex 0.325 0.05 0.25
70 | RegularVertex -0.325 0.05 0.25
71 | RegularVertex -0.325 -0.04 0.25
72 | RegularVertex -0.325 -0.13 0.25
73 | RegularVertex -0.105 -0.13 0.25
74 | RegularVertex 0.105 -0.13 0.25
75 | DependentVertex
76 | DependentVertex
77 | RegularVertex 0.325 -0.13 -0.25
78 | RegularVertex 0.325 -0.13 -0.08
79 | RegularVertex 0.325 -0.13 0.08
80 | RegularVertex -0.325 -0.13 0.08
81 | RegularVertex -0.325 -0.13 -0.08
82 | RegularVertex -0.325 -0.13 -0.25
83 | RegularVertex -0.105 -0.13 -0.25
84 | RegularVertex 0.105 -0.13 -0.25
85 | RegularVertex 0.325 -0.04 -0.25
86 | RegularVertex 0.325 0.05 -0.25
87 | RegularVertex 0.325 0.14 -0.08
88 | RegularVertex 0.325 0.14 0.08
89 | RegularVertex -0.325 0.05 -0.25
90 | RegularVertex -0.325 -0.04 -0.25
91 | RegularVertex -0.325 0.14 0.08
92 | RegularVertex -0.325 0.14 -0.08
93 |
--------------------------------------------------------------------------------
/templates/bottles/adjacencies.txt:
--------------------------------------------------------------------------------
1 | 2 edge 0, 3 edge 1, 4 edge 3, 8 edge 2, 10 edge 2, 12 edge 3,
2 | 2 edge 1, 3 edge 0, 4 edge 2, 5 edge 3, 10 edge 0, 12 edge 3,
3 | 0 edge 2, 1 edge 0, 3 edge 1, 4 edge 3,
4 | 0 edge 3, 1 edge 1, 2 edge 0, 5 edge 2, 8 edge 3, 10 edge 2,
5 | 0 edge 2, 1 edge 0, 2 edge 1, 5 edge 0, 8 edge 3, 12 edge 3,
6 | 1 edge 2, 3 edge 2, 4 edge 3, 7 edge 0, 10 edge 1, 12 edge 3,
7 | 7 edge 2, 11 edge 0, 12 edge 3, 13 edge 1,
8 | 5 edge 1, 6 edge 2, 9 edge 0, 10 edge 1, 12 edge 1, 13 edge 3,
9 | 0 edge 0, 3 edge 1, 4 edge 0, 10 edge 1, 11 edge 2, 12 edge 3,
10 | 7 edge 0, 10 edge 3, 11 edge 2, 13 edge 1,
11 | 0 edge 3, 1 edge 3, 3 edge 3, 5 edge 3, 7 edge 0, 8 edge 3, 9 edge 1, 11 edge 2,
12 | 6 edge 2, 8 edge 3, 9 edge 0, 10 edge 3, 12 edge 3, 13 edge 1,
13 | 0 edge 1, 1 edge 1, 4 edge 1, 5 edge 1, 6 edge 3, 7 edge 0, 8 edge 1, 11 edge 2,
14 | 6 edge 1, 7 edge 0, 9 edge 3, 11 edge 2,
15 |
--------------------------------------------------------------------------------
/templates/bottles/edges.txt:
--------------------------------------------------------------------------------
1 | 12 28 29 6
2 | 9 30 31 21
3 | 32 33 34 35
4 | 35 36 37 12
5 | 21 38 39 32
6 | 6 60 61 62
7 | 62 63 64 65
8 | 65 66 67 9
9 | 35 76 77 55
10 | 73 78 79 62
11 | 49 86 87 32
12 | 65 90 91 40
13 |
--------------------------------------------------------------------------------
/templates/bottles/junction_order.txt:
--------------------------------------------------------------------------------
1 | 32
2 | 65
3 | 35
4 | 62
5 | 9
6 | 6
7 | 12
8 | 21
9 |
--------------------------------------------------------------------------------
/templates/bottles/topology.txt:
--------------------------------------------------------------------------------
1 | [[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, ],
2 | [12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, ],
3 | [18, 17, 16, 15, 24, 25, 3, 2, 1, 0, 26, 27, ],
4 | [3, 25, 24, 15, 14, 13, 12, 28, 29, 6, 5, 4, ],
5 | [21, 20, 19, 18, 27, 26, 0, 11, 10, 9, 30, 31, ],
6 | [32, 33, 34, 35, 36, 37, 12, 23, 22, 21, 38, 39, ],
7 | [40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, ],
8 | [52, 53, 54, 55, 56, 57, 49, 48, 47, 46, 58, 59, ],
9 | [9, 8, 7, 6, 60, 61, 62, 63, 64, 65, 66, 67, ],
10 | [55, 54, 53, 52, 68, 69, 70, 71, 72, 73, 74, 75, ],
11 | [35, 76, 77, 55, 75, 74, 73, 78, 79, 62, 80, 81, ],
12 | [73, 72, 71, 70, 82, 83, 43, 42, 41, 40, 84, 85, ],
13 | [49, 86, 87, 32, 88, 89, 65, 90, 91, 40, 51, 50, ],
14 | [52, 59, 58, 46, 45, 44, 43, 83, 82, 70, 69, 68, ]]
15 |
--------------------------------------------------------------------------------
/templates/bottles/vertices.txt:
--------------------------------------------------------------------------------
1 | RegularVertex -0.07 0.455 -0.065
2 | RegularVertex -0.02 0.455 -0.065
3 | RegularVertex 0.02 0.455 -0.065
4 | RegularVertex 0.07 0.455 -0.065
5 | RegularVertex 0.07 0.36 -0.065
6 | RegularVertex 0.07 0.27 -0.065
7 | Junction 62 80 81 35 0.216927
8 | RegularVertex 0.02 0.18 -0.065
9 | RegularVertex -0.02 0.18 -0.065
10 | Junction 32 88 89 65 0.783073
11 | RegularVertex -0.07 0.27 -0.065
12 | RegularVertex -0.07 0.36 -0.065
13 | Junction 62 80 81 35 0.783073
14 | RegularVertex 0.07 0.27 0.065
15 | RegularVertex 0.07 0.36 0.065
16 | RegularVertex 0.07 0.455 0.065
17 | RegularVertex 0.02 0.455 0.065
18 | RegularVertex -0.02 0.455 0.065
19 | RegularVertex -0.07 0.455 0.065
20 | RegularVertex -0.07 0.36 0.065
21 | RegularVertex -0.07 0.27 0.065
22 | Junction 32 88 89 65 0.216927
23 | RegularVertex -0.02 0.18 0.065
24 | RegularVertex 0.02 0.18 0.065
25 | RegularVertex 0.07 0.455 0.02
26 | RegularVertex 0.07 0.455 -0.02
27 | RegularVertex -0.07 0.455 -0.02
28 | RegularVertex -0.07 0.455 0.02
29 | DependentVertex
30 | DependentVertex
31 | DependentVertex
32 | DependentVertex
33 | Junction 55 56 57 49 0.782378
34 | DependentVertex
35 | DependentVertex
36 | Junction 55 56 57 49 0.217622
37 | DependentVertex
38 | DependentVertex
39 | DependentVertex
40 | DependentVertex
41 | RegularVertex -0.125 0.18 -0.115
42 | RegularVertex -0.125 -0.03 -0.115
43 | RegularVertex -0.125 -0.24 -0.115
44 | RegularVertex -0.125 -0.45 -0.115
45 | RegularVertex -0.125 -0.45 -0.035
46 | RegularVertex -0.125 -0.45 0.035
47 | RegularVertex -0.125 -0.45 0.115
48 | RegularVertex -0.125 -0.24 0.115
49 | RegularVertex -0.125 -0.03 0.115
50 | RegularVertex -0.125 0.18 0.115
51 | RegularVertex -0.125 0.18 0.035
52 | RegularVertex -0.125 0.18 -0.035
53 | RegularVertex 0.125 -0.45 0.115
54 | RegularVertex 0.125 -0.24 0.115
55 | RegularVertex 0.125 -0.03 0.115
56 | RegularVertex 0.125 0.18 0.115
57 | RegularVertex 0.04 0.18 0.115
58 | RegularVertex -0.04 0.18 0.115
59 | RegularVertex -0.04 -0.45 0.115
60 | RegularVertex 0.04 -0.45 0.115
61 | DependentVertex
62 | DependentVertex
63 | Junction 40 84 85 73 0.782378
64 | DependentVertex
65 | DependentVertex
66 | Junction 40 84 85 73 0.217622
67 | DependentVertex
68 | DependentVertex
69 | RegularVertex 0.125 -0.45 0.035
70 | RegularVertex 0.125 -0.45 -0.035
71 | RegularVertex 0.125 -0.45 -0.115
72 | RegularVertex 0.125 -0.24 -0.115
73 | RegularVertex 0.125 -0.03 -0.115
74 | RegularVertex 0.125 0.18 -0.115
75 | RegularVertex 0.125 0.18 -0.035
76 | RegularVertex 0.125 0.18 0.035
77 | DependentVertex
78 | DependentVertex
79 | DependentVertex
80 | DependentVertex
81 | RegularVertex 0.07 0.18 -0.035
82 | RegularVertex 0.07 0.18 0.035
83 | RegularVertex 0.04 -0.45 -0.115
84 | RegularVertex -0.04 -0.45 -0.115
85 | RegularVertex -0.04 0.18 -0.115
86 | RegularVertex 0.04 0.18 -0.115
87 | DependentVertex
88 | DependentVertex
89 | RegularVertex -0.07 0.18 0.035
90 | RegularVertex -0.07 0.18 -0.035
91 | DependentVertex
92 | DependentVertex
--------------------------------------------------------------------------------
/templates/cars/adjacencies.txt:
--------------------------------------------------------------------------------
1 | 2 edge 2, 3 edge 1, 4 edge 3, 32 edge 0, 33 edge 1, 37 edge 0,
2 | 2 edge 3, 3 edge 0, 4 edge 2, 29 edge 1, 32 edge 2, 33 edge 1,
3 | 0 edge 3, 1 edge 1, 3 edge 0, 4 edge 2,
4 | 0 edge 3, 1 edge 1, 2 edge 2, 29 edge 1, 33 edge 0, 37 edge 0,
5 | 0 edge 2, 1 edge 0, 2 edge 3, 29 edge 1, 32 edge 1, 37 edge 2,
6 |
7 | 8 edge 2, 9 edge 1, 10 edge 3, 28 edge 0, 33 edge 0, 38 edge 1,
8 | 8 edge 3, 9 edge 0, 10 edge 2, 33 edge 2, 36 edge 1, 38 edge 1,
9 | 5 edge 3, 7 edge 1, 9 edge 0, 10 edge 2,
10 | 5 edge 3, 7 edge 1, 8 edge 2, 28 edge 0, 36 edge 1, 38 edge 0,
11 | 5 edge 2, 7 edge 0, 8 edge 3, 28 edge 2, 33 edge 1, 36 edge 1,
12 |
13 | 14 edge 2, 15 edge 1, 16 edge 3, 24 edge 0, 29 edge 0, 33 edge 1,
14 | 14 edge 3, 15 edge 0, 16 edge 2, 24 edge 2, 33 edge 1, 35 edge 1,
15 | 12 edge 3, 13 edge 1, 15 edge 0, 16 edge 2,
16 | 12 edge 3, 13 edge 1, 14 edge 2, 29 edge 0, 33 edge 0, 35 edge 1,
17 | 12 edge 2, 13 edge 0, 14 edge 3, 24 edge 1, 29 edge 2, 35 edge 1,
18 |
19 | 20 edge 2, 21 edge 1, 22 edge 3, 33 edge 0, 34 edge 1, 36 edge 0,
20 | 20 edge 3, 21 edge 0, 22 edge 2, 25 edge 1, 33 edge 2, 34 edge 1,
21 | 18 edge 3, 19 edge 1, 21 edge 0, 22 edge 2,
22 | 18 edge 3, 19 edge 1, 20 edge 2, 25 edge 1, 34 edge 0, 36 edge 0,
23 | 18 edge 2, 19 edge 0, 20 edge 3, 25 edge 1, 33 edge 1, 36 edge 2,
24 |
25 | 12 edge 0, 13 edge 1, 16 edge 0, 29 edge 3, 31 edge 2, 35 edge 1,
26 | 19 edge 1, 21 edge 1, 22 edge 1, 26 edge 3, 30 edge 2, 33 edge 0, 34 edge 1,
27 | 25 edge 1, 30 edge 2, 31 edge 0, 33 edge 1, 35 edge 1, 39 edge 3, 42 edge 3,
28 | 28 edge 3, 30 edge 2, 31 edge 0, 33 edge 3, 37 edge 3, 40 edge 1, 41 edge 1,
29 | 5 edge 3, 9 edge 3, 10 edge 0, 27 edge 1, 30 edge 2, 33 edge 0, 38 edge 3,
30 | 1 edge 3, 3 edge 0, 4 edge 3, 12 edge 1, 15 edge 1, 16 edge 1, 24 edge 1, 31 edge 2, 32 edge 3, 33 edge 0,
31 | 25 edge 3, 26 edge 2, 27 edge 0, 28 edge 3, 34 edge 3, 36 edge 3, 38 edge 3, 39 edge 1, 40 edge 1,
32 | 24 edge 1, 26 edge 2, 27 edge 0, 29 edge 1, 32 edge 1, 35 edge 1, 37 edge 1, 41 edge 3, 42 edge 3,
33 | 0 edge 0, 1 edge 1, 4 edge 0, 29 edge 1, 31 edge 2, 37 edge 3,
34 | 0 edge 3, 1 edge 3, 3 edge 3, 5 edge 1, 7 edge 1, 10 edge 1, 12 edge 3, 13 edge 3, 15 edge 3, 18 edge 1, 19 edge 1, 22 edge 1, 25 edge 1, 26 edge 2, 27 edge 0, 28 edge 1, 29 edge 3, 35 edge 3, 36 edge 1, 37 edge 3,
35 | 18 edge 3, 19 edge 2, 21 edge 2, 25 edge 1, 30 edge 0, 36 edge 3,
36 | 13 edge 3, 15 edge 0, 16 edge 3, 24 edge 3, 26 edge 1, 31 edge 2, 33 edge 0,
37 | 7 edge 1, 9 edge 1, 10 edge 1, 18 edge 3, 21 edge 3, 22 edge 0, 30 edge 2, 33 edge 0, 34 edge 3, 38 edge 1,
38 | 0 edge 1, 3 edge 1, 4 edge 1, 27 edge 3, 31 edge 2, 32 edge 1, 33 edge 0,
39 | 5 edge 3, 7 edge 2, 9 edge 2, 28 edge 3, 30 edge 0, 36 edge 1,
40 | 26 edge 0, 30 edge 1, 40 edge 2, 41 edge 3, 42 edge 3,
41 | 27 edge 1, 30 edge 0, 39 edge 3, 41 edge 2, 42 edge 3,
42 | 27 edge 0, 31 edge 1, 39 edge 3, 40 edge 3, 42 edge 2,
43 | 26 edge 1, 31 edge 0, 39 edge 2, 40 edge 3, 41 edge 3,
44 |
--------------------------------------------------------------------------------
/templates/cars/edges.txt:
--------------------------------------------------------------------------------
1 | 0 1 2 3
2 | 15 16 17 18
3 | 3 28 29 15
4 | 32 33 34 35
5 | 47 48 49 50
6 | 50 62 63 32
7 | 64 65 66 67
8 | 79 80 81 82
9 | 67 92 93 79
10 | 96 97 98 99
11 | 111 112 113 114
12 | 114 126 127 96
13 | 82 128 129 130
14 | 130 131 132 133
15 | 133 134 135 64
16 | 136 137 138 114
17 | 141 142 143 144
18 | 144 145 146 136
19 | 32 170 171 172
20 | 172 173 174 167
21 | 167 175 176 177
22 | 15 180 181 67
23 | 133 184 185 186
24 | 18 197 198 186
25 | 186 199 200 201
26 | 201 202 203 0
27 | 204 205 206 172
28 | 136 209 210 211
29 | 214 215 216 141
30 | 141 217 218 111
31 | 99 219 220 214
32 | 79 221 222 211
33 | 211 223 224 150
34 | 150 225 226 130
35 | 96 229 230 50
36 | 233 234 235 214
37 | 204 238 239 3
38 | 201 242 243 158
39 | 158 244 245 204
40 | 177 246 247 233
41 | 233 248 249 47
42 | 35 250 251 177
43 | 252 253 254 155
44 | 155 255 256 257
45 | 257 263 264 164
46 | 164 265 266 267
47 | 267 270 271 161
48 | 161 272 273 274
49 | 274 277 278 147
50 | 147 279 280 252
51 |
--------------------------------------------------------------------------------
/templates/cars/junction_order.txt:
--------------------------------------------------------------------------------
1 | 267
2 | 274
3 | 257
4 | 252
5 | 204
6 | 172
7 | 136
8 | 211
9 | 3
10 | 201
11 | 96
12 | 50
13 | 233
14 | 214
15 | 79
16 | 130
17 | 15
18 | 67
19 | 133
20 | 186
21 | 0
22 | 18
23 | 32
24 | 177
25 | 47
26 | 35
27 | 114
28 | 141
29 | 111
30 | 99
31 | 64
32 | 82
33 |
--------------------------------------------------------------------------------
/templates/cars/topology.txt:
--------------------------------------------------------------------------------
1 | [[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, ],
2 | [12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, ],
3 | [6, 24, 25, 12, 23, 22, 21, 26, 27, 9, 8, 7, ],
4 | [3, 28, 29, 15, 14, 13, 12, 25, 24, 6, 5, 4, ],
5 | [21, 20, 19, 18, 30, 31, 0, 11, 10, 9, 27, 26, ],
6 | [0, 31, 30, 18, 17, 16, 15, 29, 28, 3, 2, 1],
7 | [32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, ],
8 | [44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, ],
9 | [38, 56, 57, 44, 55, 54, 53, 58, 59, 41, 40, 39, ],
10 | [35, 60, 61, 47, 46, 45, 44, 57, 56, 38, 37, 36, ],
11 | [53, 52, 51, 50, 62, 63, 32, 43, 42, 41, 59, 58, ],
12 | [32, 63, 62, 50, 49, 48, 47, 61, 60, 35, 34, 33],
13 | [64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, ],
14 | [76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, ],
15 | [70, 88, 89, 76, 87, 86, 85, 90, 91, 73, 72, 71, ],
16 | [67, 92, 93, 79, 78, 77, 76, 89, 88, 70, 69, 68, ],
17 | [85, 84, 83, 82, 94, 95, 64, 75, 74, 73, 91, 90, ],
18 | [67, 66, 65, 64, 95, 94, 82, 81, 80, 79, 93, 92],
19 | [96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, ],
20 | [108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, ],
21 | [102, 120, 121, 108, 119, 118, 117, 122, 123, 105, 104, 103, ],
22 | [99, 124, 125, 111, 110, 109, 108, 121, 120, 102, 101, 100, ],
23 | [117, 116, 115, 114, 126, 127, 96, 107, 106, 105, 123, 122, ],
24 | [114, 113, 112, 111, 125, 124, 99, 98, 97, 96, 127, 126],
25 | [64, 95, 94, 82, 128, 129, 130, 131, 132, 133, 134, 135, ],
26 | [136, 137, 138, 114, 139, 140, 141, 142, 143, 144, 145, 146, ],
27 | [147, 148, 149, 150, 151, 152, 144, 153, 154, 155, 156, 157, ],
28 | [158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, ],
29 | [32, 170, 171, 172, 173, 174, 167, 175, 176, 177, 178, 179, ],
30 | [15, 180, 181, 67, 182, 183, 133, 184, 185, 186, 187, 188, ],
31 | [167, 166, 165, 164, 189, 190, 155, 154, 153, 144, 191, 192, ],
32 | [161, 160, 159, 158, 193, 194, 150, 149, 148, 147, 195, 196, ],
33 | [0, 31, 30, 18, 197, 198, 186, 199, 200, 201, 202, 203, ],
34 | [204, 205, 206, 172, 207, 208, 136, 209, 210, 211, 212, 213, ],
35 | [214, 215, 216, 141, 217, 218, 111, 125, 124, 99, 219, 220, ],
36 | [79, 221, 222, 211, 223, 224, 150, 225, 226, 130, 227, 228, ],
37 | [96, 229, 230, 50, 231, 232, 233, 234, 235, 214, 236, 237, ],
38 | [204, 238, 239, 3, 240, 241, 201, 242, 243, 158, 244, 245, ],
39 | [177, 246, 247, 233, 248, 249, 47, 61, 60, 35, 250, 251, ],
40 | [252, 253, 254, 155, 255, 256, 257, 258, 259, 260, 261, 262, ],
41 | [257, 263, 264, 164, 265, 266, 267, 268, 269, 260, 259, 258, ],
42 | [267, 270, 271, 161, 272, 273, 274, 275, 276, 260, 269, 268, ],
43 | [274, 277, 278, 147, 279, 280, 252, 262, 261, 260, 276, 275, ], ]
44 |
--------------------------------------------------------------------------------
/templates/cars/vertices.txt:
--------------------------------------------------------------------------------
1 | Junction 3 240 241 201 0.642857
2 | DependentVertex
3 | DependentVertex
4 | Junction 211 212 213 204 0.863636
5 | RegularVertex -0.125 0.0333333 -0.32
6 | RegularVertex -0.125 0.0216667 -0.32
7 | RegularVertex -0.125 0.01 -0.32
8 | RegularVertex -0.14 0.01 -0.32
9 | RegularVertex -0.155 0.01 -0.32
10 | RegularVertex -0.17 0.01 -0.32
11 | RegularVertex -0.17 0.0216667 -0.32
12 | RegularVertex -0.17 0.0333333 -0.32
13 | RegularVertex -0.125 0.01 -0.205
14 | RegularVertex -0.125 0.0216667 -0.205
15 | RegularVertex -0.125 0.0333333 -0.205
16 | Junction 211 212 213 204 0.732955
17 | DependentVertex
18 | DependentVertex
19 | Junction 186 187 188 15 0.357143
20 | RegularVertex -0.17 0.0333333 -0.205
21 | RegularVertex -0.17 0.0216667 -0.205
22 | RegularVertex -0.17 0.01 -0.205
23 | RegularVertex -0.155 0.01 -0.205
24 | RegularVertex -0.14 0.01 -0.205
25 | RegularVertex -0.125 0.01 -0.281667
26 | RegularVertex -0.125 0.01 -0.243333
27 | RegularVertex -0.17 0.01 -0.243333
28 | RegularVertex -0.17 0.01 -0.281667
29 | DependentVertex
30 | DependentVertex
31 | RegularVertex -0.17 0.045 -0.243333
32 | RegularVertex -0.17 0.045 -0.281667
33 | Junction 172 207 208 136 0.136364
34 | DependentVertex
35 | DependentVertex
36 | Junction 177 178 179 32 0.357143
37 | RegularVertex 0.17 0.0333333 -0.32
38 | RegularVertex 0.17 0.0216667 -0.32
39 | RegularVertex 0.17 0.01 -0.32
40 | RegularVertex 0.155 0.01 -0.32
41 | RegularVertex 0.14 0.01 -0.32
42 | RegularVertex 0.125 0.01 -0.32
43 | RegularVertex 0.125 0.0216667 -0.32
44 | RegularVertex 0.125 0.0333333 -0.32
45 | RegularVertex 0.17 0.01 -0.205
46 | RegularVertex 0.17 0.0216667 -0.205
47 | RegularVertex 0.17 0.0333333 -0.205
48 | Junction 50 231 232 233 0.642857
49 | DependentVertex
50 | DependentVertex
51 | Junction 172 207 208 136 0.267045
52 | RegularVertex 0.125 0.0333333 -0.205
53 | RegularVertex 0.125 0.0216667 -0.205
54 | RegularVertex 0.125 0.01 -0.205
55 | RegularVertex 0.14 0.01 -0.205
56 | RegularVertex 0.155 0.01 -0.205
57 | RegularVertex 0.17 0.01 -0.281667
58 | RegularVertex 0.17 0.01 -0.243333
59 | RegularVertex 0.125 0.01 -0.243333
60 | RegularVertex 0.125 0.01 -0.281667
61 | RegularVertex 0.17 0.045 -0.281667
62 | RegularVertex 0.17 0.045 -0.243333
63 | DependentVertex
64 | DependentVertex
65 | Junction 67 182 183 133 0.642857
66 | DependentVertex
67 | DependentVertex
68 | Junction 211 212 213 204 0.295455
69 | RegularVertex -0.125 0.0333333 0.18
70 | RegularVertex -0.125 0.0216667 0.18
71 | RegularVertex -0.125 0.01 0.18
72 | RegularVertex -0.14 0.01 0.18
73 | RegularVertex -0.155 0.01 0.18
74 | RegularVertex -0.17 0.01 0.18
75 | RegularVertex -0.17 0.0216667 0.18
76 | RegularVertex -0.17 0.0333333 0.18
77 | RegularVertex -0.125 0.01 0.295
78 | RegularVertex -0.125 0.0216667 0.295
79 | RegularVertex -0.125 0.0333333 0.295
80 | Junction 211 212 213 204 0.164773
81 | DependentVertex
82 | DependentVertex
83 | Junction 130 227 228 79 0.357143
84 | RegularVertex -0.17 0.0333333 0.295
85 | RegularVertex -0.17 0.0216667 0.295
86 | RegularVertex -0.17 0.01 0.295
87 | RegularVertex -0.155 0.01 0.295
88 | RegularVertex -0.14 0.01 0.295
89 | RegularVertex -0.125 0.01 0.218333
90 | RegularVertex -0.125 0.01 0.256667
91 | RegularVertex -0.17 0.01 0.256667
92 | RegularVertex -0.17 0.01 0.218333
93 | DependentVertex
94 | DependentVertex
95 | RegularVertex -0.17 0.045 0.256667
96 | RegularVertex -0.17 0.045 0.218333
97 | Junction 172 207 208 136 0.704545
98 | DependentVertex
99 | DependentVertex
100 | Junction 214 236 237 96 0.357143
101 | RegularVertex 0.17 0.0333333 0.18
102 | RegularVertex 0.17 0.0216667 0.18
103 | RegularVertex 0.17 0.01 0.18
104 | RegularVertex 0.155 0.01 0.18
105 | RegularVertex 0.14 0.01 0.18
106 | RegularVertex 0.125 0.01 0.18
107 | RegularVertex 0.125 0.0216667 0.18
108 | RegularVertex 0.125 0.0333333 0.18
109 | RegularVertex 0.17 0.01 0.295
110 | RegularVertex 0.17 0.0216667 0.295
111 | RegularVertex 0.17 0.0333333 0.295
112 | Junction 114 139 140 141 0.642857
113 | DependentVertex
114 | DependentVertex
115 | Junction 172 207 208 136 0.835227
116 | RegularVertex 0.125 0.0333333 0.295
117 | RegularVertex 0.125 0.0216667 0.295
118 | RegularVertex 0.125 0.01 0.295
119 | RegularVertex 0.14 0.01 0.295
120 | RegularVertex 0.155 0.01 0.295
121 | RegularVertex 0.17 0.01 0.218333
122 | RegularVertex 0.17 0.01 0.256667
123 | RegularVertex 0.125 0.01 0.256667
124 | RegularVertex 0.125 0.01 0.218333
125 | RegularVertex 0.17 0.045 0.218333
126 | RegularVertex 0.17 0.045 0.256667
127 | DependentVertex
128 | DependentVertex
129 | DependentVertex
130 | DependentVertex
131 | Junction 158 193 194 150 0.835227
132 | DependentVertex
133 | DependentVertex
134 | Junction 158 193 194 150 0.704545
135 | DependentVertex
136 | DependentVertex
137 | Junction 150 151 152 144 0.820513
138 | DependentVertex
139 | DependentVertex
140 | RegularVertex 0.148333 0.045 0.295
141 | RegularVertex 0.171667 0.045 0.295
142 | Junction 144 191 192 167 0.164773
143 | DependentVertex
144 | DependentVertex
145 | RegularVertex 0.195 0.045 0.44
146 | DependentVertex
147 | DependentVertex
148 | RegularVertex -0.195 0.27 0.44
149 | RegularVertex -0.195 0.195 0.44
150 | RegularVertex -0.195 0.12 0.44
151 | RegularVertex -0.195 0.045 0.44
152 | RegularVertex -0.065 0.045 0.44
153 | RegularVertex 0.065 0.045 0.44
154 | RegularVertex 0.195 0.12 0.44
155 | RegularVertex 0.195 0.195 0.44
156 | RegularVertex 0.195 0.27 0.44
157 | RegularVertex 0.065 0.27 0.44
158 | RegularVertex -0.065 0.27 0.44
159 | RegularVertex -0.195 0.045 -0.44
160 | RegularVertex -0.195 0.12 -0.44
161 | RegularVertex -0.195 0.195 -0.44
162 | RegularVertex -0.195 0.27 -0.44
163 | RegularVertex -0.065 0.27 -0.44
164 | RegularVertex 0.065 0.27 -0.44
165 | RegularVertex 0.195 0.27 -0.44
166 | RegularVertex 0.195 0.195 -0.44
167 | RegularVertex 0.195 0.12 -0.44
168 | RegularVertex 0.195 0.045 -0.44
169 | RegularVertex 0.065 0.045 -0.44
170 | RegularVertex -0.065 0.045 -0.44
171 | DependentVertex
172 | DependentVertex
173 | Junction 167 168 169 158 0.179487
174 | DependentVertex
175 | DependentVertex
176 | DependentVertex
177 | DependentVertex
178 | Junction 144 191 192 167 0.863636
179 | RegularVertex 0.171667 0.045 -0.32
180 | RegularVertex 0.148333 0.045 -0.32
181 | DependentVertex
182 | DependentVertex
183 | RegularVertex -0.148333 0.045 0.18
184 | RegularVertex -0.171667 0.045 0.18
185 | DependentVertex
186 | DependentVertex
187 | Junction 158 193 194 150 0.267045
188 | RegularVertex -0.171667 0.045 -0.205
189 | RegularVertex -0.148333 0.045 -0.205
190 | RegularVertex 0.195 0.27 -0.146667
191 | RegularVertex 0.195 0.27 0.146667
192 | RegularVertex 0.195 0.045 0.146667
193 | RegularVertex 0.195 0.045 -0.146667
194 | RegularVertex -0.195 0.045 -0.146667
195 | RegularVertex -0.195 0.045 0.146667
196 | RegularVertex -0.195 0.27 0.146667
197 | RegularVertex -0.195 0.27 -0.146667
198 | DependentVertex
199 | DependentVertex
200 | DependentVertex
201 | DependentVertex
202 | Junction 158 193 194 150 0.136364
203 | DependentVertex
204 | DependentVertex
205 | Junction 167 168 169 158 0.820513
206 | DependentVertex
207 | DependentVertex
208 | RegularVertex 0.125 0.045 -0.146667
209 | RegularVertex 0.125 0.045 0.146667
210 | DependentVertex
211 | DependentVertex
212 | Junction 150 151 152 144 0.179487
213 | RegularVertex -0.125 0.045 0.146667
214 | RegularVertex -0.125 0.045 -0.146667
215 | Junction 144 191 192 167 0.295455
216 | DependentVertex
217 | DependentVertex
218 | DependentVertex
219 | DependentVertex
220 | DependentVertex
221 | DependentVertex
222 | DependentVertex
223 | DependentVertex
224 | DependentVertex
225 | DependentVertex
226 | DependentVertex
227 | DependentVertex
228 | RegularVertex -0.171667 0.045 0.295
229 | RegularVertex -0.148333 0.045 0.295
230 | DependentVertex
231 | DependentVertex
232 | RegularVertex 0.148333 0.045 -0.205
233 | RegularVertex 0.171667 0.045 -0.205
234 | Junction 144 191 192 167 0.732955
235 | DependentVertex
236 | DependentVertex
237 | RegularVertex 0.171667 0.045 0.18
238 | RegularVertex 0.148333 0.045 0.18
239 | DependentVertex
240 | DependentVertex
241 | RegularVertex -0.148333 0.045 -0.32
242 | RegularVertex -0.171667 0.045 -0.32
243 | DependentVertex
244 | DependentVertex
245 | DependentVertex
246 | DependentVertex
247 | DependentVertex
248 | DependentVertex
249 | DependentVertex
250 | DependentVertex
251 | DependentVertex
252 | DependentVertex
253 | Junction 155 156 157 147 0.5
254 | DependentVertex
255 | DependentVertex
256 | DependentVertex
257 | DependentVertex
258 | Junction 164 189 190 155 0.5
259 | RegularVertex 0.13 0.27 0
260 | RegularVertex 0.065 0.27 0
261 | RegularVertex 0 0.27 0
262 | RegularVertex 0 0.27 0.146667
263 | RegularVertex 0 0.27 0.293333
264 | DependentVertex
265 | DependentVertex
266 | DependentVertex
267 | DependentVertex
268 | Junction 161 162 163 164 0.5
269 | RegularVertex 0 0.27 -0.293333
270 | RegularVertex 0 0.27 -0.146667
271 | DependentVertex
272 | DependentVertex
273 | DependentVertex
274 | DependentVertex
275 | Junction 147 195 196 161 0.5
276 | RegularVertex -0.13 0.27 0
277 | RegularVertex -0.065 0.27 0
278 | DependentVertex
279 | DependentVertex
280 | DependentVertex
281 | DependentVertex
--------------------------------------------------------------------------------
/templates/guitars/adjacencies.txt:
--------------------------------------------------------------------------------
1 | 2 edge 3, 3 edge 1, 4 edge 1, 10 edge 0, 16 edge 3, 19 edge 2, 6 edge 1, 11 edge 0, 15 edge 0, 18 edge 3
2 | 7 edge 2, 11 edge 3, 14 edge 0, 21 edge 1
3 | 0 edge 3, 10 edge 3, 12 edge 2, 13 edge 1, 15 edge 2, 16 edge 0, 17 edge 1, 18 edge 0
4 | 0 edge 2, 4 edge 2, 5 edge 1, 6 edge 1, 10 edge 3, 11 edge 3, 12 edge 0, 13 edge 0
5 | 0 edge 1, 3 edge 2, 6 edge 2, 8 edge 3, 19 edge 0
6 | 3 edge 0, 6 edge 3, 8 edge 2, 13 edge 0, 19 edge 1
7 | 3 edge 0, 4 edge 3, 5 edge 1, 8 edge 2, 0 edge 0, 13 edge 0
8 | 1 edge 2, 9 edge 0, 11 edge 1, 12 edge 1, 15 edge 1, 21 edge 3
9 | 4 edge 2, 5 edge 0, 6 edge 3, 19 edge 1
10 | 7 edge 2, 14 edge 0, 15 edge 1, 21 edge 3
11 | 0 edge 0, 2 edge 1, 3 edge 0, 11 edge 3, 14 edge 2, 15 edge 1
12 | 1 edge 1, 3 edge 3, 7 edge 2, 10 edge 3, 12 edge 3, 14 edge 0, 0 edge 3, 13 edge 3
13 | 2 edge 2, 3 edge 3, 7 edge 0, 11 edge 3, 13 edge 2, 15 edge 1
14 | 2 edge 1, 3 edge 3, 5 edge 3, 12 edge 0, 17 edge 1, 19 edge 2, 6 edge 3, 11 edge 0, 15 edge 0, 18 edge 1
15 | 1 edge 2, 9 edge 0, 10 edge 3, 11 edge 3, 15 edge 3, 21 edge 1
16 | 2 edge 1, 7 edge 2, 9 edge 3, 10 edge 1, 12 edge 1, 14 edge 0, 0 edge 1, 13 edge 1
17 | 0 edge 3, 2 edge 3, 18 edge 2, 19 edge 0, 20 edge 1
18 | 2 edge 3, 13 edge 2, 18 edge 3, 19 edge 1, 20 edge 0
19 | 2 edge 2, 16 edge 3, 17 edge 1, 20 edge 0, 0 edge 2, 13 edge 1
20 | 0 edge 3, 4 edge 3, 5 edge 1, 8 edge 0, 13 edge 1, 16 edge 3, 17 edge 1, 20 edge 2
21 | 16 edge 3, 17 edge 1, 18 edge 2, 19 edge 0
22 | 1 edge 2, 7 edge 1, 9 edge 0, 14 edge 3
23 |
--------------------------------------------------------------------------------
/templates/guitars/edges.txt:
--------------------------------------------------------------------------------
1 | 6 7 8 9
2 | 27 28 29 30
3 | 30 31 32 0
4 | 0 33 34 24
5 | 35 36 37 38
6 | 41 42 43 3
7 | 3 44 45 35
8 | 46 47 48 6
9 | 6 49 50 41
10 | 38 56 57 58
11 | 58 59 60 61
12 | 0 87 88 89
13 | 89 90 91 92
14 | 92 93 94 3
15 | 92 95 96 12
16 | 21 97 98 99
17 | 99 102 103 104
18 | 104 105 106 30
19 | 35 109 110 99
20 | 113 114 115 58
21 | 82 122 123 89
22 | 104 126 127 72
23 | 9 128 129 130
24 | 24 136 137 9
25 | 141 142 143 113
26 | 113 144 145 27
27 |
--------------------------------------------------------------------------------
/templates/guitars/junction_order.txt:
--------------------------------------------------------------------------------
1 | 89
2 | 104
3 | 92
4 | 99
5 | 35
6 | 30
7 | 113
8 | 58
9 | 27
10 | 3
11 | 0
12 | 38
13 | 6
14 | 9
15 | 24
16 | 41
17 |
--------------------------------------------------------------------------------
/templates/guitars/topology.txt:
--------------------------------------------------------------------------------
1 | [[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, ],
2 | [12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, ],
3 | [24, 25, 26, 27, 28, 29, 30, 31, 32, 0, 33, 34, ],
4 | [35, 36, 37, 38, 39, 40, 41, 42, 43, 3, 44, 45, ],
5 | [46, 47, 48, 6, 49, 50, 41, 51, 52, 53, 54, 55, ],
6 | [38, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, ],
7 | [41, 40, 39, 38, 66, 65, 64, 67, 68, 53, 52, 51, ],
8 | [69, 70, 71, 72, 73, 74, 21, 20, 19, 18, 75, 76, ],
9 | [64, 63, 62, 61, 77, 78, 46, 55, 54, 53, 68, 67, ],
10 | [79, 80, 81, 82, 83, 84, 72, 71, 70, 69, 85, 86, ],
11 | [3, 2, 1, 0, 87, 88, 89, 90, 91, 92, 93, 94, ],
12 | [92, 95, 96, 12, 23, 22, 21, 97, 98, 99, 100, 101, ],
13 | [99, 102, 103, 104, 105, 106, 30, 107, 108, 35, 109, 110, ],
14 | [35, 108, 107, 30, 111, 112, 113, 114, 115, 58, 116, 117, ],
15 | [82, 81, 80, 79, 118, 119, 15, 14, 13, 12, 120, 121, ],
16 | [82, 122, 123, 89, 124, 125, 104, 126, 127, 72, 84, 83, ],
17 | [9, 128, 129, 130, 131, 132, 133, 134, 135, 24, 136, 137, ],
18 | [138, 139, 140, 141, 142, 143, 113, 144, 145, 27, 146, 147, ],
19 | [133, 148, 149, 138, 147, 146, 27, 26, 25, 24, 135, 134, ],
20 | [46, 78, 77, 61, 150, 151, 141, 152, 153, 130, 154, 155, ],
21 | [130, 153, 152, 141, 140, 139, 138, 149, 148, 133, 132, 131, ],
22 | [79, 86, 85, 69, 76, 75, 18, 17, 16, 15, 119, 118, ]]
23 |
--------------------------------------------------------------------------------
/templates/guitars/vertices.txt:
--------------------------------------------------------------------------------
1 | Junction 89 124 125 104 0.375
2 | RegularVertex 0.01 -0.08 -0.005
3 | RegularVertex -0.01 -0.08 -0.005
4 | Junction 99 100 101 92 0.625
5 | RegularVertex -0.03 0.105 -0.005
6 | RegularVertex -0.03 0.28 -0.005
7 | Junction 130 154 155 46 0.8125
8 | DependentVertex
9 | DependentVertex
10 | Junction 130 154 155 46 0.0625
11 | RegularVertex 0.03 0.28 -0.005
12 | RegularVertex 0.03 0.105 -0.005
13 | RegularVertex -0.155 -0.08 -0.02
14 | RegularVertex -0.155 -0.21 -0.02
15 | RegularVertex -0.155 -0.34 -0.02
16 | RegularVertex -0.155 -0.475 -0.02
17 | RegularVertex -0.155 -0.475 -0.005
18 | RegularVertex -0.155 -0.475 0.005
19 | RegularVertex -0.155 -0.475 0.02
20 | RegularVertex -0.155 -0.34 0.02
21 | RegularVertex -0.155 -0.21 0.02
22 | RegularVertex -0.155 -0.08 0.02
23 | RegularVertex -0.155 -0.08 0.005
24 | RegularVertex -0.155 -0.08 -0.005
25 | Junction 9 10 11 0 0.297297
26 | RegularVertex 0.03 0.31 0.0
27 | RegularVertex 0.03 0.31 0.005
28 | Junction 30 111 112 113 0.702703
29 | DependentVertex
30 | DependentVertex
31 | Junction 89 124 125 104 0.875
32 | DependentVertex
33 | DependentVertex
34 | DependentVertex
35 | DependentVertex
36 | Junction 99 100 101 92 0.125
37 | DependentVertex
38 | DependentVertex
39 | Junction 58 116 117 35 0.297297
40 | RegularVertex -0.03 0.31 0.005
41 | RegularVertex -0.03 0.31 0.0
42 | Junction 3 4 5 6 0.702703
43 | DependentVertex
44 | DependentVertex
45 | DependentVertex
46 | DependentVertex
47 | RegularVertex -0.045 0.475 -0.005
48 | DependentVertex
49 | DependentVertex
50 | DependentVertex
51 | DependentVertex
52 | RegularVertex -0.035 0.31 -0.005
53 | RegularVertex -0.04 0.31 -0.005
54 | RegularVertex -0.045 0.31 -0.005
55 | RegularVertex -0.045 0.365 -0.005
56 | RegularVertex -0.045 0.42 -0.005
57 | DependentVertex
58 | DependentVertex
59 | Junction 61 150 151 141 0.1875
60 | DependentVertex
61 | DependentVertex
62 | RegularVertex -0.045 0.475 0.015
63 | RegularVertex -0.045 0.42 0.015
64 | RegularVertex -0.045 0.365 0.015
65 | RegularVertex -0.045 0.31 0.015
66 | RegularVertex -0.04 0.31 0.015
67 | RegularVertex -0.035 0.31 0.015
68 | RegularVertex -0.045 0.31 0.005
69 | RegularVertex -0.045 0.31 0.0
70 | RegularVertex 0.155 -0.475 0.02
71 | RegularVertex 0.155 -0.34 0.02
72 | RegularVertex 0.155 -0.21 0.02
73 | RegularVertex 0.155 -0.08 0.02
74 | RegularVertex 0.05 -0.08 0.02
75 | RegularVertex -0.05 -0.08 0.02
76 | RegularVertex -0.05 -0.475 0.02
77 | RegularVertex 0.05 -0.475 0.02
78 | RegularVertex -0.045 0.475 0.005
79 | RegularVertex -0.045 0.475 0.0
80 | RegularVertex 0.155 -0.475 -0.02
81 | RegularVertex 0.155 -0.34 -0.02
82 | RegularVertex 0.155 -0.21 -0.02
83 | RegularVertex 0.155 -0.08 -0.02
84 | RegularVertex 0.155 -0.08 -0.005
85 | RegularVertex 0.155 -0.08 0.005
86 | RegularVertex 0.155 -0.475 0.005
87 | RegularVertex 0.155 -0.475 -0.005
88 | DependentVertex
89 | DependentVertex
90 | Junction 12 120 121 82 0.596774
91 | DependentVertex
92 | DependentVertex
93 | Junction 12 120 121 82 0.403226
94 | DependentVertex
95 | DependentVertex
96 | DependentVertex
97 | DependentVertex
98 | DependentVertex
99 | DependentVertex
100 | Junction 72 73 74 21 0.596774
101 | RegularVertex -0.03 -0.08 0.005
102 | RegularVertex -0.03 -0.08 -0.005
103 | DependentVertex
104 | DependentVertex
105 | Junction 72 73 74 21 0.403226
106 | DependentVertex
107 | DependentVertex
108 | RegularVertex 0.01 -0.08 0.015
109 | RegularVertex -0.01 -0.08 0.015
110 | DependentVertex
111 | DependentVertex
112 | RegularVertex 0.03 0.105 0.015
113 | RegularVertex 0.03 0.28 0.015
114 | Junction 61 150 151 141 0.9375
115 | DependentVertex
116 | DependentVertex
117 | RegularVertex -0.03 0.28 0.015
118 | RegularVertex -0.03 0.105 0.015
119 | RegularVertex 0.05 -0.475 -0.02
120 | RegularVertex -0.05 -0.475 -0.02
121 | RegularVertex -0.05 -0.08 -0.02
122 | RegularVertex 0.05 -0.08 -0.02
123 | DependentVertex
124 | DependentVertex
125 | RegularVertex 0.03 -0.08 -0.005
126 | RegularVertex 0.03 -0.08 0.005
127 | DependentVertex
128 | DependentVertex
129 | DependentVertex
130 | DependentVertex
131 | RegularVertex 0.035 0.475 -0.005
132 | RegularVertex 0.035 0.42 -0.005
133 | RegularVertex 0.035 0.365 -0.005
134 | RegularVertex 0.035 0.31 -0.005
135 | RegularVertex 0.03 0.31 -0.005
136 | RegularVertex 0.03 0.31 -0.005
137 | DependentVertex
138 | DependentVertex
139 | RegularVertex 0.035 0.31 0.015
140 | RegularVertex 0.035 0.365 0.015
141 | RegularVertex 0.035 0.42 0.015
142 | RegularVertex 0.035 0.475 0.015
143 | DependentVertex
144 | DependentVertex
145 | DependentVertex
146 | DependentVertex
147 | RegularVertex 0.03 0.31 0.015
148 | RegularVertex 0.03 0.31 0.015
149 | RegularVertex 0.035 0.31 0.0
150 | RegularVertex 0.035 0.31 0.005
151 | RegularVertex -0.015 0.475 0.015
152 | RegularVertex 0.005 0.475 0.015
153 | RegularVertex 0.035 0.475 0.005
154 | RegularVertex 0.035 0.475 0.0
155 | RegularVertex 0.005 0.475 -0.005
156 | RegularVertex -0.015 0.475 -0.005
157 |
--------------------------------------------------------------------------------
/templates/guns/adjacencies.txt:
--------------------------------------------------------------------------------
1 | 1 edge 2, 2 edge 1, 3 edge 3, 11 edge 0, 15 edge 0, 6 edge 0
2 | 0 edge 3, 2 edge 0, 3 edge 2, 9 edge 1, 17 edge 2, 12 edge 0
3 | 0 edge 3, 1 edge 2, 6 edge 0, 9 edge 2, 11 edge 0, 12 edge 1
4 | 0 edge 2, 1 edge 3, 15 edge 1, 17 edge 0, 9 edge 0, 11 edge 1
5 | 7 edge 1, 10 edge 2, 16 edge 0, 18 edge 3, 12 edge 0, 13 edge 1
6 | 6 edge 0, 7 edge 3, 8 edge 1, 12 edge 0, 13 edge 2, 14 edge 2
7 | 2 edge 3, 5 edge 1, 8 edge 0, 11 edge 3, 12 edge 2, 0 edge 3
8 | 4 edge 3, 5 edge 1, 10 edge 3, 12 edge 0, 13 edge 2, 16 edge 0
9 | 5 edge 3, 6 edge 0, 11 edge 1, 14 edge 2
10 | 1 edge 3, 2 edge 0, 12 edge 0, 13 edge 2, 17 edge 3, 19 edge 1, 3 edge 3
11 | 4 edge 2, 7 edge 3, 13 edge 3, 18 edge 1, 19 edge 0
12 | 0 edge 1, 2 edge 1, 6 edge 0, 8 edge 3, 14 edge 2, 15 edge 1, 3 edge 1
13 | 2 edge 1, 5 edge 2, 6 edge 1, 7 edge 3, 9 edge 1, 16 edge 3, 19 edge 0, 1 edge 1, 4 edge 3
14 | 5 edge 2, 7 edge 1, 9 edge 3, 10 edge 1, 14 edge 3, 17 edge 3, 19 edge 0, 4 edge 1, 15 edge 3
15 | 5 edge 3, 8 edge 0, 11 edge 1, 13 edge 2, 15 edge 1, 17 edge 2
16 | 0 edge 0, 3 edge 0, 11 edge 3, 14 edge 2, 17 edge 1, 13 edge 1
17 | 4 edge 2, 7 edge 2, 12 edge 1, 18 edge 3, 19 edge 0
18 | 1 edge 2, 3 edge 1, 9 edge 2, 13 edge 3, 14 edge 0, 15 edge 0
19 | 4 edge 1, 10 edge 2, 16 edge 0, 19 edge 3
20 | 9 edge 0, 10 edge 3, 12 edge 1, 13 edge 3, 16 edge 1, 18 edge 2
21 |
--------------------------------------------------------------------------------
/templates/guns/edges.txt:
--------------------------------------------------------------------------------
1 | 0 1 2 3
2 | 14 15 16 17
3 | 3 20 21 22
4 | 22 23 24 14
5 | 45 57 58 59
6 | 59 60 61 22
7 | 33 64 65 42
8 | 51 66 67 36
9 | 14 73 74 75
10 | 78 79 80 81
11 | 84 85 86 87
12 | 36 90 91 84
13 | 54 92 93 3
14 | 96 97 98 70
15 | 99 100 101 75
16 | 59 104 105 42
17 | 78 108 109 84
18 | 51 112 113 114
19 | 119 120 121 114
20 | 114 122 123 48
21 | 119 126 127 96
22 | 96 128 129 0
23 | 130 131 132 99
24 | 99 133 134 33
25 | 17 137 138 81
26 | 81 139 140 119
27 |
--------------------------------------------------------------------------------
/templates/guns/junction_order.txt:
--------------------------------------------------------------------------------
1 | 84
2 | 114
3 | 119
4 | 36
5 | 99
6 | 59
7 | 33
8 | 14
9 | 81
10 | 17
11 | 22
12 | 3
13 | 96
14 | 0
15 |
--------------------------------------------------------------------------------
/templates/guns/topology.txt:
--------------------------------------------------------------------------------
1 | [[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, ],
2 | [6, 12, 13, 14, 15, 16, 17, 18, 19, 9, 8, 7, ],
3 | [3, 20, 21, 22, 23, 24, 14, 13, 12, 6, 5, 4, ],
4 | [17, 25, 26, 27, 28, 29, 0, 11, 10, 9, 19, 18, ],
5 | [30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, ],
6 | [42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, ],
7 | [54, 55, 56, 45, 57, 58, 59, 60, 61, 22, 62, 63, ],
8 | [33, 64, 65, 42, 53, 52, 51, 66, 67, 36, 35, 34, ],
9 | [45, 56, 55, 54, 68, 69, 70, 71, 72, 48, 47, 46, ],
10 | [14, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, ],
11 | [84, 85, 86, 87, 88, 89, 39, 38, 37, 36, 90, 91, ],
12 | [54, 92, 93, 3, 94, 95, 96, 97, 98, 70, 69, 68, ],
13 | [99, 100, 101, 75, 102, 103, 59, 104, 105, 42, 106, 107, ],
14 | [78, 108, 109, 84, 110, 111, 51, 112, 113, 114, 115, 116, ],
15 | [48, 72, 71, 70, 117, 118, 119, 120, 121, 114, 122, 123, ],
16 | [0, 29, 28, 27, 124, 125, 119, 126, 127, 96, 128, 129, ],
17 | [130, 131, 132, 99, 133, 134, 33, 32, 31, 30, 135, 136, ],
18 | [119, 125, 124, 27, 26, 25, 17, 137, 138, 81, 139, 140, ],
19 | [130, 136, 135, 30, 41, 40, 39, 89, 88, 87, 141, 142, ],
20 | [78, 77, 76, 75, 143, 144, 130, 142, 141, 87, 145, 146, ]]
21 |
--------------------------------------------------------------------------------
/templates/guns/vertices.txt:
--------------------------------------------------------------------------------
1 | Junction 3 94 95 96 0.833333
2 | DependentVertex
3 | DependentVertex
4 | Junction 22 62 63 54 0.301887
5 | RegularVertex 0.03 0.03 -0.075
6 | RegularVertex 0.03 0.005 -0.075
7 | RegularVertex 0.03 -0.015 -0.075
8 | RegularVertex 0.01 -0.015 -0.075
9 | RegularVertex 0.0 -0.015 -0.075
10 | RegularVertex -0.02 -0.015 -0.075
11 | RegularVertex -0.02 0.005 -0.075
12 | RegularVertex -0.02 0.03 -0.075
13 | RegularVertex 0.03 -0.015 -0.02
14 | RegularVertex 0.03 -0.015 0.03
15 | Junction 75 102 103 59 0.466667
16 | DependentVertex
17 | DependentVertex
18 | Junction 81 82 83 14 0.166667
19 | RegularVertex -0.02 -0.015 0.03
20 | RegularVertex -0.02 -0.015 -0.02
21 | DependentVertex
22 | DependentVertex
23 | Junction 75 102 103 59 0.622222
24 | DependentVertex
25 | DependentVertex
26 | RegularVertex -0.02 0.005 0.085
27 | RegularVertex -0.02 0.03 0.085
28 | RegularVertex -0.02 0.055 0.085
29 | RegularVertex -0.02 0.055 0.03
30 | RegularVertex -0.02 0.055 -0.02
31 | RegularVertex 0.03 0.135 0.445
32 | RegularVertex 0.03 0.135 0.44
33 | RegularVertex 0.03 0.135 0.435
34 | Junction 42 106 107 99 0.2
35 | RegularVertex 0.01 0.135 0.43
36 | RegularVertex -0.01 0.135 0.43
37 | Junction 84 110 111 51 0.8
38 | RegularVertex -0.03 0.135 0.435
39 | RegularVertex -0.03 0.135 0.44
40 | RegularVertex -0.03 0.135 0.445
41 | RegularVertex -0.01 0.135 0.445
42 | RegularVertex 0.01 0.135 0.445
43 | RegularVertex 0.03 0.225 0.43
44 | RegularVertex 0.03 0.225 0.135
45 | RegularVertex 0.03 0.225 -0.15
46 | RegularVertex 0.03 0.225 -0.445
47 | RegularVertex 0.01 0.225 -0.445
48 | RegularVertex -0.01 0.225 -0.445
49 | RegularVertex -0.03 0.225 -0.445
50 | RegularVertex -0.03 0.225 -0.15
51 | RegularVertex -0.03 0.225 0.135
52 | RegularVertex -0.03 0.225 0.43
53 | RegularVertex -0.01 0.225 0.43
54 | RegularVertex 0.01 0.225 0.43
55 | RegularVertex 0.03 0.055 -0.445
56 | RegularVertex 0.03 0.11 -0.445
57 | RegularVertex 0.03 0.165 -0.445
58 | DependentVertex
59 | DependentVertex
60 | Junction 42 43 44 45 0.394286
61 | DependentVertex
62 | DependentVertex
63 | RegularVertex 0.03 0.055 -0.09
64 | RegularVertex 0.03 0.055 -0.265
65 | DependentVertex
66 | DependentVertex
67 | DependentVertex
68 | DependentVertex
69 | RegularVertex 0.01 0.055 -0.445
70 | RegularVertex -0.01 0.055 -0.445
71 | RegularVertex -0.03 0.055 -0.445
72 | RegularVertex -0.03 0.11 -0.445
73 | RegularVertex -0.03 0.165 -0.445
74 | DependentVertex
75 | DependentVertex
76 | RegularVertex 0.03 -0.225 0.085
77 | RegularVertex 0.01 -0.225 0.085
78 | RegularVertex -0.01 -0.225 0.085
79 | RegularVertex -0.03 -0.225 0.085
80 | DependentVertex
81 | DependentVertex
82 | Junction 114 115 116 78 0.533333
83 | RegularVertex -0.01 -0.015 0.085
84 | RegularVertex 0.01 -0.015 0.085
85 | Junction 87 145 146 78 0.0416667
86 | DependentVertex
87 | DependentVertex
88 | RegularVertex -0.03 -0.225 0.445
89 | RegularVertex -0.03 -0.105 0.445
90 | RegularVertex -0.03 0.015 0.445
91 | DependentVertex
92 | DependentVertex
93 | DependentVertex
94 | DependentVertex
95 | RegularVertex 0.01 0.055 -0.075
96 | RegularVertex -0.01 0.055 -0.075
97 | Junction 70 117 118 119 0.698113
98 | DependentVertex
99 | DependentVertex
100 | Junction 75 143 144 130 0.958333
101 | DependentVertex
102 | DependentVertex
103 | RegularVertex 0.03 -0.075 0.085
104 | RegularVertex 0.03 0.075 0.085
105 | DependentVertex
106 | DependentVertex
107 | RegularVertex 0.03 0.075 0.43
108 | RegularVertex 0.03 -0.075 0.43
109 | DependentVertex
110 | DependentVertex
111 | RegularVertex -0.03 -0.075 0.43
112 | RegularVertex -0.03 0.075 0.43
113 | DependentVertex
114 | DependentVertex
115 | Junction 48 49 50 51 0.605714
116 | RegularVertex -0.03 0.075 0.085
117 | RegularVertex -0.03 -0.075 0.085
118 | RegularVertex -0.03 0.055 -0.265
119 | RegularVertex -0.03 0.055 -0.09
120 | Junction 114 115 116 78 0.377778
121 | DependentVertex
122 | DependentVertex
123 | DependentVertex
124 | DependentVertex
125 | RegularVertex -0.02 0.055 0.085
126 | RegularVertex -0.025 0.055 0.085
127 | DependentVertex
128 | DependentVertex
129 | DependentVertex
130 | DependentVertex
131 | RegularVertex 0.03 -0.225 0.445
132 | DependentVertex
133 | DependentVertex
134 | DependentVertex
135 | DependentVertex
136 | RegularVertex 0.03 0.015 0.445
137 | RegularVertex 0.03 -0.105 0.445
138 | DependentVertex
139 | DependentVertex
140 | DependentVertex
141 | DependentVertex
142 | RegularVertex -0.01 -0.225 0.445
143 | RegularVertex 0.01 -0.225 0.445
144 | RegularVertex 0.03 -0.225 0.205
145 | RegularVertex 0.03 -0.225 0.325
146 | RegularVertex -0.03 -0.225 0.325
147 | RegularVertex -0.03 -0.225 0.205
148 |
--------------------------------------------------------------------------------
/templates/knives/adjacencies.txt:
--------------------------------------------------------------------------------
1 | 2 edge 2, 6 edge 0, 8 edge 1, 9 edge 0, 10 edge 1, 11 edge 3,
2 | 2 edge 3, 4 edge 1, 7 edge 1, 10 edge 0, 11 edge 2, 12 edge 2,
3 | 0 edge 3, 1 edge 1, 10 edge 0, 11 edge 2,
4 | 4 edge 0, 7 edge 3, 12 edge 2, 13 edge 1,
5 | 1 edge 3, 3 edge 1, 7 edge 2, 10 edge 3, 13 edge 0,
6 | 6 edge 2, 8 edge 1, 9 edge 3, 13 edge 0,
7 | 0 edge 1, 5 edge 3, 8 edge 0, 9 edge 2, 10 edge 1, 11 edge 2,
8 | 1 edge 3, 3 edge 1, 4 edge 0, 10 edge 0, 11 edge 3, 12 edge 2,
9 | 0 edge 2, 5 edge 3, 6 edge 2, 10 edge 1, 13 edge 0,
10 | 0 edge 0, 5 edge 2, 6 edge 3, 11 edge 0, 13 edge 1,
11 | 0 edge 3, 1 edge 1, 2 edge 2, 4 edge 1, 6 edge 3, 7 edge 1, 8 edge 3, 13 edge 0,
12 | 0 edge 1, 1 edge 3, 2 edge 2, 6 edge 1, 7 edge 3, 9 edge 1, 12 edge 3, 13 edge 0,
13 | 1 edge 3, 3 edge 0, 7 edge 3, 11 edge 2, 13 edge 1,
14 | 3 edge 2, 4 edge 3, 5 edge 0, 8 edge 3, 9 edge 1, 10 edge 3, 11 edge 1, 12 edge 1,
15 |
--------------------------------------------------------------------------------
/templates/knives/edges.txt:
--------------------------------------------------------------------------------
1 | 3 4 5 6
2 | 9 10 11 0
3 | 12 13 14 15
4 | 18 19 20 21
5 | 40 41 42 31
6 | 15 45 46 40
7 | 50 65 66 67
8 | 67 68 69 3
9 | 0 70 71 72
10 | 72 73 74 47
11 | 67 75 76 40
12 | 81 82 83 72
13 | 34 88 89 81
14 | 81 90 91 18
15 |
--------------------------------------------------------------------------------
/templates/knives/junction_order.txt:
--------------------------------------------------------------------------------
1 | 81
2 | 72
3 | 18
4 | 67
5 | 40
6 | 0
7 | 3
8 | 15
9 |
--------------------------------------------------------------------------------
/templates/knives/topology.txt:
--------------------------------------------------------------------------------
1 | [[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, ],
2 | [12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, ],
3 | [6, 24, 25, 12, 23, 22, 21, 26, 27, 9, 8, 7, ],
4 | [28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, ],
5 | [40, 41, 42, 31, 30, 29, 28, 43, 44, 15, 45, 46, ],
6 | [47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, ],
7 | [53, 59, 60, 3, 2, 1, 0, 61, 62, 56, 55, 54, ],
8 | [15, 44, 43, 28, 39, 38, 37, 63, 64, 18, 17, 16, ],
9 | [50, 65, 66, 67, 68, 69, 3, 60, 59, 53, 52, 51, ],
10 | [0, 70, 71, 72, 73, 74, 47, 58, 57, 56, 62, 61, ],
11 | [67, 75, 76, 40, 77, 78, 12, 25, 24, 6, 79, 80, ],
12 | [81, 82, 83, 72, 84, 85, 9, 27, 26, 21, 86, 87, ],
13 | [37, 36, 35, 34, 88, 89, 81, 90, 91, 18, 64, 63, ],
14 | [50, 49, 48, 47, 92, 93, 34, 33, 32, 31, 94, 95, ]]
15 |
--------------------------------------------------------------------------------
/templates/knives/vertices.txt:
--------------------------------------------------------------------------------
1 | Junction 72 84 85 9 0.631579
2 | RegularVertex -0.005 -0.14 -0.055
3 | RegularVertex 0.005 -0.14 -0.055
4 | Junction 6 79 80 67 0.368421
5 | DependentVertex
6 | DependentVertex
7 | RegularVertex 0.015 -0.49 -0.055
8 | RegularVertex 0.005 -0.49 -0.055
9 | RegularVertex -0.005 -0.49 -0.055
10 | RegularVertex -0.015 -0.49 -0.055
11 | DependentVertex
12 | DependentVertex
13 | RegularVertex 0.015 -0.49 0.055
14 | DependentVertex
15 | DependentVertex
16 | Junction 40 77 78 12 0.631579
17 | RegularVertex 0.005 -0.14 0.055
18 | RegularVertex -0.005 -0.14 0.055
19 | Junction 21 86 87 81 0.368421
20 | DependentVertex
21 | DependentVertex
22 | RegularVertex -0.015 -0.49 0.055
23 | RegularVertex -0.005 -0.49 0.055
24 | RegularVertex 0.005 -0.49 0.055
25 | RegularVertex 0.015 -0.49 -0.015
26 | RegularVertex 0.015 -0.49 0.015
27 | RegularVertex -0.015 -0.49 0.015
28 | RegularVertex -0.015 -0.49 -0.015
29 | RegularVertex 0.015 -0.14 0.11
30 | RegularVertex 0.015 0.06 0.11
31 | RegularVertex 0.015 0.26 0.11
32 | RegularVertex 0.015 0.46 0.11
33 | RegularVertex 0.005 0.46 0.11
34 | RegularVertex -0.005 0.46 0.11
35 | RegularVertex -0.015 0.46 0.11
36 | RegularVertex -0.015 0.26 0.11
37 | RegularVertex -0.015 0.06 0.11
38 | RegularVertex -0.015 -0.14 0.11
39 | RegularVertex -0.005 -0.14 0.11
40 | RegularVertex 0.005 -0.14 0.11
41 | Junction 31 94 95 50 0.25
42 | DependentVertex
43 | DependentVertex
44 | RegularVertex 0.015 -0.14 0.09
45 | RegularVertex 0.015 -0.14 0.07
46 | DependentVertex
47 | DependentVertex
48 | RegularVertex -0.015 0.46 -0.11
49 | RegularVertex -0.005 0.46 -0.11
50 | RegularVertex 0.005 0.46 -0.11
51 | RegularVertex 0.015 0.46 -0.11
52 | RegularVertex 0.015 0.26 -0.11
53 | RegularVertex 0.015 0.06 -0.11
54 | RegularVertex 0.015 -0.14 -0.11
55 | RegularVertex 0.005 -0.14 -0.11
56 | RegularVertex -0.005 -0.14 -0.11
57 | RegularVertex -0.015 -0.14 -0.11
58 | RegularVertex -0.015 0.06 -0.11
59 | RegularVertex -0.015 0.26 -0.11
60 | RegularVertex 0.015 -0.14 -0.09
61 | RegularVertex 0.015 -0.14 -0.07
62 | RegularVertex -0.015 -0.14 -0.07
63 | RegularVertex -0.015 -0.14 -0.09
64 | RegularVertex -0.015 -0.14 0.09
65 | RegularVertex -0.015 -0.14 0.07
66 | DependentVertex
67 | DependentVertex
68 | Junction 31 94 95 50 0.75
69 | DependentVertex
70 | DependentVertex
71 | DependentVertex
72 | DependentVertex
73 | Junction 47 92 93 34 0.25
74 | DependentVertex
75 | DependentVertex
76 | DependentVertex
77 | DependentVertex
78 | RegularVertex 0.015 0.14 0.055
79 | RegularVertex 0.015 -0.17 0.055
80 | RegularVertex 0.015 -0.17 -0.055
81 | RegularVertex 0.015 0.14 -0.055
82 | Junction 47 92 93 34 0.75
83 | DependentVertex
84 | DependentVertex
85 | RegularVertex -0.015 0.14 -0.055
86 | RegularVertex -0.015 -0.17 -0.055
87 | RegularVertex -0.015 -0.17 0.055
88 | RegularVertex -0.015 0.14 0.055
89 | DependentVertex
90 | DependentVertex
91 | DependentVertex
92 | DependentVertex
93 | RegularVertex -0.015 0.46 -0.035
94 | RegularVertex -0.015 0.46 0.035
95 | RegularVertex 0.015 0.46 0.035
96 | RegularVertex 0.015 0.46 -0.035
97 |
--------------------------------------------------------------------------------
/templates/mugs/adjacencies.txt:
--------------------------------------------------------------------------------
1 | 4 edge 3, 13 edge 2, 21 edge 1, 22 edge 0,
2 | 2 edge 1, 8 edge 3, 11 edge 2, 12 edge 0, 15 edge 3, 17 edge 2,
3 | 1 edge 1, 3 edge 1, 9 edge 1, 11 edge 1, 12 edge 2, 14 edge 3, 17 edge 1, 19 edge 1, 21 edge 0, 26 edge 1, 27 edge 3, 28 edge 1, 31 edge 1,
4 | 2 edge 1, 7 edge 3, 15 edge 0, 23 edge 2, 24 edge 2, 25 edge 3, 28 edge 0, 31 edge 1,
5 | 0 edge 1, 5 edge 3, 6 edge 3, 10 edge 3, 12 edge 3, 13 edge 2, 15 edge 0, 22 edge 0, 30 edge 3,
6 | 4 edge 1, 6 edge 1, 14 edge 2, 16 edge 3, 29 edge 2, 30 edge 0,
7 | 4 edge 0, 5 edge 3, 13 edge 1, 14 edge 2, 29 edge 3, 30 edge 0,
8 | 3 edge 0, 15 edge 3, 19 edge 3, 24 edge 1, 25 edge 1, 26 edge 2, 28 edge 0,
9 | 1 edge 0, 9 edge 2, 15 edge 3, 17 edge 0, 24 edge 2, 25 edge 1, 28 edge 3,
10 | 2 edge 1, 8 edge 2, 11 edge 0, 15 edge 2, 23 edge 0, 24 edge 3, 25 edge 3, 28 edge 1,
11 | 4 edge 0, 12 edge 3, 14 edge 3, 16 edge 1, 29 edge 2, 30 edge 0,
12 | 1 edge 1, 2 edge 1, 9 edge 2, 17 edge 0, 23 edge 3, 24 edge 3, 28 edge 2,
13 | 1 edge 3, 2 edge 3, 4 edge 0, 10 edge 1, 14 edge 2, 15 edge 3, 22 edge 0, 27 edge 3, 29 edge 2, 30 edge 1,
14 | 0 edge 0, 4 edge 3, 6 edge 3, 14 edge 3, 20 edge 2, 21 edge 1,
15 | 2 edge 1, 5 edge 1, 6 edge 1, 10 edge 1, 12 edge 1, 13 edge 2, 20 edge 3, 27 edge 0, 29 edge 1,
16 | 1 edge 3, 3 edge 3, 4 edge 2, 7 edge 3, 8 edge 3, 9 edge 3, 12 edge 2, 17 edge 3, 19 edge 3, 21 edge 0, 22 edge 1, 26 edge 3, 28 edge 3,
17 | 5 edge 1, 10 edge 3, 29 edge 2, 30 edge 0,
18 | 1 edge 0, 2 edge 1, 8 edge 3, 11 edge 1, 15 edge 0, 18 edge 2, 23 edge 1, 25 edge 3,
19 | 17 edge 2, 23 edge 3, 25 edge 1, 26 edge 0,
20 | 2 edge 1, 7 edge 0, 15 edge 3, 21 edge 2, 26 edge 0, 31 edge 1,
21 | 13 edge 2, 14 edge 1, 21 edge 3, 27 edge 0,
22 | 0 edge 3, 2 edge 0, 13 edge 2, 15 edge 0, 19 edge 0, 20 edge 1, 22 edge 0, 27 edge 0,
23 | 0 edge 1, 4 edge 2, 12 edge 3, 15 edge 3, 21 edge 0,
24 | 3 edge 3, 9 edge 3, 11 edge 3, 17 edge 2, 18 edge 1, 24 edge 3, 26 edge 0, 31 edge 3,
25 | 3 edge 3, 7 edge 3, 8 edge 2, 9 edge 1, 11 edge 1, 23 edge 0, 25 edge 2, 31 edge 0,
26 | 3 edge 1, 7 edge 1, 8 edge 1, 9 edge 1, 17 edge 2, 18 edge 3, 24 edge 1, 26 edge 0,
27 | 2 edge 0, 7 edge 1, 15 edge 1, 18 edge 2, 19 edge 0, 23 edge 3, 25 edge 1, 31 edge 3,
28 | 2 edge 1, 12 edge 2, 14 edge 2, 20 edge 3, 21 edge 0,
29 | 2 edge 3, 3 edge 0, 7 edge 1, 8 edge 2, 9 edge 2, 11 edge 3, 15 edge 1, 31 edge 0,
30 | 5 edge 1, 6 edge 2, 10 edge 3, 12 edge 3, 14 edge 2, 16 edge 0,
31 | 4 edge 2, 5 edge 3, 6 edge 3, 10 edge 1, 12 edge 2, 16 edge 0,
32 | 2 edge 1, 3 edge 0, 19 edge 2, 23 edge 3, 24 edge 0, 26 edge 2, 28 edge 1,
33 |
--------------------------------------------------------------------------------
/templates/mugs/edges.txt:
--------------------------------------------------------------------------------
1 | 12 13 14 15
2 | 15 16 17 18
3 | 21 22 23 12
4 | 24 25 26 27
5 | 15 30 31 32
6 | 9 50 51 52
7 | 58 67 68 52
8 | 52 69 70 71
9 | 71 72 73 61
10 | 44 74 75 76
11 | 76 77 78 79
12 | 79 80 81 35
13 | 21 82 83 84
14 | 84 85 86 87
15 | 90 91 92 21
16 | 113 114 115 18
17 | 18 116 117 96
18 | 93 118 119 113
19 | 47 120 121 101
20 | 110 122 123 32
21 | 71 139 140 131
22 | 143 144 145 146
23 | 47 149 150 12
24 | 175 176 177 27
25 | 27 178 179 143
26 | 143 180 181 79
27 | 146 189 190 3
28 | 191 192 193 165
29 | 159 194 195 113
30 | 41 198 199 93
31 | 87 200 201 44
32 | 168 202 203 76
33 | 84 206 207 162
34 | 182 212 213 24
35 | 35 214 215 90
36 | 96 216 217 38
37 | 61 218 219 110
38 | 101 220 221 58
39 | 38 222 223 175
40 | 175 224 225 191
41 | 191 226 227 41
42 |
--------------------------------------------------------------------------------
/templates/mugs/junction_order.txt:
--------------------------------------------------------------------------------
1 | 24
2 | 146
3 | 71
4 | 61
5 | 110
6 | 52
7 | 101
8 | 58
9 | 143
10 | 12
11 | 27
12 | 15
13 | 38
14 | 35
15 | 90
16 | 96
17 | 175
18 | 79
19 | 21
20 | 18
21 | 76
22 | 84
23 | 44
24 | 191
25 | 113
26 | 41
27 | 93
28 | 87
29 |
--------------------------------------------------------------------------------
/templates/mugs/topology.txt:
--------------------------------------------------------------------------------
1 | [[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, ],
2 | [12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, ],
3 | [24, 25, 26, 27, 28, 29, 15, 30, 31, 32, 33, 34, ],
4 | [35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, ],
5 | [47, 48, 49, 0, 11, 10, 9, 50, 51, 52, 53, 54, ],
6 | [55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, ],
7 | [58, 67, 68, 52, 69, 70, 71, 72, 73, 61, 60, 59, ],
8 | [35, 46, 45, 44, 74, 75, 76, 77, 78, 79, 80, 81, ],
9 | [21, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, ],
10 | [93, 94, 95, 96, 97, 98, 90, 89, 88, 87, 99, 100, ],
11 | [101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, ],
12 | [113, 114, 115, 18, 116, 117, 96, 95, 94, 93, 118, 119, ],
13 | [47, 120, 121, 101, 112, 111, 110, 122, 123, 32, 124, 125, ],
14 | [9, 8, 7, 6, 126, 127, 128, 129, 130, 131, 132, 133, ],
15 | [134, 135, 136, 32, 137, 138, 71, 139, 140, 131, 141, 142, ],
16 | [143, 144, 145, 146, 147, 148, 47, 149, 150, 12, 151, 152, ],
17 | [104, 153, 154, 55, 66, 65, 64, 155, 156, 107, 106, 105, ],
18 | [21, 20, 19, 18, 157, 158, 159, 160, 161, 162, 163, 164, ],
19 | [165, 166, 167, 168, 169, 170, 162, 161, 160, 159, 171, 172, ],
20 | [79, 173, 174, 175, 176, 177, 27, 178, 179, 143, 180, 181, ],
21 | [182, 183, 184, 134, 142, 141, 131, 130, 129, 128, 185, 186, ],
22 | [3, 187, 188, 182, 186, 185, 128, 127, 126, 6, 5, 4, ],
23 | [146, 189, 190, 3, 2, 1, 0, 49, 48, 47, 148, 147, ],
24 | [191, 192, 193, 165, 172, 171, 159, 194, 195, 113, 196, 197, ],
25 | [41, 198, 199, 93, 100, 99, 87, 200, 201, 44, 43, 42, ],
26 | [168, 202, 203, 76, 204, 205, 84, 206, 207, 162, 170, 169, ],
27 | [175, 174, 173, 79, 208, 209, 168, 167, 166, 165, 210, 211, ],
28 | [182, 212, 213, 24, 34, 33, 32, 136, 135, 134, 184, 183, ],
29 | [38, 37, 36, 35, 214, 215, 90, 98, 97, 96, 216, 217, ],
30 | [107, 156, 155, 64, 63, 62, 61, 218, 219, 110, 109, 108, ],
31 | [55, 154, 153, 104, 103, 102, 101, 220, 221, 58, 57, 56, ],
32 | [41, 40, 39, 38, 222, 223, 175, 224, 225, 191, 226, 227, ]]
33 |
--------------------------------------------------------------------------------
/templates/mugs/vertices.txt:
--------------------------------------------------------------------------------
1 | RegularVertex -0.27 0.225 -0.19
2 | RegularVertex -0.27 0.07 -0.19
3 | RegularVertex -0.27 -0.075 -0.19
4 | RegularVertex -0.27 -0.225 -0.19
5 | RegularVertex -0.27 -0.225 -0.01
6 | RegularVertex -0.27 -0.225 0.165
7 | RegularVertex -0.27 -0.225 0.345
8 | RegularVertex -0.27 -0.075 0.345
9 | RegularVertex -0.27 0.07 0.345
10 | RegularVertex -0.27 0.225 0.345
11 | RegularVertex -0.27 0.225 0.165
12 | RegularVertex -0.27 0.225 -0.01
13 | Junction 32 124 125 47 0.454996
14 | DependentVertex
15 | DependentVertex
16 | Junction 32 124 125 47 0.323909
17 | DependentVertex
18 | DependentVertex
19 | Junction 27 28 29 15 0.842097
20 | RegularVertex 0.04 0.15 -0.19
21 | RegularVertex 0.02 0.15 -0.19
22 | Junction 12 151 152 143 0.157903
23 | DependentVertex
24 | DependentVertex
25 | Junction 3 187 188 182 0.865753
26 | DependentVertex
27 | DependentVertex
28 | Junction 3 187 188 182 0.628811
29 | RegularVertex 0.055 -0.075 -0.19
30 | RegularVertex 0.055 0.07 -0.19
31 | DependentVertex
32 | DependentVertex
33 | RegularVertex 0.18 0.225 -0.19
34 | RegularVertex 0.18 0.07 -0.19
35 | RegularVertex 0.18 -0.075 -0.19
36 | Junction 12 151 152 143 0.710697
37 | RegularVertex 0.02 -0.095 -0.19
38 | RegularVertex 0.04 -0.095 -0.19
39 | Junction 27 28 29 15 0.289303
40 | RegularVertex 0.055 -0.095 -0.225
41 | RegularVertex 0.055 -0.095 -0.26
42 | Junction 113 196 197 191 0.79212
43 | RegularVertex 0.04 -0.095 -0.295
44 | RegularVertex 0.02 -0.095 -0.295
45 | Junction 76 204 205 84 0.20788
46 | RegularVertex 0.005 -0.095 -0.26
47 | RegularVertex 0.005 -0.095 -0.225
48 | RegularVertex -0.2 0.225 -0.19
49 | RegularVertex -0.22 0.225 -0.19
50 | RegularVertex -0.245 0.225 -0.19
51 | DependentVertex
52 | DependentVertex
53 | Junction 131 132 133 9 0.865753
54 | RegularVertex -0.2 0.225 0.165
55 | RegularVertex -0.2 0.225 -0.01
56 | RegularVertex -0.2 0.01 0.275
57 | RegularVertex -0.2 0.08 0.275
58 | RegularVertex -0.2 0.155 0.275
59 | Junction 52 53 54 47 0.128944
60 | RegularVertex -0.07 0.225 0.275
61 | RegularVertex 0.05 0.225 0.275
62 | Junction 32 137 138 71 0.871056
63 | RegularVertex 0.18 0.155 0.275
64 | RegularVertex 0.18 0.08 0.275
65 | RegularVertex 0.18 0.01 0.275
66 | RegularVertex 0.05 0.01 0.275
67 | RegularVertex -0.07 0.01 0.275
68 | DependentVertex
69 | DependentVertex
70 | DependentVertex
71 | DependentVertex
72 | Junction 131 132 133 9 0.134247
73 | DependentVertex
74 | DependentVertex
75 | DependentVertex
76 | DependentVertex
77 | Junction 79 208 209 168 0.673499
78 | DependentVertex
79 | DependentVertex
80 | Junction 12 151 152 143 0.855769
81 | DependentVertex
82 | DependentVertex
83 | DependentVertex
84 | DependentVertex
85 | Junction 162 163 164 21 0.326501
86 | DependentVertex
87 | DependentVertex
88 | Junction 76 204 205 84 0.79212
89 | RegularVertex 0.005 0.085 -0.26
90 | RegularVertex 0.005 0.085 -0.225
91 | Junction 12 151 152 143 0.302975
92 | DependentVertex
93 | DependentVertex
94 | Junction 113 196 197 191 0.20788
95 | RegularVertex 0.055 0.085 -0.26
96 | RegularVertex 0.055 0.085 -0.225
97 | Junction 27 28 29 15 0.697025
98 | RegularVertex 0.04 0.085 -0.19
99 | RegularVertex 0.02 0.085 -0.19
100 | RegularVertex 0.02 0.085 -0.295
101 | RegularVertex 0.04 0.085 -0.295
102 | Junction 52 53 54 47 0.871056
103 | RegularVertex -0.2 0.155 -0.12
104 | RegularVertex -0.2 0.08 -0.12
105 | RegularVertex -0.2 0.01 -0.12
106 | RegularVertex -0.07 0.01 -0.12
107 | RegularVertex 0.05 0.01 -0.12
108 | RegularVertex 0.18 0.01 -0.12
109 | RegularVertex 0.18 0.08 -0.12
110 | RegularVertex 0.18 0.155 -0.12
111 | Junction 32 137 138 71 0.128944
112 | RegularVertex 0.05 0.225 -0.12
113 | RegularVertex -0.07 0.225 -0.12
114 | Junction 18 157 158 159 0.673499
115 | DependentVertex
116 | DependentVertex
117 | DependentVertex
118 | DependentVertex
119 | DependentVertex
120 | DependentVertex
121 | DependentVertex
122 | DependentVertex
123 | DependentVertex
124 | DependentVertex
125 | RegularVertex 0.05 0.225 -0.19
126 | RegularVertex -0.07 0.225 -0.19
127 | RegularVertex -0.095 -0.225 0.345
128 | RegularVertex 0.075 -0.225 0.345
129 | RegularVertex 0.25 -0.225 0.345
130 | RegularVertex 0.25 -0.075 0.345
131 | RegularVertex 0.25 0.07 0.345
132 | RegularVertex 0.25 0.225 0.345
133 | RegularVertex 0.075 0.225 0.345
134 | RegularVertex -0.095 0.225 0.345
135 | RegularVertex 0.25 0.225 -0.19
136 | RegularVertex 0.225 0.225 -0.19
137 | RegularVertex 0.2 0.225 -0.19
138 | RegularVertex 0.18 0.225 -0.01
139 | RegularVertex 0.18 0.225 0.165
140 | DependentVertex
141 | DependentVertex
142 | RegularVertex 0.25 0.225 0.165
143 | RegularVertex 0.25 0.225 -0.01
144 | Junction 3 187 188 182 0.53292
145 | DependentVertex
146 | DependentVertex
147 | Junction 3 187 188 182 0.134247
148 | RegularVertex -0.2 -0.075 -0.19
149 | RegularVertex -0.2 0.07 -0.19
150 | DependentVertex
151 | DependentVertex
152 | RegularVertex 0.005 0.07 -0.19
153 | RegularVertex 0.005 -0.075 -0.19
154 | RegularVertex -0.2 0.01 0.01
155 | RegularVertex -0.2 0.01 0.145
156 | RegularVertex 0.18 0.01 0.145
157 | RegularVertex 0.18 0.01 0.01
158 | RegularVertex 0.055 0.15 -0.24
159 | RegularVertex 0.055 0.15 -0.295
160 | RegularVertex 0.055 0.15 -0.345
161 | RegularVertex 0.04 0.15 -0.345
162 | RegularVertex 0.02 0.15 -0.345
163 | RegularVertex 0.005 0.15 -0.345
164 | RegularVertex 0.005 0.15 -0.295
165 | RegularVertex 0.005 0.15 -0.24
166 | RegularVertex 0.055 -0.16 -0.345
167 | RegularVertex 0.04 -0.16 -0.345
168 | RegularVertex 0.02 -0.16 -0.345
169 | RegularVertex 0.005 -0.16 -0.345
170 | RegularVertex 0.005 -0.055 -0.345
171 | RegularVertex 0.005 0.045 -0.345
172 | RegularVertex 0.055 0.045 -0.345
173 | RegularVertex 0.055 -0.055 -0.345
174 | RegularVertex 0.02 -0.16 -0.19
175 | RegularVertex 0.04 -0.16 -0.19
176 | Junction 27 28 29 15 0.144231
177 | DependentVertex
178 | DependentVertex
179 | DependentVertex
180 | DependentVertex
181 | DependentVertex
182 | DependentVertex
183 | RegularVertex 0.25 -0.225 -0.19
184 | RegularVertex 0.25 -0.075 -0.19
185 | RegularVertex 0.25 0.07 -0.19
186 | RegularVertex 0.25 -0.225 0.165
187 | RegularVertex 0.25 -0.225 -0.01
188 | RegularVertex -0.095 -0.225 -0.19
189 | RegularVertex 0.075 -0.225 -0.19
190 | DependentVertex
191 | DependentVertex
192 | Junction 165 210 211 175 0.326501
193 | DependentVertex
194 | DependentVertex
195 | DependentVertex
196 | DependentVertex
197 | RegularVertex 0.055 0.045 -0.295
198 | RegularVertex 0.055 -0.055 -0.295
199 | DependentVertex
200 | DependentVertex
201 | DependentVertex
202 | DependentVertex
203 | DependentVertex
204 | DependentVertex
205 | RegularVertex 0.005 -0.055 -0.295
206 | RegularVertex 0.005 0.045 -0.295
207 | DependentVertex
208 | DependentVertex
209 | RegularVertex 0.005 -0.16 -0.24
210 | RegularVertex 0.005 -0.16 -0.295
211 | RegularVertex 0.055 -0.16 -0.295
212 | RegularVertex 0.055 -0.16 -0.24
213 | DependentVertex
214 | DependentVertex
215 | DependentVertex
216 | DependentVertex
217 | DependentVertex
218 | DependentVertex
219 | DependentVertex
220 | DependentVertex
221 | DependentVertex
222 | DependentVertex
223 | DependentVertex
224 | DependentVertex
225 | DependentVertex
226 | DependentVertex
227 | DependentVertex
228 | DependentVertex
--------------------------------------------------------------------------------
/templates/sphere24/adjacencies.txt:
--------------------------------------------------------------------------------
1 | 1 edge 1, 2 edge 2, 3 edge 2, 14 edge 1, 15 edge 0, 21 edge 3, 22 edge 3,
2 | 0 edge 3, 2 edge 2, 3 edge 3, 14 edge 0, 15 edge 0, 16 edge 1, 19 edge 2,
3 | 0 edge 0, 1 edge 0, 3 edge 3, 4 edge 3, 5 edge 2, 16 edge 1, 19 edge 1,
4 | 0 edge 0, 1 edge 1, 2 edge 1, 4 edge 2, 5 edge 2, 21 edge 0, 22 edge 3,
5 | 2 edge 1, 3 edge 0, 5 edge 1, 6 edge 2, 7 edge 2, 22 edge 3, 23 edge 3,
6 | 2 edge 0, 3 edge 0, 4 edge 3, 6 edge 2, 7 edge 3, 18 edge 2, 19 edge 1,
7 | 4 edge 0, 5 edge 0, 7 edge 3, 8 edge 3, 9 edge 2, 18 edge 1, 19 edge 1,
8 | 4 edge 0, 5 edge 1, 6 edge 1, 8 edge 2, 9 edge 2, 22 edge 0, 23 edge 3,
9 | 6 edge 1, 7 edge 0, 9 edge 1, 10 edge 2, 11 edge 2, 20 edge 3, 23 edge 3,
10 | 6 edge 0, 7 edge 0, 8 edge 3, 10 edge 2, 11 edge 3, 17 edge 2, 18 edge 1,
11 | 8 edge 0, 9 edge 0, 11 edge 3, 12 edge 3, 13 edge 2, 17 edge 1, 18 edge 1,
12 | 8 edge 0, 9 edge 1, 10 edge 1, 12 edge 2, 13 edge 2, 20 edge 3, 23 edge 0,
13 | 10 edge 1, 11 edge 0, 13 edge 1, 14 edge 2, 15 edge 2, 20 edge 3, 21 edge 3,
14 | 10 edge 0, 11 edge 0, 12 edge 3, 14 edge 2, 15 edge 3, 16 edge 2, 17 edge 1,
15 | 0 edge 3, 1 edge 2, 12 edge 0, 13 edge 0, 15 edge 3, 16 edge 1, 17 edge 1,
16 | 0 edge 2, 1 edge 2, 12 edge 0, 13 edge 1, 14 edge 1, 20 edge 0, 21 edge 3,
17 | 1 edge 3, 2 edge 3, 13 edge 1, 14 edge 0, 17 edge 1, 18 edge 2, 19 edge 2,
18 | 9 edge 2, 10 edge 1, 13 edge 0, 14 edge 0, 16 edge 3, 18 edge 2, 19 edge 3,
19 | 5 edge 3, 6 edge 2, 9 edge 1, 10 edge 1, 16 edge 0, 17 edge 0, 19 edge 3,
20 | 1 edge 0, 2 edge 3, 5 edge 2, 6 edge 2, 16 edge 0, 17 edge 1, 18 edge 1,
21 | 8 edge 3, 11 edge 3, 12 edge 0, 15 edge 1, 21 edge 1, 22 edge 2, 23 edge 2,
22 | 0 edge 1, 3 edge 2, 12 edge 0, 15 edge 0, 20 edge 3, 22 edge 2, 23 edge 3,
23 | 0 edge 1, 3 edge 1, 4 edge 2, 7 edge 3, 20 edge 0, 21 edge 0, 23 edge 3,
24 | 4 edge 2, 7 edge 2, 8 edge 3, 11 edge 0, 20 edge 0, 21 edge 1, 22 edge 1,
25 |
--------------------------------------------------------------------------------
/templates/sphere24/edges.txt:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dmsm/LearningPatches/12384b3e1e93cdbbdbb5a63fec8b4f7631eafe50/templates/sphere24/edges.txt
--------------------------------------------------------------------------------
/templates/sphere24/junction_order.txt:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dmsm/LearningPatches/12384b3e1e93cdbbdbb5a63fec8b4f7631eafe50/templates/sphere24/junction_order.txt
--------------------------------------------------------------------------------
/templates/sphere24/topology.txt:
--------------------------------------------------------------------------------
1 | [[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, ],
2 | [3, 12, 13, 14, 15, 16, 17, 18, 19, 6, 5, 4, ],
3 | [6, 19, 18, 17, 20, 21, 22, 23, 24, 25, 26, 27, ],
4 | [9, 8, 7, 6, 27, 26, 25, 28, 29, 30, 31, 32, ],
5 | [30, 29, 28, 25, 33, 34, 35, 36, 37, 38, 39, 40, ],
6 | [25, 24, 23, 22, 41, 42, 43, 44, 45, 35, 34, 33, ],
7 | [35, 45, 44, 43, 46, 47, 48, 49, 50, 51, 52, 53, ],
8 | [38, 37, 36, 35, 53, 52, 51, 54, 55, 56, 57, 58, ],
9 | [56, 55, 54, 51, 59, 60, 61, 62, 63, 64, 65, 66, ],
10 | [51, 50, 49, 48, 67, 68, 69, 70, 71, 61, 60, 59, ],
11 | [61, 71, 70, 69, 72, 73, 74, 75, 76, 77, 78, 79, ],
12 | [64, 63, 62, 61, 79, 78, 77, 80, 81, 82, 83, 84, ],
13 | [82, 81, 80, 77, 85, 86, 87, 88, 89, 90, 91, 92, ],
14 | [77, 76, 75, 74, 93, 94, 95, 96, 97, 87, 86, 85, ],
15 | [87, 97, 96, 95, 98, 99, 14, 13, 12, 3, 100, 101, ],
16 | [90, 89, 88, 87, 101, 100, 3, 2, 1, 0, 102, 103, ],
17 | [14, 99, 98, 95, 104, 105, 106, 107, 108, 17, 16, 15, ],
18 | [95, 94, 93, 74, 73, 72, 69, 109, 110, 106, 105, 104, ],
19 | [106, 110, 109, 69, 68, 67, 48, 47, 46, 43, 111, 112, ],
20 | [17, 108, 107, 106, 112, 111, 43, 42, 41, 22, 21, 20, ],
21 | [82, 92, 91, 90, 113, 114, 115, 116, 117, 64, 84, 83, ],
22 | [90, 103, 102, 0, 11, 10, 9, 118, 119, 115, 114, 113, ],
23 | [115, 119, 118, 9, 32, 31, 30, 40, 39, 38, 120, 121, ],
24 | [64, 117, 116, 115, 121, 120, 38, 58, 57, 56, 66, 65, ]]
25 |
--------------------------------------------------------------------------------
/templates/sphere24/vertices.txt:
--------------------------------------------------------------------------------
1 | RegularVertex -0.16 -0.16 0.16
2 | RegularVertex -0.11 -0.18 0.18
3 | RegularVertex -0.05 -0.2 0.2
4 | RegularVertex 0.0 -0.22 0.22
5 | RegularVertex 0.0 -0.15 0.25
6 | RegularVertex 0.0 -0.07 0.27
7 | RegularVertex 0.0 0.0 0.3
8 | RegularVertex -0.07 0.0 0.27
9 | RegularVertex -0.15 0.0 0.25
10 | RegularVertex -0.22 0.0 0.22
11 | RegularVertex -0.2 -0.05 0.2
12 | RegularVertex -0.18 -0.11 0.18
13 | RegularVertex 0.05 -0.2 0.2
14 | RegularVertex 0.11 -0.18 0.18
15 | RegularVertex 0.16 -0.16 0.16
16 | RegularVertex 0.18 -0.11 0.18
17 | RegularVertex 0.2 -0.05 0.2
18 | RegularVertex 0.22 0.0 0.22
19 | RegularVertex 0.15 0.0 0.25
20 | RegularVertex 0.07 0.0 0.27
21 | RegularVertex 0.2 0.05 0.2
22 | RegularVertex 0.18 0.11 0.18
23 | RegularVertex 0.16 0.16 0.16
24 | RegularVertex 0.11 0.18 0.18
25 | RegularVertex 0.05 0.2 0.2
26 | RegularVertex 0.0 0.22 0.22
27 | RegularVertex 0.0 0.15 0.25
28 | RegularVertex 0.0 0.07 0.27
29 | RegularVertex -0.05 0.2 0.2
30 | RegularVertex -0.11 0.18 0.18
31 | RegularVertex -0.16 0.16 0.16
32 | RegularVertex -0.18 0.11 0.18
33 | RegularVertex -0.2 0.05 0.2
34 | RegularVertex 0.0 0.25 0.15
35 | RegularVertex 0.0 0.27 0.07
36 | RegularVertex 0.0 0.3 0.0
37 | RegularVertex -0.07 0.27 0.0
38 | RegularVertex -0.15 0.25 0.0
39 | RegularVertex -0.22 0.22 0.0
40 | RegularVertex -0.2 0.2 0.05
41 | RegularVertex -0.18 0.18 0.11
42 | RegularVertex 0.18 0.18 0.11
43 | RegularVertex 0.2 0.2 0.05
44 | RegularVertex 0.22 0.22 0.0
45 | RegularVertex 0.15 0.25 0.0
46 | RegularVertex 0.07 0.27 0.0
47 | RegularVertex 0.2 0.2 -0.05
48 | RegularVertex 0.18 0.18 -0.11
49 | RegularVertex 0.16 0.16 -0.16
50 | RegularVertex 0.11 0.18 -0.18
51 | RegularVertex 0.05 0.2 -0.2
52 | RegularVertex 0.0 0.22 -0.22
53 | RegularVertex 0.0 0.25 -0.15
54 | RegularVertex 0.0 0.27 -0.07
55 | RegularVertex -0.05 0.2 -0.2
56 | RegularVertex -0.11 0.18 -0.18
57 | RegularVertex -0.16 0.16 -0.16
58 | RegularVertex -0.18 0.18 -0.11
59 | RegularVertex -0.2 0.2 -0.05
60 | RegularVertex 0.0 0.15 -0.25
61 | RegularVertex 0.0 0.07 -0.27
62 | RegularVertex 0.0 0.0 -0.3
63 | RegularVertex -0.07 0.0 -0.27
64 | RegularVertex -0.15 0.0 -0.25
65 | RegularVertex -0.22 0.0 -0.22
66 | RegularVertex -0.2 0.05 -0.2
67 | RegularVertex -0.18 0.11 -0.18
68 | RegularVertex 0.18 0.11 -0.18
69 | RegularVertex 0.2 0.05 -0.2
70 | RegularVertex 0.22 0.0 -0.22
71 | RegularVertex 0.15 0.0 -0.25
72 | RegularVertex 0.07 0.0 -0.27
73 | RegularVertex 0.2 -0.05 -0.2
74 | RegularVertex 0.18 -0.11 -0.18
75 | RegularVertex 0.16 -0.16 -0.16
76 | RegularVertex 0.11 -0.18 -0.18
77 | RegularVertex 0.05 -0.2 -0.2
78 | RegularVertex 0.0 -0.22 -0.22
79 | RegularVertex 0.0 -0.15 -0.25
80 | RegularVertex 0.0 -0.07 -0.27
81 | RegularVertex -0.05 -0.2 -0.2
82 | RegularVertex -0.11 -0.18 -0.18
83 | RegularVertex -0.16 -0.16 -0.16
84 | RegularVertex -0.18 -0.11 -0.18
85 | RegularVertex -0.2 -0.05 -0.2
86 | RegularVertex 0.0 -0.25 -0.15
87 | RegularVertex 0.0 -0.27 -0.07
88 | RegularVertex 0.0 -0.3 0.0
89 | RegularVertex -0.07 -0.27 0.0
90 | RegularVertex -0.15 -0.25 0.0
91 | RegularVertex -0.22 -0.22 0.0
92 | RegularVertex -0.2 -0.2 -0.05
93 | RegularVertex -0.18 -0.18 -0.11
94 | RegularVertex 0.18 -0.18 -0.11
95 | RegularVertex 0.2 -0.2 -0.05
96 | RegularVertex 0.22 -0.22 0.0
97 | RegularVertex 0.15 -0.25 0.0
98 | RegularVertex 0.07 -0.27 0.0
99 | RegularVertex 0.2 -0.2 0.05
100 | RegularVertex 0.18 -0.18 0.11
101 | RegularVertex 0.0 -0.25 0.15
102 | RegularVertex 0.0 -0.27 0.07
103 | RegularVertex -0.18 -0.18 0.11
104 | RegularVertex -0.2 -0.2 0.05
105 | RegularVertex 0.25 -0.15 0.0
106 | RegularVertex 0.27 -0.07 0.0
107 | RegularVertex 0.3 0.0 0.0
108 | RegularVertex 0.27 0.0 0.07
109 | RegularVertex 0.25 0.0 0.15
110 | RegularVertex 0.25 0.0 -0.15
111 | RegularVertex 0.27 0.0 -0.07
112 | RegularVertex 0.25 0.15 0.0
113 | RegularVertex 0.27 0.07 0.0
114 | RegularVertex -0.25 -0.15 0.0
115 | RegularVertex -0.27 -0.07 0.0
116 | RegularVertex -0.3 0.0 0.0
117 | RegularVertex -0.27 0.0 -0.07
118 | RegularVertex -0.25 0.0 -0.15
119 | RegularVertex -0.25 0.0 0.15
120 | RegularVertex -0.27 0.0 0.07
121 | RegularVertex -0.25 0.15 0.0
122 | RegularVertex -0.27 0.07 0.0
123 |
--------------------------------------------------------------------------------
/templates/sphere54/adjacencies.txt:
--------------------------------------------------------------------------------
1 | 1 edge 3, 2 edge 2, 6 edge 0, 7 edge 0, 8 edge 2, 18 edge 1, 24 edge 1,
2 | 0 edge 1, 2 edge 2, 6 edge 1, 7 edge 0, 19 edge 3, 20 edge 3, 25 edge 0,
3 | 0 edge 3, 1 edge 2, 8 edge 0, 18 edge 0, 19 edge 2, 20 edge 1, 26 edge 1,
4 | 9 edge 0, 21 edge 3, 27 edge 0, 37 edge 1, 38 edge 2, 43 edge 1, 44 edge 3,
5 | 10 edge 0, 14 edge 2, 22 edge 1, 28 edge 1, 32 edge 2, 36 edge 3, 42 edge 0,
6 | 11 edge 0, 12 edge 1, 13 edge 2, 23 edge 3, 29 edge 0, 30 edge 1, 31 edge 3,
7 | 0 edge 2, 1 edge 3, 7 edge 3, 12 edge 0, 13 edge 0, 18 edge 2, 24 edge 1, 30 edge 1,
8 | 0 edge 2, 1 edge 2, 6 edge 1, 12 edge 1, 13 edge 0, 19 edge 3, 25 edge 3, 31 edge 0,
9 | 0 edge 3, 2 edge 2, 14 edge 0, 18 edge 3, 20 edge 2, 26 edge 1, 32 edge 1, 36 edge 0,
10 | 3 edge 2, 15 edge 0, 21 edge 3, 27 edge 3, 33 edge 0, 37 edge 2, 43 edge 1, 49 edge 1,
11 | 4 edge 2, 16 edge 0, 22 edge 2, 28 edge 1, 34 edge 1, 36 edge 3, 42 edge 3, 48 edge 0,
12 | 5 edge 2, 12 edge 2, 17 edge 0, 23 edge 3, 29 edge 3, 30 edge 1, 35 edge 0, 48 edge 1,
13 | 5 edge 0, 6 edge 2, 7 edge 3, 11 edge 1, 13 edge 3, 24 edge 2, 30 edge 1,
14 | 5 edge 0, 6 edge 2, 7 edge 2, 12 edge 1, 23 edge 0, 25 edge 3, 31 edge 3,
15 | 4 edge 0, 8 edge 2, 18 edge 3, 22 edge 1, 26 edge 2, 32 edge 1, 36 edge 3,
16 | 9 edge 2, 27 edge 3, 33 edge 3, 41 edge 0, 43 edge 2, 47 edge 0, 49 edge 1,
17 | 10 edge 2, 17 edge 0, 28 edge 2, 34 edge 1, 35 edge 1, 42 edge 3, 48 edge 3,
18 | 11 edge 2, 16 edge 0, 29 edge 3, 30 edge 2, 34 edge 0, 35 edge 3, 48 edge 1,
19 | 0 edge 3, 2 edge 3, 6 edge 0, 8 edge 2, 14 edge 2, 24 edge 0, 36 edge 1, 42 edge 1,
20 | 1 edge 1, 2 edge 2, 7 edge 1, 20 edge 2, 25 edge 0, 37 edge 3, 38 edge 3, 43 edge 0,
21 | 1 edge 3, 2 edge 3, 8 edge 0, 19 edge 2, 26 edge 0, 37 edge 2, 38 edge 1, 44 edge 1,
22 | 3 edge 1, 9 edge 1, 27 edge 0, 38 edge 2, 39 edge 3, 44 edge 2, 45 edge 0, 50 edge 3,
23 | 4 edge 3, 10 edge 0, 14 edge 3, 28 edge 0, 32 edge 2, 40 edge 1, 46 edge 1, 50 edge 2,
24 | 5 edge 1, 11 edge 1, 13 edge 2, 29 edge 0, 31 edge 2, 41 edge 3, 47 edge 0, 49 edge 3,
25 | 0 edge 3, 6 edge 3, 12 edge 0, 18 edge 2, 30 edge 0, 36 edge 2, 42 edge 1, 48 edge 1,
26 | 1 edge 2, 7 edge 1, 13 edge 1, 19 edge 2, 31 edge 0, 37 edge 3, 43 edge 3, 49 edge 0,
27 | 2 edge 3, 8 edge 3, 14 edge 0, 20 edge 2, 32 edge 0, 38 edge 2, 44 edge 1, 50 edge 1,
28 | 3 edge 2, 9 edge 1, 15 edge 1, 21 edge 2, 33 edge 0, 39 edge 3, 45 edge 3, 51 edge 0,
29 | 4 edge 3, 10 edge 3, 16 edge 0, 22 edge 2, 34 edge 0, 40 edge 2, 46 edge 1, 52 edge 1,
30 | 5 edge 2, 11 edge 1, 17 edge 1, 23 edge 2, 35 edge 0, 41 edge 3, 47 edge 3, 53 edge 0,
31 | 5 edge 0, 6 edge 3, 11 edge 0, 12 edge 3, 17 edge 1, 24 edge 2, 42 edge 2, 48 edge 1,
32 | 5 edge 1, 7 edge 2, 13 edge 1, 23 edge 0, 25 edge 2, 41 edge 0, 43 edge 3, 49 edge 3,
33 | 4 edge 0, 8 edge 3, 14 edge 3, 22 edge 0, 26 edge 2, 40 edge 1, 44 edge 2, 50 edge 1,
34 | 9 edge 2, 15 edge 1, 27 edge 2, 41 edge 1, 45 edge 3, 47 edge 0, 51 edge 3, 53 edge 0,
35 | 10 edge 3, 16 edge 3, 17 edge 0, 28 edge 2, 35 edge 0, 46 edge 2, 52 edge 1, 53 edge 1,
36 | 11 edge 2, 16 edge 1, 17 edge 1, 29 edge 2, 34 edge 0, 47 edge 3, 52 edge 0, 53 edge 3,
37 | 4 edge 1, 8 edge 3, 10 edge 1, 14 edge 2, 18 edge 3, 24 edge 0, 42 edge 0,
38 | 3 edge 3, 9 edge 0, 19 edge 1, 20 edge 2, 25 edge 1, 38 edge 2, 43 edge 0,
39 | 3 edge 1, 19 edge 3, 20 edge 3, 21 edge 1, 26 edge 0, 37 edge 2, 44 edge 0,
40 | 21 edge 1, 27 edge 1, 40 edge 3, 44 edge 2, 45 edge 0, 46 edge 0, 50 edge 2,
41 | 22 edge 3, 28 edge 0, 32 edge 3, 39 edge 1, 45 edge 1, 46 edge 0, 50 edge 2,
42 | 15 edge 3, 23 edge 1, 29 edge 1, 31 edge 2, 33 edge 0, 47 edge 0, 49 edge 2,
43 | 4 edge 2, 10 edge 1, 16 edge 1, 18 edge 3, 24 edge 3, 30 edge 0, 36 edge 2, 48 edge 0,
44 | 3 edge 3, 9 edge 3, 15 edge 0, 19 edge 2, 25 edge 1, 31 edge 1, 37 edge 2, 49 edge 0,
45 | 3 edge 2, 20 edge 3, 21 edge 1, 26 edge 3, 32 edge 0, 38 edge 2, 39 edge 1, 50 edge 0,
46 | 21 edge 2, 27 edge 1, 33 edge 1, 39 edge 2, 40 edge 3, 46 edge 3, 51 edge 0, 52 edge 0,
47 | 22 edge 3, 28 edge 3, 34 edge 0, 39 edge 2, 40 edge 2, 45 edge 1, 51 edge 1, 52 edge 0,
48 | 15 edge 3, 23 edge 2, 29 edge 1, 33 edge 3, 35 edge 1, 41 edge 2, 51 edge 0, 53 edge 0,
49 | 10 edge 2, 11 edge 0, 16 edge 1, 17 edge 0, 24 edge 3, 30 edge 3, 42 edge 2,
50 | 9 edge 3, 15 edge 3, 23 edge 1, 25 edge 2, 31 edge 1, 41 edge 0, 43 edge 2,
51 | 21 edge 2, 22 edge 0, 26 edge 3, 32 edge 3, 39 edge 1, 40 edge 0, 44 edge 2,
52 | 27 edge 2, 33 edge 1, 45 edge 2, 46 edge 3, 47 edge 1, 52 edge 3, 53 edge 0,
53 | 28 edge 3, 34 edge 3, 35 edge 0, 45 edge 2, 46 edge 2, 51 edge 1, 53 edge 0,
54 | 29 edge 2, 33 edge 3, 34 edge 1, 35 edge 1, 47 edge 2, 51 edge 3, 52 edge 0,
55 |
--------------------------------------------------------------------------------
/templates/sphere54/edges.txt:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dmsm/LearningPatches/12384b3e1e93cdbbdbb5a63fec8b4f7631eafe50/templates/sphere54/edges.txt
--------------------------------------------------------------------------------
/templates/sphere54/junction_order.txt:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dmsm/LearningPatches/12384b3e1e93cdbbdbb5a63fec8b4f7631eafe50/templates/sphere54/junction_order.txt
--------------------------------------------------------------------------------
/templates/sphere54/topology.txt:
--------------------------------------------------------------------------------
1 | [[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, ],
2 | [12, 13, 14, 0, 11, 10, 9, 15, 16, 17, 18, 19, ],
3 | [6, 20, 21, 22, 23, 24, 17, 16, 15, 9, 8, 7, ],
4 | [25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, ],
5 | [37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, ],
6 | [49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, ],
7 | [61, 62, 63, 64, 65, 66, 3, 2, 1, 0, 67, 68, ],
8 | [69, 70, 71, 61, 68, 67, 0, 14, 13, 12, 72, 73, ],
9 | [74, 75, 76, 77, 78, 79, 22, 21, 20, 6, 80, 81, ],
10 | [82, 83, 84, 85, 86, 87, 28, 27, 26, 25, 88, 89, ],
11 | [90, 91, 92, 93, 94, 95, 40, 39, 38, 37, 96, 97, ],
12 | [98, 99, 100, 101, 102, 103, 52, 51, 50, 49, 104, 105, ],
13 | [55, 54, 53, 52, 106, 107, 64, 63, 62, 61, 108, 109, ],
14 | [58, 57, 56, 55, 109, 108, 61, 71, 70, 69, 110, 111, ],
15 | [46, 45, 44, 43, 112, 113, 77, 76, 75, 74, 114, 115, ],
16 | [116, 117, 118, 119, 120, 121, 85, 84, 83, 82, 122, 123, ],
17 | [124, 125, 126, 127, 128, 129, 93, 92, 91, 90, 130, 131, ],
18 | [127, 126, 125, 124, 132, 133, 101, 100, 99, 98, 134, 135, ],
19 | [3, 136, 137, 138, 139, 140, 74, 81, 80, 6, 5, 4, ],
20 | [141, 142, 143, 12, 19, 18, 17, 144, 145, 146, 147, 148, ],
21 | [22, 149, 150, 151, 152, 153, 146, 145, 144, 17, 24, 23, ],
22 | [154, 155, 156, 25, 36, 35, 34, 157, 158, 159, 160, 161, ],
23 | [40, 162, 163, 164, 165, 166, 167, 168, 169, 43, 42, 41, ],
24 | [170, 171, 172, 49, 60, 59, 58, 173, 174, 175, 176, 177, ],
25 | [64, 178, 179, 180, 181, 182, 138, 137, 136, 3, 66, 65, ],
26 | [183, 184, 185, 69, 73, 72, 12, 143, 142, 141, 186, 187, ],
27 | [77, 188, 189, 190, 191, 192, 151, 150, 149, 22, 79, 78, ],
28 | [193, 194, 195, 82, 89, 88, 25, 156, 155, 154, 196, 197, ],
29 | [93, 198, 199, 200, 201, 202, 164, 163, 162, 40, 95, 94, ],
30 | [203, 204, 205, 98, 105, 104, 49, 172, 171, 170, 206, 207, ],
31 | [52, 103, 102, 101, 208, 209, 180, 179, 178, 64, 107, 106, ],
32 | [175, 174, 173, 58, 111, 110, 69, 185, 184, 183, 210, 211, ],
33 | [43, 169, 168, 167, 212, 213, 190, 189, 188, 77, 113, 112, ],
34 | [214, 215, 216, 116, 123, 122, 82, 195, 194, 193, 217, 218, ],
35 | [127, 219, 220, 221, 222, 223, 200, 199, 198, 93, 129, 128, ],
36 | [221, 220, 219, 127, 135, 134, 98, 205, 204, 203, 224, 225, ],
37 | [138, 226, 227, 37, 48, 47, 46, 115, 114, 74, 140, 139, ],
38 | [28, 228, 229, 141, 148, 147, 146, 230, 231, 31, 30, 29, ],
39 | [151, 232, 233, 34, 33, 32, 31, 231, 230, 146, 153, 152, ],
40 | [234, 235, 236, 154, 161, 160, 159, 237, 238, 239, 240, 241, ],
41 | [164, 242, 243, 234, 241, 240, 239, 244, 245, 167, 166, 165, ],
42 | [116, 246, 247, 170, 177, 176, 175, 248, 249, 119, 118, 117, ],
43 | [180, 250, 251, 90, 97, 96, 37, 227, 226, 138, 182, 181, ],
44 | [85, 252, 253, 183, 187, 186, 141, 229, 228, 28, 87, 86, ],
45 | [190, 254, 255, 159, 158, 157, 34, 233, 232, 151, 192, 191, ],
46 | [256, 257, 258, 193, 197, 196, 154, 236, 235, 234, 259, 260, ],
47 | [200, 261, 262, 256, 260, 259, 234, 243, 242, 164, 202, 201, ],
48 | [214, 263, 264, 203, 207, 206, 170, 247, 246, 116, 216, 215, ],
49 | [101, 133, 132, 124, 131, 130, 90, 251, 250, 180, 209, 208, ],
50 | [119, 249, 248, 175, 211, 210, 183, 253, 252, 85, 121, 120, ],
51 | [167, 245, 244, 239, 238, 237, 159, 255, 254, 190, 213, 212, ],
52 | [265, 266, 267, 214, 218, 217, 193, 258, 257, 256, 268, 269, ],
53 | [221, 270, 271, 265, 269, 268, 256, 262, 261, 200, 223, 222, ],
54 | [265, 271, 270, 221, 225, 224, 203, 264, 263, 214, 267, 266, ]]
55 |
--------------------------------------------------------------------------------
/templates/sphere54/vertices.txt:
--------------------------------------------------------------------------------
1 | RegularVertex -0.205 -0.205 -0.065
2 | RegularVertex -0.225 -0.165 -0.075
3 | RegularVertex -0.245 -0.125 -0.08
4 | RegularVertex -0.27 -0.09 -0.09
5 | RegularVertex -0.245 -0.08 -0.125
6 | RegularVertex -0.225 -0.075 -0.165
7 | RegularVertex -0.205 -0.065 -0.205
8 | RegularVertex -0.195 -0.1 -0.195
9 | RegularVertex -0.18 -0.135 -0.18
10 | RegularVertex -0.17 -0.17 -0.17
11 | RegularVertex -0.18 -0.18 -0.135
12 | RegularVertex -0.195 -0.195 -0.1
13 | RegularVertex -0.09 -0.27 -0.09
14 | RegularVertex -0.125 -0.245 -0.08
15 | RegularVertex -0.165 -0.225 -0.075
16 | RegularVertex -0.135 -0.18 -0.18
17 | RegularVertex -0.1 -0.195 -0.195
18 | RegularVertex -0.065 -0.205 -0.205
19 | RegularVertex -0.075 -0.225 -0.165
20 | RegularVertex -0.08 -0.245 -0.125
21 | RegularVertex -0.165 -0.075 -0.225
22 | RegularVertex -0.125 -0.08 -0.245
23 | RegularVertex -0.09 -0.09 -0.27
24 | RegularVertex -0.08 -0.125 -0.245
25 | RegularVertex -0.075 -0.165 -0.225
26 | RegularVertex 0.27 -0.09 -0.09
27 | RegularVertex 0.245 -0.125 -0.08
28 | RegularVertex 0.225 -0.165 -0.075
29 | RegularVertex 0.205 -0.205 -0.065
30 | RegularVertex 0.195 -0.195 -0.1
31 | RegularVertex 0.18 -0.18 -0.135
32 | RegularVertex 0.17 -0.17 -0.17
33 | RegularVertex 0.18 -0.135 -0.18
34 | RegularVertex 0.195 -0.1 -0.195
35 | RegularVertex 0.205 -0.065 -0.205
36 | RegularVertex 0.225 -0.075 -0.165
37 | RegularVertex 0.245 -0.08 -0.125
38 | RegularVertex -0.205 0.205 -0.065
39 | RegularVertex -0.165 0.225 -0.075
40 | RegularVertex -0.125 0.245 -0.08
41 | RegularVertex -0.09 0.27 -0.09
42 | RegularVertex -0.08 0.245 -0.125
43 | RegularVertex -0.075 0.225 -0.165
44 | RegularVertex -0.065 0.205 -0.205
45 | RegularVertex -0.1 0.195 -0.195
46 | RegularVertex -0.135 0.18 -0.18
47 | RegularVertex -0.17 0.17 -0.17
48 | RegularVertex -0.18 0.18 -0.135
49 | RegularVertex -0.195 0.195 -0.1
50 | RegularVertex -0.09 -0.09 0.27
51 | RegularVertex -0.125 -0.08 0.245
52 | RegularVertex -0.165 -0.075 0.225
53 | RegularVertex -0.205 -0.065 0.205
54 | RegularVertex -0.195 -0.1 0.195
55 | RegularVertex -0.18 -0.135 0.18
56 | RegularVertex -0.17 -0.17 0.17
57 | RegularVertex -0.135 -0.18 0.18
58 | RegularVertex -0.1 -0.195 0.195
59 | RegularVertex -0.065 -0.205 0.205
60 | RegularVertex -0.075 -0.165 0.225
61 | RegularVertex -0.08 -0.125 0.245
62 | RegularVertex -0.205 -0.205 0.065
63 | RegularVertex -0.225 -0.165 0.075
64 | RegularVertex -0.245 -0.125 0.08
65 | RegularVertex -0.27 -0.09 0.09
66 | RegularVertex -0.27 -0.09 0.03
67 | RegularVertex -0.27 -0.09 -0.03
68 | RegularVertex -0.205 -0.205 -0.02
69 | RegularVertex -0.205 -0.205 0.02
70 | RegularVertex -0.09 -0.27 0.09
71 | RegularVertex -0.125 -0.245 0.08
72 | RegularVertex -0.165 -0.225 0.075
73 | RegularVertex -0.09 -0.27 -0.03
74 | RegularVertex -0.09 -0.27 0.03
75 | RegularVertex -0.205 0.065 -0.205
76 | RegularVertex -0.165 0.075 -0.225
77 | RegularVertex -0.125 0.08 -0.245
78 | RegularVertex -0.09 0.09 -0.27
79 | RegularVertex -0.09 0.03 -0.27
80 | RegularVertex -0.09 -0.03 -0.27
81 | RegularVertex -0.205 -0.02 -0.205
82 | RegularVertex -0.205 0.02 -0.205
83 | RegularVertex 0.27 -0.09 0.09
84 | RegularVertex 0.245 -0.125 0.08
85 | RegularVertex 0.225 -0.165 0.075
86 | RegularVertex 0.205 -0.205 0.065
87 | RegularVertex 0.205 -0.205 0.02
88 | RegularVertex 0.205 -0.205 -0.02
89 | RegularVertex 0.27 -0.09 -0.03
90 | RegularVertex 0.27 -0.09 0.03
91 | RegularVertex -0.205 0.205 0.065
92 | RegularVertex -0.165 0.225 0.075
93 | RegularVertex -0.125 0.245 0.08
94 | RegularVertex -0.09 0.27 0.09
95 | RegularVertex -0.09 0.27 0.03
96 | RegularVertex -0.09 0.27 -0.03
97 | RegularVertex -0.205 0.205 -0.02
98 | RegularVertex -0.205 0.205 0.02
99 | RegularVertex -0.09 0.09 0.27
100 | RegularVertex -0.125 0.08 0.245
101 | RegularVertex -0.165 0.075 0.225
102 | RegularVertex -0.205 0.065 0.205
103 | RegularVertex -0.205 0.02 0.205
104 | RegularVertex -0.205 -0.02 0.205
105 | RegularVertex -0.09 -0.03 0.27
106 | RegularVertex -0.09 0.03 0.27
107 | RegularVertex -0.225 -0.075 0.165
108 | RegularVertex -0.245 -0.08 0.125
109 | RegularVertex -0.195 -0.195 0.1
110 | RegularVertex -0.18 -0.18 0.135
111 | RegularVertex -0.08 -0.245 0.125
112 | RegularVertex -0.075 -0.225 0.165
113 | RegularVertex -0.075 0.165 -0.225
114 | RegularVertex -0.08 0.125 -0.245
115 | RegularVertex -0.195 0.1 -0.195
116 | RegularVertex -0.18 0.135 -0.18
117 | RegularVertex 0.205 -0.065 0.205
118 | RegularVertex 0.195 -0.1 0.195
119 | RegularVertex 0.18 -0.135 0.18
120 | RegularVertex 0.17 -0.17 0.17
121 | RegularVertex 0.18 -0.18 0.135
122 | RegularVertex 0.195 -0.195 0.1
123 | RegularVertex 0.245 -0.08 0.125
124 | RegularVertex 0.225 -0.075 0.165
125 | RegularVertex -0.17 0.17 0.17
126 | RegularVertex -0.135 0.18 0.18
127 | RegularVertex -0.1 0.195 0.195
128 | RegularVertex -0.065 0.205 0.205
129 | RegularVertex -0.075 0.225 0.165
130 | RegularVertex -0.08 0.245 0.125
131 | RegularVertex -0.195 0.195 0.1
132 | RegularVertex -0.18 0.18 0.135
133 | RegularVertex -0.18 0.135 0.18
134 | RegularVertex -0.195 0.1 0.195
135 | RegularVertex -0.08 0.125 0.245
136 | RegularVertex -0.075 0.165 0.225
137 | RegularVertex -0.27 -0.03 -0.09
138 | RegularVertex -0.27 0.03 -0.09
139 | RegularVertex -0.27 0.09 -0.09
140 | RegularVertex -0.245 0.08 -0.125
141 | RegularVertex -0.225 0.075 -0.165
142 | RegularVertex 0.09 -0.27 -0.09
143 | RegularVertex 0.03 -0.27 -0.09
144 | RegularVertex -0.03 -0.27 -0.09
145 | RegularVertex -0.02 -0.205 -0.205
146 | RegularVertex 0.02 -0.205 -0.205
147 | RegularVertex 0.065 -0.205 -0.205
148 | RegularVertex 0.075 -0.225 -0.165
149 | RegularVertex 0.08 -0.245 -0.125
150 | RegularVertex -0.03 -0.09 -0.27
151 | RegularVertex 0.03 -0.09 -0.27
152 | RegularVertex 0.09 -0.09 -0.27
153 | RegularVertex 0.08 -0.125 -0.245
154 | RegularVertex 0.075 -0.165 -0.225
155 | RegularVertex 0.27 0.09 -0.09
156 | RegularVertex 0.27 0.03 -0.09
157 | RegularVertex 0.27 -0.03 -0.09
158 | RegularVertex 0.205 -0.02 -0.205
159 | RegularVertex 0.205 0.02 -0.205
160 | RegularVertex 0.205 0.065 -0.205
161 | RegularVertex 0.225 0.075 -0.165
162 | RegularVertex 0.245 0.08 -0.125
163 | RegularVertex -0.03 0.27 -0.09
164 | RegularVertex 0.03 0.27 -0.09
165 | RegularVertex 0.09 0.27 -0.09
166 | RegularVertex 0.08 0.245 -0.125
167 | RegularVertex 0.075 0.225 -0.165
168 | RegularVertex 0.065 0.205 -0.205
169 | RegularVertex 0.02 0.205 -0.205
170 | RegularVertex -0.02 0.205 -0.205
171 | RegularVertex 0.09 -0.09 0.27
172 | RegularVertex 0.03 -0.09 0.27
173 | RegularVertex -0.03 -0.09 0.27
174 | RegularVertex -0.02 -0.205 0.205
175 | RegularVertex 0.02 -0.205 0.205
176 | RegularVertex 0.065 -0.205 0.205
177 | RegularVertex 0.075 -0.165 0.225
178 | RegularVertex 0.08 -0.125 0.245
179 | RegularVertex -0.27 -0.03 0.09
180 | RegularVertex -0.27 0.03 0.09
181 | RegularVertex -0.27 0.09 0.09
182 | RegularVertex -0.27 0.09 0.03
183 | RegularVertex -0.27 0.09 -0.03
184 | RegularVertex 0.09 -0.27 0.09
185 | RegularVertex 0.03 -0.27 0.09
186 | RegularVertex -0.03 -0.27 0.09
187 | RegularVertex 0.09 -0.27 -0.03
188 | RegularVertex 0.09 -0.27 0.03
189 | RegularVertex -0.03 0.09 -0.27
190 | RegularVertex 0.03 0.09 -0.27
191 | RegularVertex 0.09 0.09 -0.27
192 | RegularVertex 0.09 0.03 -0.27
193 | RegularVertex 0.09 -0.03 -0.27
194 | RegularVertex 0.27 0.09 0.09
195 | RegularVertex 0.27 0.03 0.09
196 | RegularVertex 0.27 -0.03 0.09
197 | RegularVertex 0.27 0.09 -0.03
198 | RegularVertex 0.27 0.09 0.03
199 | RegularVertex -0.03 0.27 0.09
200 | RegularVertex 0.03 0.27 0.09
201 | RegularVertex 0.09 0.27 0.09
202 | RegularVertex 0.09 0.27 0.03
203 | RegularVertex 0.09 0.27 -0.03
204 | RegularVertex 0.09 0.09 0.27
205 | RegularVertex 0.03 0.09 0.27
206 | RegularVertex -0.03 0.09 0.27
207 | RegularVertex 0.09 -0.03 0.27
208 | RegularVertex 0.09 0.03 0.27
209 | RegularVertex -0.225 0.075 0.165
210 | RegularVertex -0.245 0.08 0.125
211 | RegularVertex 0.08 -0.245 0.125
212 | RegularVertex 0.075 -0.225 0.165
213 | RegularVertex 0.075 0.165 -0.225
214 | RegularVertex 0.08 0.125 -0.245
215 | RegularVertex 0.205 0.065 0.205
216 | RegularVertex 0.205 0.02 0.205
217 | RegularVertex 0.205 -0.02 0.205
218 | RegularVertex 0.245 0.08 0.125
219 | RegularVertex 0.225 0.075 0.165
220 | RegularVertex -0.02 0.205 0.205
221 | RegularVertex 0.02 0.205 0.205
222 | RegularVertex 0.065 0.205 0.205
223 | RegularVertex 0.075 0.225 0.165
224 | RegularVertex 0.08 0.245 0.125
225 | RegularVertex 0.08 0.125 0.245
226 | RegularVertex 0.075 0.165 0.225
227 | RegularVertex -0.245 0.125 -0.08
228 | RegularVertex -0.225 0.165 -0.075
229 | RegularVertex 0.165 -0.225 -0.075
230 | RegularVertex 0.125 -0.245 -0.08
231 | RegularVertex 0.1 -0.195 -0.195
232 | RegularVertex 0.135 -0.18 -0.18
233 | RegularVertex 0.125 -0.08 -0.245
234 | RegularVertex 0.165 -0.075 -0.225
235 | RegularVertex 0.205 0.205 -0.065
236 | RegularVertex 0.225 0.165 -0.075
237 | RegularVertex 0.245 0.125 -0.08
238 | RegularVertex 0.195 0.1 -0.195
239 | RegularVertex 0.18 0.135 -0.18
240 | RegularVertex 0.17 0.17 -0.17
241 | RegularVertex 0.18 0.18 -0.135
242 | RegularVertex 0.195 0.195 -0.1
243 | RegularVertex 0.125 0.245 -0.08
244 | RegularVertex 0.165 0.225 -0.075
245 | RegularVertex 0.135 0.18 -0.18
246 | RegularVertex 0.1 0.195 -0.195
247 | RegularVertex 0.165 -0.075 0.225
248 | RegularVertex 0.125 -0.08 0.245
249 | RegularVertex 0.1 -0.195 0.195
250 | RegularVertex 0.135 -0.18 0.18
251 | RegularVertex -0.245 0.125 0.08
252 | RegularVertex -0.225 0.165 0.075
253 | RegularVertex 0.165 -0.225 0.075
254 | RegularVertex 0.125 -0.245 0.08
255 | RegularVertex 0.125 0.08 -0.245
256 | RegularVertex 0.165 0.075 -0.225
257 | RegularVertex 0.205 0.205 0.065
258 | RegularVertex 0.225 0.165 0.075
259 | RegularVertex 0.245 0.125 0.08
260 | RegularVertex 0.205 0.205 -0.02
261 | RegularVertex 0.205 0.205 0.02
262 | RegularVertex 0.125 0.245 0.08
263 | RegularVertex 0.165 0.225 0.075
264 | RegularVertex 0.165 0.075 0.225
265 | RegularVertex 0.125 0.08 0.245
266 | RegularVertex 0.17 0.17 0.17
267 | RegularVertex 0.18 0.135 0.18
268 | RegularVertex 0.195 0.1 0.195
269 | RegularVertex 0.195 0.195 0.1
270 | RegularVertex 0.18 0.18 0.135
271 | RegularVertex 0.1 0.195 0.195
272 | RegularVertex 0.135 0.18 0.18
273 |
--------------------------------------------------------------------------------