├── .gitignore
├── CMakeLists.txt
├── LICENSE
├── README.md
├── app
├── get_line_plot.py
├── gui.cpp
├── gui.h
├── gui_1.cpp
├── lsc_main.cpp
└── main.cpp
├── cmake
├── DownloadProject.CMakeLists.cmake.in
├── DownloadProject.cmake
├── FindGMP.cmake
├── PrependCurrentPath.cmake
├── UseColors.cmake
├── Warnings.cmake
├── lscDependencies.cmake
├── lscDownloadExternal.cmake
└── lscUtils.cmake
├── data
├── Hall.obj
├── RectifyingPatternsLowRes.pdf
├── fig
│ ├── carpet60.png
│ ├── code_teaser.png
│ ├── extractQuad.png
│ ├── mainpage.png
│ ├── quad_diags.png
│ ├── smooth.png
│ ├── strips.png
│ ├── strips2.png
│ ├── strokes.png
│ └── tracing.png
├── interactive
│ ├── 48p75_1.csv
│ ├── 48p75_1b.csv
│ ├── readme.txt
│ ├── s1_0x.csv
│ ├── s1_0y.csv
│ ├── s1_0z.csv
│ ├── s1_1x.csv
│ ├── s1_1y.csv
│ ├── s1_1z.csv
│ ├── s1_2x.csv
│ ├── s1_2y.csv
│ ├── s1_2z.csv
│ ├── s1_bc.csv
│ ├── s1_flist.csv
│ ├── s_shape_mod.obj
│ └── smooth1.csv
├── pseudo-geodesic
│ ├── 72.csv
│ ├── 72b.csv
│ ├── Hall.obj
│ └── readme.txt
├── quads
│ ├── 120.csv
│ ├── 60.csv
│ ├── info_colleft.csv
│ ├── info_colright.csv
│ ├── info_cols.csv
│ ├── info_rowleft.csv
│ ├── info_rowright.csv
│ ├── info_rows.csv
│ ├── quad.obj
│ ├── quad_opt.obj
│ ├── readme.txt
│ └── tri.obj
├── strip
│ ├── crease_b_x.csv
│ ├── crease_b_y.csv
│ ├── crease_b_z.csv
│ ├── crease_x.csv
│ ├── crease_y.csv
│ ├── crease_z.csv
│ ├── opt_b_x.csv
│ ├── opt_b_y.csv
│ ├── opt_b_z.csv
│ ├── opt_x.csv
│ ├── opt_y.csv
│ ├── opt_z.csv
│ └── readme.txt
└── tracing
│ ├── 60.csv
│ ├── 60_b.csv
│ ├── Wave.obj
│ ├── crease_b_x.csv
│ ├── crease_b_y.csv
│ ├── crease_b_z.csv
│ ├── crease_x.csv
│ ├── crease_y.csv
│ ├── crease_z.csv
│ ├── initial_ls.csv
│ ├── opt_b_x.csv
│ ├── opt_b_y.csv
│ ├── opt_b_z.csv
│ ├── opt_x.csv
│ ├── opt_y.csv
│ ├── opt_z.csv
│ ├── ply_b_x.csv
│ ├── ply_b_y.csv
│ ├── ply_b_z.csv
│ ├── ply_x.csv
│ ├── ply_y.csv
│ ├── ply_z.csv
│ ├── readme.txt
│ ├── saved_traced_0.csv
│ ├── saved_traced_1.csv_0.csv
│ ├── saved_traced_2_0.csv
│ ├── saved_traced_3_0.csv
│ ├── saved_traced_4_0.csv
│ └── smooth.csv
└── src
├── MeshProcessing.cpp
├── MeshProcessing.h
├── SOURCE.cmake
├── basic.cpp
├── basic.h
├── energy.cpp
├── functional.cpp
├── igl_tool.cpp
├── igl_tool.h
├── interaction.cpp
├── interaction.h
├── mesh_opt.cpp
├── nodes.cpp
├── polyline.cpp
├── tools.cpp
├── tools.h
├── topology.cpp
└── tracing.cpp
/.gitignore:
--------------------------------------------------------------------------------
1 | ## macOS
2 | default.profraw
3 |
4 | # General
5 | .DS_Store
6 | .AppleDouble
7 | .LSOverride
8 |
9 | # Icon must end with two \r
10 | Icon
11 |
12 |
13 | # Thumbnails
14 | ._*
15 |
16 | # Files that might appear in the root of a volume
17 | .DocumentRevisions-V100
18 | .fseventsd
19 | .Spotlight-V100
20 | .TemporaryItems
21 | .Trashes
22 | .VolumeIcon.icns
23 | .com.apple.timemachine.donotpresent
24 |
25 | # Directories potentially created on remote AFP share
26 | .AppleDB
27 | .AppleDesktop
28 | Network Trash Folder
29 | Temporary Items
30 | .apdisk
31 |
32 |
33 | ## C++
34 |
35 | # Prerequisites
36 | *.d
37 |
38 | # Compiled Object files
39 | *.slo
40 | *.lo
41 | *.o
42 | # *.obj #we need obj mesh files
43 |
44 | # Precompiled Headers
45 | *.gch
46 | *.pch
47 |
48 | # Compiled Dynamic libraries
49 | *.so
50 | *.dylib
51 | *.dll
52 |
53 | # Fortran module files
54 | *.mod
55 | *.smod
56 |
57 | # Compiled Static libraries
58 | *.lai
59 | *.la
60 | *.a
61 | *.lib
62 |
63 | # Executables
64 | *.exe
65 | *.out
66 | *.app
67 |
68 |
69 | ## CMake
70 |
71 | CMakeLists.txt.user
72 | CMakeCache.txt
73 | CMakeFiles
74 | CMakeScripts
75 | Testing
76 | Makefile
77 | cmake_install.cmake
78 | install_manifest.txt
79 | compile_commands.json
80 | CTestTestfile.cmake
81 | _deps
82 |
83 |
84 | ## Build
85 | build*
86 | rbuild*
87 | bin*
88 |
89 | ## IDES
90 | *.autosave
91 | .idea/
92 | *.code-workspace
93 | *.vscode
94 |
95 | ## python
96 | # Byte-compiled / optimized / DLL files
97 | __pycache__/
98 | *.py[cod]
99 | *$py.class
100 |
101 | # C extensions
102 | *.so
103 |
104 | # Distribution / packaging
105 | .Python
106 | build/
107 | develop-eggs/
108 | dist/
109 | downloads/
110 | eggs/
111 | .eggs/
112 | lib/
113 | lib64/
114 | parts/
115 | sdist/
116 | var/
117 | wheels/
118 | pip-wheel-metadata/
119 | share/python-wheels/
120 | *.egg-info/
121 | .installed.cfg
122 | *.egg
123 | MANIFEST
124 |
125 | # PyInstaller
126 | # Usually these files are written by a python script from a template
127 | # before PyInstaller builds the exe, so as to inject date/other infos into it.
128 | *.manifest
129 | *.spec
130 |
131 | # Installer logs
132 | pip-log.txt
133 | pip-delete-this-directory.txt
134 |
135 | # Unit test / coverage reports
136 | htmlcov/
137 | .tox/
138 | .nox/
139 | .coverage
140 | .coverage.*
141 | .cache
142 | nosetests.xml
143 | coverage.xml
144 | *.cover
145 | *.py,cover
146 | .hypothesis/
147 | .pytest_cache/
148 |
149 | # Translations
150 | *.mo
151 | *.pot
152 |
153 | # Django stuff:
154 | *.log
155 | local_settings.py
156 | db.sqlite3
157 | db.sqlite3-journal
158 |
159 | # Flask stuff:
160 | instance/
161 | .webassets-cache
162 |
163 | # Scrapy stuff:
164 | .scrapy
165 |
166 | # Sphinx documentation
167 | docs/_build/
168 |
169 | # PyBuilder
170 | target/
171 |
172 | # Jupyter Notebook
173 | .ipynb_checkpoints
174 |
175 | # IPython
176 | profile_default/
177 | ipython_config.py
178 |
179 | # pyenv
180 | .python-version
181 |
182 | # pipenv
183 | # According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control.
184 | # However, in case of collaboration, if having platform-specific dependencies or dependencies
185 | # having no cross-platform support, pipenv may install dependencies that don't work, or not
186 | # install all needed dependencies.
187 | #Pipfile.lock
188 |
189 | # PEP 582; used by e.g. github.com/David-OConnor/pyflow
190 | __pypackages__/
191 |
192 | # Celery stuff
193 | celerybeat-schedule
194 | celerybeat.pid
195 |
196 | # SageMath parsed files
197 | *.sage.py
198 |
199 | # Environments
200 | .env
201 | .venv
202 | env/
203 | venv/
204 | ENV/
205 | env.bak/
206 | venv.bak/
207 |
208 | # Spyder project settings
209 | .spyderproject
210 | .spyproject
211 |
212 | # Rope project settings
213 | .ropeproject
214 |
215 | # mkdocs documentation
216 | /site
217 |
218 | # mypy
219 | .mypy_cache/
220 | .dmypy.json
221 | dmypy.json
222 |
223 | # Pyre type checker
224 | .pyre/
225 |
226 | ## Documentation
227 | docs
228 |
229 | ## External dependancies
230 | external
231 |
232 | *.nosync
233 | ###############################################################################
234 | paper/
--------------------------------------------------------------------------------
/CMakeLists.txt:
--------------------------------------------------------------------------------
1 | cmake_minimum_required(VERSION 3.1)
2 | project(lsc)
3 |
4 |
5 |
6 | ################################################################################
7 |
8 | # project-options
9 |
10 |
11 |
12 | ################################################################################
13 |
14 | ### Configuration
15 | set(SPARSE_EXTERNAL "${CMAKE_CURRENT_SOURCE_DIR}/external")
16 | list(APPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/cmake)
17 | list(APPEND CMAKE_MODULE_PATH ${THIRD_PARTY_DIR}/Catch2/contrib)
18 |
19 | include(Warnings)
20 | include(UseColors)
21 | include(${PROJECT_NAME}Dependencies)
22 | include(PrependCurrentPath)
23 | include(${PROJECT_NAME}Utils)
24 | add_subdirectory(${SPARSE_EXTERNAL}/openmesh/OpenMesh-9.0.0)
25 |
26 | ############################
27 | # libraries
28 | include(src/SOURCE.cmake)
29 | prepend_current_path(LSC_SOURCES)
30 | lsc_copy_headers(${LSC_SOURCES})
31 | lsc_set_source_group(${LSC_SOURCES})
32 | add_library(lsc ${LSC_SOURCES})
33 | #target_sources(lsc PRIVATE ${LSC_SOURCES})
34 | target_include_directories(lsc PUBLIC ${PROJECT_BINARY_DIR}/include)
35 | igl_include(core)
36 | igl_include(opengl)
37 | igl_include(glfw)
38 | igl_include(imgui)
39 | igl_include(predicates)
40 | target_link_libraries(lsc PUBLIC igl::core igl::opengl igl::glfw igl::imgui Eigen3::Eigen igl::predicates OpenMeshCore OpenMeshTools)
41 |
42 |
43 | target_compile_definitions(lsc PUBLIC
44 | SI_MESH_DIR="${CMAKE_CURRENT_SOURCE_DIR}/app/meshes/")
45 | ##############################
46 |
47 | # add_executable(${PROJECT_NAME}_bin app/main.cpp)
48 | # target_link_libraries(${PROJECT_NAME}_bin PUBLIC lsc)
49 |
50 | # add_definitions(-D_USE_MATH_DEFINES)
51 | # target_compile_definitions(${PROJECT_NAME}_bin PUBLIC
52 | # CHECKER_BOARD_DATA_DIR="${CMAKE_CURRENT_SOURCE_DIR}/data/")
53 | ################################
54 |
55 | add_executable(${PROJECT_NAME}_devbin app/lsc_main.cpp app/gui.cpp app/gui_1.cpp app/gui.h)
56 | target_include_directories(${PROJECT_NAME}_devbin PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/app)
57 | target_link_libraries(${PROJECT_NAME}_devbin PUBLIC lsc)
58 |
59 | add_definitions(-D_USE_MATH_DEFINES)
60 | target_compile_definitions(${PROJECT_NAME}_devbin PUBLIC
61 | CHECKER_BOARD_DATA_DIR="${CMAKE_CURRENT_SOURCE_DIR}/data/")
62 |
63 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) 2022 Bolun Wang
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 | # Rectifying Strip Patterns
2 |
3 | This is an implementation of the paper "Rectifying Strip Patterns" (SIGGRAPH ASIA 2023). The code is implemented in C++, and tested on MSVC and GCC. This is a framework to design rectifying strips/structures, including a scalar field optimization framework, a quad mesh optimization framework, code for optimizing space curves into rectifying strips, etc.
4 |
5 | ## Citation
6 |
7 | If you use our code in your project, please consider citing the [original paper](https://github.com/wangbolun300/RectifyingStripPatterns/blob/main/data/RectifyingPatternsLowRes.pdf):
8 |
9 | ```bibtex
10 | @article{Wang:2023:Rectifying,
11 | author = {Wang, Bolun and Wang, Hui and Schling, Eike and Pottmann, Helmut},
12 | title = {Rectifying Strip Patterns},
13 | year = {2023},
14 | issue_date = {December 2023},
15 | publisher = {Association for Computing Machinery},
16 | address = {New York, NY, USA},
17 | volume = {42},
18 | number = {6},
19 | issn = {0730-0301},
20 | url = {https://doi.org/10.1145/3618378},
21 | doi = {10.1145/3618378},
22 | month = {dec},
23 | articleno = {256},
24 | numpages = {18},
25 | keywords = {architectural geometry, computational design, computational fabrication, gridshell, pseudo-geodesic, shading system}
26 | }
27 | ```
28 |
29 | ## Compiling Instruction
30 | To compile the code, first you need to install CMake (https://cmake.org/),
31 | To build the executable on Linux or macOS:
32 | ```sh
33 | cd RectifyingStripPatterns/
34 | mkdir build
35 | cd build
36 | cmake ../ -DCMAKE_BUILD_TYPE=Release
37 | make
38 | ```
39 | To build it on MSVC, you need to download [openmesh](https://gitlab.vci.rwth-aachen.de:9000/OpenMesh/OpenMesh/-/jobs/156362/artifacts/raw/OpenMesh-9.1.0.zip) into the "external" folder, unzip it into "external/openmesh/OpenMesh-9.1.0" and build it into "external/openmesh/OpenMesh-9.1.0/build".
40 |
41 | Then double-click the executable `lsc_devbin`, you will see a pop-out window whose buttons link the functions that generate all the results in our paper.
42 |
43 |
44 |
45 | ## Usage
46 | Some useful shortcuts:
47 | * `i` is to invert the normal directions of the viewer.
48 | * `d` is to enable double-sided rendering.
49 | * `x` is to delete the selected mesh in the `Mesh Management` list.
50 |
51 | Some tips:
52 | * Please always check if there is any new mesh added into the `Mesh Management` list. Sometimes after pressing the buttons, there is no change in the main view window, but the new mesh is already added into the list. To see the renderings of the new results you need to make other meshes invisible by clicking the checker boxes on the left of the mesh files.
53 | * Please always check the information printed in the terminal, it will tell you the numerical errors, how to read/write files after pressing the corresponding buttons, if there are singularities, etc.
54 | * Every time you get a scalar field, don't forget to save it using `Save levelset`. If you have a scalar field and a model in the framework, close the exe and reopen it before loading another model or scalar field.
55 | * When it prints "flip u" in the terminal, it means the convergence is not stable. You should first use a small `weight pseudo geodesic`, run a few iterations until it turns stable, then gradually increase the weight.
56 | * When it prints "Singularity" in the terminal, it means there are singularities in the scalar field. Enhance the constraints on smoothness and strip width until the singularities disappear.
57 |
58 |
59 | ### Interactive design of P-curves
60 | * Press the button `UseUnitScaleMesh` on the top left of the viewer to unit-scale the mesh.
61 | * Draw the guide curves: Press the key `3` on the keyboard, and draw a few curves on the surface using your mouth, then release the key `3`. Make sure that there is no intersection. The strokes should be smooth, generally in the same direction, as shown below
62 |
63 |
64 |
65 | * If you are not satisfied with the strokes, you can clear the strokes by pressing `Panel 1 -> InterActiveDesign -> ClearStrokes`. A clean mesh will be added to the `Mesh Management` so that you can redraw curves on it.
66 | * Press the button `Stroke2LS` to confirm the drawing.
67 | * Press `AutoRunSmooth` to generate the smooth level sets that follow the strokes. The details for each iteration is printed in the terminal. The target P-curve angle $\theta$ is also printed out, e.g. "target_angle, 76.5434".
68 | * After obtaining the smooth level sets generally following the strokes, press `AutoRunPG`, wait for a few seconds, then the scalar function whose level curves are pseudo-geodesic curves of $\theta$ is generated. Press `Save levelset` to save the scalar field and the binormal vectors. In this step, the scalar field is automatically optimized using the default parameters.
69 | ### Initialize the scalar field by tracing P-curves.
70 |
71 | * Open the exe by double-clicking it, there is a default mesh already loaded. If you want to use another mesh, load it by pressing `Import Mesh`, delete the default mesh, and now you have a clean workspace.
72 | * Trace guide curves using the buttons under the `Tracing` catalog. The start points of tracing curves are on the boundary of the mesh. There are two `TracingType` you can choose to quickly decide where the start points are. `SegTrace` chooses a segment that contains "`nbr bnd edges`" edges of the boundary starting from the "`start bnd edge`"th edge of the boundary loop. The distance between two neighboring start points is "`every i segments`". Another `TracingType` is `OneEdgeTrace`. If your mesh has corner points on the boundary, you can select the "`Select 1 boundary`"th segment of the boundary curve split by the corner points. `corner angle` helps to decide the corner points. The following figure shows the traced curves under `OneEdgeTrace` mode.
73 |
74 |
75 |
76 | * Now we trace curves. Set up the `start angle` and $\theta$ = `target angle`, press `Trace Curves`, and P-curves will be traced out and rendered in the viewer.
77 | * Or, you can also trace 1 curve each time by properly setting up the parameters under `SegTrace` mode, save and load them one by one. This gives you more precise control of the start directions and curve locations.
78 | * Make sure there is no intersection in the traced curves.
79 | * Now we turn to `Energy Solving` catalog. Tune `weight boundary` and `weight laplacian` and press `LvSet Opt` under the `LS Processing` catalog, you will see the generated level sets after running a certain number of iterations decided by `Iteration`.
80 | * Save the scalar field if you are satisfied with the quality. See figure:
81 |
82 |
83 | ### Optimize for P-curves with user-specific parameters
84 | * Press `Import levelset` to load a scalar field and `Import Mesh`.
85 | * Set up `weight laplacian` to control the smoothness, `weight Strip width` to control the gradient not far from 1, `weight pseudo geodesic` for the $E_{angle}$. Set the checker boxes `Enable PG Energy` and `Enable Strip Width` as TRUE, then run `LvSet Opt` to optimize for $\theta$ = `target angle`. The figure below shows P-curves of $\theta = 60^\circ$ and the optimization parameters.
86 |
87 |
88 |
89 | * We recommend you start from large `weight laplacian` and `weight Strip width`, and small `weight pseudo geodesic`, then gradually change the parameters as what we showed in the figure above, to improve the stability of optimization.
90 | * Note that the errors printed in the terminal are the sqrt of the energy. the example above prints out "pg, 0.00318374" meaning that the error $E_{angle} = 0.00318374^2 =$ 1.01e-5.
91 | * To use $E_{geo}$ and $E_{asy}$ for geodesic and asymptotic instead of $E_{angle}$, you can set `Enable Extreme Cases` as TRUE. If `target angle` = 0,then $E_{asy}$ is enabled; Otherwise, $E_{geo}$ is enabled.
92 |
93 | ### Optimize level sets for AAG.
94 | After obtaining the scalar fields for the two families of asymptotic curves, load the two fields using `Load First Level Set` and `Load Second Level Set`, respectively. We call the 3 scalar fields F, H and G, where G is the 3rd scalar field. Now we optimize the 3 scalar fields simultaneously. You can input the parameters as before, and there are some new parameters:
95 | * `weight_geodesic` is a ratio of the parameters of G, which means the weights for G are $weight *$`weight_geodesic`, while for F and H are $weight$. It makes the optimization easier since we can start from a vanishing G and gradually add G back.
96 | * `weight boundary` now becomes the weight for the condition $F+H+G=0$.
97 | * Under the catalog `Panel 1 -> TwoLvlStAngle` there are buttons and parameters to set up the angles between the level sets of F and H. For AAG optimization we don't need them since the asymptotic directions are totally decided by the geometry, but for AGG, PPG, etc., the angle constraints can be useful to generate visual-pleasing meshes. Remember to set the `WeightAngleOfLSs` as small values since they can only be weak constraints.
98 |
99 | * Press `AAG lvSet` to run the optimizations. You can also press `AGG LvSet` to run AGG, or `PPG LvSet` to run PPG. Press `Save AAG` to save 3 scalar fields in a row (works for AAG, AGG and PPG). The pseudo-geodesic angles $\theta_F$ and $\theta_G$ for PPG are `target angle` and `second angle`, respectively.
100 |
101 | ### Extracting quad mesh from scalar fields
102 | * Load the two scalar fields: `Load First Level Set`, `Load Second Level Set`.
103 | * For nets that only contain two families of curves, press `Ortho Fields Quads`, then you can save the generated quad mesh and some mesh structure info files. The number of parameter lines of each scalar field can be controlled by `Nbr of U lines` and `Nbr of V lines`.
104 | * For 3-webs like AAG, AGG and PPG, whose diagonals of the quads are also mesh edges, please use `Extr Pace Quad`. `Nbr of U lines` will control the density. It will sample both the u and v scalar functions with an even pace to make sure $F+H+G=0$. The 3-webs are also saved as quad meshes. The diagonal information is written into the info files generated when you are saving the quads. See the figure below showing the two scalar fields and the extracted quad mesh.
105 |
106 |
107 |
108 | ### Quad mesh optimization
109 | The optimization for PP, PPG, AAG, AGG is integrated under `QuadMeshOpt` catalog.
110 | * Load a quad mesh using `LoadQuads`. It will require you to type down the name of the quad mesh and the prefix of the info files.
111 | * Make sure you have an underlying triangle mesh loaded. You will approximate your quad mesh to the triangle mesh. Press `LoadTriangleTree` to pass the triangle mesh data into the quad mesh optimization framework.
112 | * Choose the correct `QuadType`. Press `Set&Reset` to Initialize. It will draw one iso-u line, one iso-v line and one diagonal line in the viewer, in the colors red, green and blue, respectively (as shown below). If you find that the blue line doesn't match the correct one of the two diagonal directions, you can choose the correct diagonal directions in the `FamilyOfDiag` and initialize again. You can run 1 iteration for the test: in the terminal, the estimated P-curve angles for the iso-u and iso-v curves will be printed out, it will help you to input the correct target angle $\theta$ or $\pi - \theta$. See the figure below showing the triangle mesh and the quad mesh loaded. The estimated angles are 115.555 and 115.42 after 1 iteration, while the designed angles are 60 and 120. It means the input target angles should be 180 - 60 = 120 and 120.
113 |
114 |
115 |
116 | * The parameters are: `weight boundary` for approximating to the triangle mesh, `weight laplacian` for smoothness, `weight pseudo-geodesic` for the angle condition, `weight_geodesic` as a ratio multiplied to `weight pseudo geodesic` as a weight for obtaining accurate binormal vectors. After finishing the optimizations, you can choose the generated mesh in the `Mesh Management` list, click on `Save Mesh` to save the quad mesh. And press `writePlyInfo` to save the binormal strips.
117 |
118 | ### Extracting and optimizing binormal strips
119 | As has been discussed before we can get the binormal vectors through quad mesh optimization. Actually after optimizing level sets for P-curves, the binormal strips can be easily obtained: `Nbr of U lines` controls the number of strips extracted. With the underlying triangle mesh and scalar field imported using `Load First Level Set`, press `ExtrLines&Binormals`. It will require you to type down the prefix of the files, and load the binormal files extracted from the level set optimization stage. Then, the strip files will be saved.
120 |
121 | Now we load the binormal strips using `ReadPlylines` and type down the prefix of the files. The strips will be loaded and re-sampled. The reviewer will render the strips, and these strips are already resampled once you load them. The sample density is controlled by `Nbr of U lines`. If you don't want to resample the polylines, just set it as -1.
122 |
123 | * The mission is to obtain accurate binormal vectors of the polylines, while keeping the desired P-curve angle $\theta$. The quad meshes for the strips are the offset of the polylines along binormal vectors. We can also see the inverted elements meaning that the binormal vectors between strips are not consistent. We deal with this problem later.
124 | * `weight ls mass` is to approximate the strips to the underlying surface. `weight laplacian` is to control the smoothness of the polylines. `weight_geodesic` is a ratio multiplied by `weight laplacian` to play a role as a weight for smoothing neighboring binormal vectors. This is useful for correctly determining the binormal vector direction if the neighboring two edges are almost colinear. `weight pseudo-geodesic` is for accurate binormal vectors, `WeightAngle` is for accurate $\theta$ = `target angle`.
125 | * Press `OptiPolylines` to start optimizations. Press `Save Polylines` to type down the prefix and save the polylines. `Orient&SavePlys` is to deal with the orientations of the binormal vectors: it compares the binormal vectors of the neighbouring two polylines, and orient the binormal vectors if one of the polylines is inverted. `ForcePlyBinm` is also useful: pressing it will set all the binormal vectors in the same direction. It fixes problems like binormal vectors are inverted even within one strip, and gives a good starting point so that the convergence could be improved.
126 |
127 |
128 |
129 | ### Optimizing for rectifying developable.
130 | The rectifying strips are obtained by optimizing binormal strips obtained from binormal strip optimization or quad mesh optimization.
131 |
132 | * Load binormal strips with `ReadCreases`. `weight ls mass` is to approximate the polylines to the polylines of the input binormal strips. `weight laplacian` is to provide smooth polylines. `WeightAngle` is to improve the isometry with straight flat strips.
133 | * Press `Optreases` to run the optimizations. Press `SavePolylines` to save the results. The figure below shows the parameters, the binormal strip, and the rectifying strip. This case is simple containing no reflection points, thus we are able to set `weight laplacian` = 0.
134 | * You can also use `DevV1` to try the first version of rectifying strips mentioned in our paper.
135 |
136 |
137 |
138 | ### Shading system design
139 |
140 | The majority of the related buttons are under `Shading Paras` catalog.
141 | * `Enable Extreme Cases` and `Shading` as TRUE to enable shading system design mode.
142 | * Input the `Latitude` and then `SaveRotatedMesh` to represent the mesh under global coordinates by rotating.
143 | * Initialize the scalar field (e.g. drawing strokes), and save the result.
144 | * Load the mesh and the scalar field, set up the middle point of the light source using `T0`, `P0` for the $\theta$ and $\phi$ values. Set up the considered light region using `Ttol0` and `Ptol0`.
145 | * Run the optimization by clicking `LvSet Opt`.
146 | * After getting the scalar fields, extract the strips, and optimize to improve the quality through binormal strip optimization and rectifying strip optimization.
147 |
148 | ## Some more info
149 | * There are more buttons for visualizing the level sets for AAG and the optimization errors, getting the statistics for timing, optimizing triangle meshes, designing curves with constant slope, etc. For most of the buttons you can understand them easily by their names. If you are not sure what the button does, please read our code!
150 | * It requires some technique and experience to get high-quality, visually pleasing results. In the data folder, there are some data for you to test.
151 |
--------------------------------------------------------------------------------
/app/get_line_plot.py:
--------------------------------------------------------------------------------
1 | import os
2 | import glob
3 | import numpy as np
4 | import pandas as pd
5 | import json
6 | import plotly.graph_objs as go
7 | import plotly.offline as plotly
8 | import plotly.figure_factory as ff
9 | import math
10 |
11 | def plot(xx, yy, name,color):
12 | print("x",xx)
13 | print("y",yy)
14 | plot = go.Scatter(
15 | x=xx,
16 | y=yy,
17 |
18 | mode = "lines",
19 | # marker=dict(color=color,size=30),
20 | line={'color': color, 'width': 5},
21 | # line=dict(color=color),
22 | name=name
23 | # marker=dict(color=colors[key])
24 | )
25 |
26 | return plot
27 |
28 | ############################################
29 | filenbr="8"
30 | check_content=1 # 0: angle; 1: kn; 2:kg
31 | color_list=['#00b894','#0984e3','#d63031']
32 | target=""
33 | yname=""
34 | yrange=[]
35 | ynticks=5
36 | if check_content==0:
37 | target="angle"
38 | yrange=[0,90]
39 | yname=target
40 | ynticks=5
41 | if check_content==1:
42 | target="kn"
43 | yrange=[0.18,0.22]
44 | yname=target
45 | ynticks=10
46 | if check_content==2:
47 | target="kg"
48 | yrange=[0,0.5]
49 | yname=target
50 | ynticks=10
51 |
52 | ##########################################33
53 |
54 |
55 | filepath ='../build/'
56 |
57 |
58 | filename=''
59 | counter=0
60 | plots=[]
61 | x1=[]
62 | y1=[]
63 | y2=[]
64 | y3=[]
65 | filename=filepath+filenbr+"_info.csv"
66 | tdf=pd.read_csv(filename)
67 | x1=[*range(1,21)]
68 | y1=tdf[target].values
69 |
70 | y1=np.absolute(y1);
71 | plots.append(plot(x1, y1, target,color_list[0]))
72 |
73 |
74 | layout= go.Layout(
75 | legend=dict(x=0.5, y=1),
76 | font=dict(
77 | size=36
78 | ),
79 | xaxis=dict(
80 | title="the points on the line",
81 | range=[0,20],
82 | # exponentformat='power',
83 | showticksuffix='all',
84 | showtickprefix='all',
85 | showexponent='all',
86 | # autotick=True,
87 | nticks=20,
88 | tickfont=dict(
89 | size=20
90 | ),
91 | # type='log',
92 | showline=True,
93 | linewidth=2,
94 | showgrid=True,
95 | gridwidth=1,
96 | gridcolor='grey',
97 |
98 | linecolor='black'
99 | # ticktext=xticks
100 | ),
101 | yaxis=dict(
102 | title=yname,
103 | # tickformat='.1e',
104 | # exponentformat='power',
105 | # ticks='',
106 | # range=[0,5000],
107 | # tick0=0,
108 | # dtick=1,
109 | # tickangle=-45,
110 | tickfont=dict(
111 | size=20
112 | ),
113 | # autorange=True,
114 | showline=True,
115 | linewidth=2,
116 | linecolor='black',
117 | showgrid=True,
118 | gridwidth=1,
119 | gridcolor='grey',
120 | # tick0=1,
121 | # dtick=1,
122 | # nticks=10,
123 | range=yrange,
124 | #############################################
125 |
126 |
127 | nticks=ynticks,
128 |
129 | ###############################################
130 | ),
131 | # font=dict(
132 | # size=16
133 | # ),
134 | hovermode='closest',
135 | paper_bgcolor='rgba(0,0,0,0)',
136 | plot_bgcolor='rgba(0,0,0,0)'
137 | )
138 |
139 |
140 |
141 |
142 | fig = go.Figure(data=plots,layout=layout)
143 | # if check_content==2 or check_content==3:
144 | # fig.update_yaxes(
145 | # # type='log'
146 | # )
147 | # fig.update_layout(yaxis_tickformat = '%')
148 | fig.write_image(filenbr+"_info_"+target + ".svg")
149 |
150 |
151 | # fig.show()
152 | #if output is not None:
153 | # fig.write_image(output + ".svg")
--------------------------------------------------------------------------------
/app/gui.cpp:
--------------------------------------------------------------------------------
1 | #include
2 |
3 | lscif::lscif()
4 | {
5 | sea_green = Eigen::RowVector3d(70. / 255., 252. / 255., 167. / 255.);
6 | hot_red = Eigen::RowVector3d(255. / 255., 12. / 255., 17. / 255.);
7 | pure_blk = Eigen::RowVector3d(0, 0, 0);
8 | }
9 |
10 | // add a new mesh into the mesh lists, and show the new mesh along with previous showed meshes
11 | void lscif::updateMeshViewer(igl::opengl::glfw::Viewer &viewer, CGMesh &mesh)
12 | {
13 | Eigen::MatrixXd V;
14 | Eigen::MatrixXi F;
15 |
16 | MP.mesh2Matrix(mesh, V, F);
17 | // Create new data slot and set to selected
18 | if (!(viewer.data().F.rows() == 0 && viewer.data().V.rows() == 0))
19 | {
20 | viewer.append_mesh();
21 | }
22 | // viewer.data().clear();
23 | viewer.data().set_mesh(V, F);
24 | viewer.data().is_visible = true;
25 |
26 | // show polygon edges
27 | Eigen::MatrixXi E;
28 | MP.meshEdges(mesh, E);
29 | Eigen::MatrixXd C = Eigen::MatrixXd::Zero(E.rows(), 3);
30 | viewer.data().set_edges(V, E, C);
31 |
32 | viewer.data().show_lines = false;
33 | viewer.data().line_width = 2.0;
34 | viewer.core().align_camera_center(viewer.data().V, viewer.data().F);
35 |
36 | VertexType.resize(V.size(), 0);
37 | }
38 | void lscif::plot2dFittingResults(igl::opengl::glfw::Viewer &viewer, const Eigen::VectorXd &xs, const Eigen::VectorXd &ys,
39 | const std::vector &ply)
40 | {
41 | // make one triangle as the mesh
42 | Eigen::MatrixXd Vt(3,3);
43 | Eigen::MatrixXi Ft(1,3);
44 | double xmin = xs.minCoeff();
45 | double xmax = xs.maxCoeff();
46 | double ymin = ys.minCoeff();
47 | double ymax = ys.maxCoeff();
48 | Vt << xmin, ymin, 0,
49 | xmin, ymax, 0,
50 | xmax, ymin, 0;
51 | Ft << 0, 1, 2;
52 | viewer.append_mesh();
53 | viewer.data().set_mesh(Vt, Ft);
54 | viewer.data().is_visible = true;
55 |
56 | viewer.data().show_lines = false;
57 | viewer.data().line_width = 2.0;
58 | viewer.data().point_size = 5;
59 | viewer.core().align_camera_center(viewer.data().V, viewer.data().F);
60 |
61 | int vnbr = xs.size();
62 | Eigen::MatrixXd pts(vnbr, 3), cur(100, 3);
63 | pts.col(0) = xs;
64 | pts.col(1) = ys;
65 | pts.col(2) = Eigen::VectorXd::Zero(vnbr);
66 | double itv = (xmax - xmin) / 100;
67 | for (int i = 0; i < 100; i++)
68 | {
69 | double x = xmin + i * itv;
70 | double y = polynomial_value(ply, x);
71 | // y = ply[3] * x * x *x + ply[]
72 | cur.row(i) << x, y, 0;
73 | }
74 | Eigen::MatrixXd E0(99, 3);
75 | E0 = cur.block(0, 0, 99, 3);
76 | Eigen::MatrixXd E1(99, 3);
77 | E1 = cur.block(1, 0, 99, 3);
78 |
79 | viewer.data().add_points(pts, hot_red);
80 | viewer.data().add_edges(E0, E1, sea_green);
81 | }
82 |
83 | bool lscif::pre_draw(igl::opengl::glfw::Viewer &viewer)
84 | {
85 | return false;
86 | }
87 | bool lscif::key_up(igl::opengl::glfw::Viewer &viewer, unsigned char key, int mods)
88 | {
89 | switch (key)
90 | {
91 | case '1':
92 | {
93 | keyPress_1 = false;
94 | return true;
95 | }
96 |
97 | case '2':
98 | {
99 | keyPress_2 = false;
100 | return true;
101 | }
102 | case '3':
103 | {
104 | draw_strokes = false;
105 | return true;
106 | }
107 | case GLFW_KEY_X:
108 | {
109 | keyPress_d = false;
110 | return true;
111 | }
112 | }
113 | return false;
114 | }
115 | bool lscif::key_down(igl::opengl::glfw::Viewer &viewer, unsigned char key, int mods)
116 | {
117 | switch (key)
118 | {
119 |
120 | case '1':
121 | {
122 | keyPress_1 = true;
123 | // std::cout << viewer.current_mouse_x << "___" << viewer.current_mouse_y << std::endl;
124 | return true;
125 | }
126 |
127 | case '2':
128 | {
129 | keyPress_2 = true;
130 | return true;
131 | }
132 | case '3':
133 | {
134 | draw_strokes = true;
135 | return true;
136 | }
137 |
138 | case GLFW_KEY_X:
139 | {
140 | keyPress_d = true;
141 | if (keyPress_d)
142 | {
143 | // keyPress_d = false;
144 | int id = viewer.selected_data_index;
145 | // if (id > 1)
146 | // viewer.selected_data_index = id - 2;
147 | // std::cout << "The current Mesh ID is" << viewer.selected_data_index << std::endl;
148 | if (Meshes.size() == 1)
149 | {
150 | std::cout << "Do not delete the last mesh" << std::endl;
151 | // ImGui::End();
152 | }
153 | else
154 | {
155 | viewer.erase_mesh(id);
156 | if (id > -1)
157 | {
158 | meshFileName.erase(meshFileName.begin() + id);
159 | Meshes.erase(Meshes.begin() + id);
160 | }
161 | if (Meshes.size() > id)
162 | {
163 | viewer.selected_data_index = id;
164 | }
165 | else
166 | {
167 |
168 | viewer.selected_data_index = id - 1;
169 | }
170 | }
171 | }
172 |
173 | return true;
174 | }
175 | }
176 |
177 | return false;
178 | }
179 |
180 | // when holding "1" or "2", with mouse left button down, points can be choosen
181 | // TODO fix the bug when select one mesh but click on the other one, and when swich to
182 | // the other mesh, all the histories are recorded and reproduce points on the second mesh
183 | bool lscif::mouse_down(igl::opengl::glfw::Viewer &viewer, int button, int modifier)
184 | {
185 | if (keyPress_1)
186 | {
187 | int fid;
188 | Eigen::Vector3f bc;
189 | // Cast a ray in the view direction starting from the mouse position
190 | double x = viewer.current_mouse_x;
191 | double y = viewer.core().viewport(3) - viewer.current_mouse_y;
192 | if (igl::unproject_onto_mesh(
193 | Eigen::Vector2f(x, y),
194 | viewer.core().view,
195 | viewer.core().proj,
196 | viewer.core().viewport,
197 | viewer.data().V,
198 | viewer.data().F,
199 | fid,
200 | bc))
201 | {
202 | int max;
203 | bc.maxCoeff(&max);
204 | int vid = viewer.data().F(fid, max);
205 |
206 | if (VertexType[vid] != 1)
207 | VertexType[vid] = 1;
208 | else
209 | VertexType[vid] = 0;
210 |
211 | std::vector fixedVid;
212 | std::vector controlVid;
213 | for (int i = 0; i < viewer.data().V.size(); i++)
214 | {
215 | if (VertexType[i] == 1)
216 | fixedVid.push_back(i);
217 | if (VertexType[i] == 2)
218 | controlVid.push_back(i);
219 | }
220 |
221 | Eigen::VectorXi vids = Eigen::Map(fixedVid.data(), fixedVid.size());
222 | Eigen::VectorXi vids2 = Eigen::Map(controlVid.data(), controlVid.size());
223 |
224 | std::cout << "Selected point:\nposition related to the viewer: " << viewer.current_mouse_x << "___" << viewer.current_mouse_y << std::endl;
225 | std::cout << "vid, " << vid << ", fid, " << fid << ", mass_unfiform, " << tools.mass_uniform.coeffRef(vid, vid) << std::endl;
226 | if (tools.fvalues.rows() > 0)
227 | {
228 | std::cout << "level set value " << tools.fvalues[vid] << std::endl;
229 | }
230 | Eigen::VectorXd energy;
231 | tools.show_max_pg_energy(energy);
232 | if (energy.size() > 0)
233 | {
234 | std::cout << "local energy, " << energy[vid] << std::endl;
235 | }
236 | Eigen::MatrixXd energy_all;
237 | tools.show_max_pg_energy_all(energy_all);
238 | if (energy_all.rows() == viewer.data().V.rows())
239 | {
240 | std::cout << energy_all.row(vid) << std::endl;
241 | }
242 | else
243 | {
244 | std::cout << "the size of energy_all, " << energy_all.rows() << std::endl;
245 | }
246 |
247 | std::cout << "point position: (" << viewer.data().V(vid, 0) << ", " << viewer.data().V(vid, 1) << ", " << viewer.data().V(vid, 2) << ")\n\n";
248 | // tools.print_info(vid);
249 | if (Given_Const_Direction)
250 | {
251 | double latitude_radian = Shading_Latitude * LSC_PI / 180.;
252 | double rho = (LSC_PI / 2 - latitude_radian);
253 | Eigen::Matrix3d rotation;
254 | rotation << 1, 0, 0,
255 | 0, cos(rho), -sin(rho),
256 | 0, sin(rho), cos(rho);
257 | Eigen::Vector3d direction_ground = Eigen::Vector3d(0, 0, -1); // the ground direction
258 | direction_ground = rotation * direction_ground;
259 | Eigen::MatrixXd ground = Eigen::MatrixXd::Ones(tools.V.rows(), tools.V.cols());
260 | ground.col(0) *= direction_ground[0];
261 | ground.col(1) *= direction_ground[1];
262 | ground.col(2) *= direction_ground[2];
263 | viewer.data().add_edges(tools.V - vector_scaling * ground, tools.V + vector_scaling * ground, pure_blk);
264 | }
265 |
266 | // viewer.data().add_points(igl::slice(viewer.data().V, vids, 1), hot_red);
267 | // viewer.data().set_points(igl::slice(viewer.data().V, vids, 1), hot_red);
268 | viewer.data().add_points(igl::slice(viewer.data().V, vids, 1), hot_red);
269 | Eigen::MatrixXd pts;
270 | tools.show_current_reference_points(pts);
271 | viewer.data().add_points(pts, sea_green);
272 | return true;
273 | }
274 | }
275 | if (keyPress_2)
276 | {
277 | int fid;
278 | Eigen::Vector3f bc;
279 | // Cast a ray in the view direction starting from the mouse position
280 | double x = viewer.current_mouse_x;
281 | double y = viewer.core().viewport(3) - viewer.current_mouse_y;
282 | if (igl::unproject_onto_mesh(
283 | Eigen::Vector2f(x, y),
284 | viewer.core().view,
285 | viewer.core().proj,
286 | viewer.core().viewport,
287 | viewer.data().V,
288 | viewer.data().F,
289 | fid,
290 | bc))
291 | {
292 | int max;
293 | bc.maxCoeff(&max);
294 | int vid = viewer.data().F(fid, max);
295 |
296 | if (VertexType[vid] != 2)
297 | VertexType[vid] = 2;
298 | else
299 | VertexType[vid] = 0;
300 |
301 | std::vector fixedVid;
302 | std::vector controlVid;
303 | for (int i = 0; i < viewer.data().V.size(); i++)
304 | {
305 | if (VertexType[i] == 1)
306 | fixedVid.push_back(i);
307 | if (VertexType[i] == 2)
308 | controlVid.push_back(i);
309 | }
310 |
311 | Eigen::VectorXi vids = Eigen::Map(fixedVid.data(), fixedVid.size());
312 | Eigen::VectorXi vids2 = Eigen::Map(controlVid.data(), controlVid.size());
313 |
314 | std::cout << "Selected point:\nposition related to the viewer: " << viewer.current_mouse_x << "___" << viewer.current_mouse_y << std::endl;
315 | std::cout << "vid, " << vid << ", fid, " << fid << std::endl;
316 | if (tools.fvalues.rows() > 0)
317 | {
318 | std::cout << "level set value " << tools.fvalues[vid] << std::endl;
319 | }
320 | std::cout << "point position: (" << viewer.data().V(vid, 0) << ", " << viewer.data().V(vid, 1) << ", " << viewer.data().V(vid, 2) << ")\n\n";
321 | viewer.data().set_points(igl::slice(viewer.data().V, vids, 1), hot_red);
322 | viewer.data().add_points(igl::slice(viewer.data().V, vids2, 1), sea_green);
323 | return true;
324 | }
325 | }
326 |
327 | left_button_down = true;
328 | return false;
329 | }
330 | bool lscif::mouse_up(igl::opengl::glfw::Viewer &viewer, int button, int modifier)
331 | {
332 | left_button_down = false;
333 | if (!project_x_tmp.empty()) // if just draw a curve
334 | {
335 | project_2dx.push_back(project_x_tmp);
336 | project_2dy.push_back(project_y_tmp);
337 | Eigen::MatrixXd Vers;
338 | draw_stroke_on_mesh(tools.lsmesh, viewer,
339 | tools.V, tools.F, project_x_tmp,
340 | project_y_tmp, Vers, flist_tmp, bclist_tmp);
341 | flist.push_back(flist_tmp);
342 | bclist.push_back(bclist_tmp);
343 | project_x_tmp.clear();
344 | project_y_tmp.clear();
345 | std::cout << "There are " << project_2dx.size() << " curves" << std::endl;
346 | viewer.data().add_points(Vers, hot_red);
347 | }
348 |
349 | return true;
350 | return false;
351 | }
352 | bool lscif::mouse_move(igl::opengl::glfw::Viewer &viewer, int mouse_x, int mouse_y)
353 | {
354 | if (draw_strokes && left_button_down)
355 | {
356 | // Eigen::Vector3d posEnd = igl::unproject(
357 | // Eigen::Vector3f(viewer.current_mouse_x,
358 | // viewer.core().viewport[3] -
359 | // static_cast(viewer.current_mouse_y),
360 | // viewer.down_mouse_z),
361 | // viewer.core().view,
362 | // viewer.core().proj,
363 | // viewer.core().viewport)
364 | // .template cast();
365 | // std::cout<<"posend, "< colors;
389 | int last_selected = -1;
390 | std::string example_root_path(CHECKER_BOARD_DATA_DIR);
391 |
392 | std::string modelname = "Hall.obj";
393 | std::string fname = example_root_path + std::string(modelname);
394 | OpenMesh::IO::read_mesh(mesh, fname);
395 | tools.init(mesh);
396 | MP.mesh2Matrix(mesh, V, F);
397 | meshFileName.push_back(modelname);
398 | Meshes.push_back(mesh);
399 |
400 | // Init the viewer
401 |
402 | viewer.plugins.push_back(&plugin);
403 | // Attach a menu plugin
404 | plugin.widgets.push_back(&menu);
405 |
406 | // Add content to the default menu window
407 | menu.callback_draw_viewer_menu = [&]()
408 | {
409 | // Draw parent menu content
410 | menu.draw_viewer_menu();
411 | };
412 |
413 | draw_menu1(viewer, plugin, menu);
414 | plugin.widgets.push_back(&menu_mp);
415 |
416 | // Add content to the default menu window
417 | menu_mp.callback_draw_viewer_menu = [&]()
418 | {
419 | // Draw parent menu content
420 | menu_mp.draw_viewer_menu();
421 | };
422 |
423 | // Draw additional windows
424 | draw_menu2(viewer, plugin, menu_mp);
425 | // Refresh selected mesh colors
426 | viewer.callback_pre_draw =
427 | [&](igl::opengl::glfw::Viewer &)
428 | {
429 | if (last_selected != viewer.selected_data_index)
430 | {
431 | for (auto &data : viewer.data_list)
432 | {
433 | data.set_colors(colors[data.id]);
434 | }
435 | viewer.data_list[viewer.selected_data_index].set_colors(Eigen::RowVector3d(0.9, 0.9, 0.1));
436 | last_selected = viewer.selected_data_index;
437 | }
438 | return false;
439 | };
440 |
441 | // Plot the mesh
442 | viewer.data().set_mesh(V, F);
443 | viewer.data().show_lines = false;
444 | viewer.data().is_visible = true;
445 | // show polygon edges
446 | Eigen::MatrixXi E;
447 | MP.meshEdges(mesh, E);
448 | Eigen::MatrixXd C = Eigen::MatrixXd::Zero(E.rows(), 3);
449 | viewer.data().set_edges(V, E, C);
450 | viewer.data().line_width = 2.0;
451 | viewer.data().invert_normals = true;
452 | VertexType.resize(V.size(), 0);
453 | }
454 | void launch_viewer()
455 | {
456 | igl::opengl::glfw::Viewer viewer;
457 | igl::opengl::glfw::imgui::ImGuiPlugin plugin;
458 | igl::opengl::glfw::imgui::ImGuiMenu menu, menu1;
459 | lscif viewerTools;
460 | viewerTools.viewer_launch_functions(viewer, plugin, menu, menu1);
461 |
462 | using namespace std::placeholders;
463 | auto func_predraw = std::bind(&lscif::pre_draw, &viewerTools, _1);
464 | auto func_key_down = std::bind(&lscif::key_down, &viewerTools, _1, _2, _3);
465 | auto func_mouse_down = std::bind(&lscif::mouse_down, &viewerTools, _1, _2, _3);
466 | auto func_key_up = std::bind(&lscif::key_up, &viewerTools, _1, _2, _3);
467 | auto func_mouse_move = std::bind(&lscif::mouse_move, &viewerTools, _1, _2, _3);
468 | auto func_mouse_up = std::bind(&lscif::mouse_up, &viewerTools, _1, _2, _3);
469 |
470 | viewer.callback_pre_draw = func_predraw; //&pre_draw;
471 | viewer.callback_key_down = func_key_down;
472 | viewer.callback_mouse_down = func_mouse_down;
473 | viewer.callback_key_up = func_key_up;
474 | viewer.callback_mouse_move = func_mouse_move;
475 | viewer.callback_mouse_up = func_mouse_up;
476 |
477 | viewer.core().is_animating = false;
478 | viewer.core().animation_max_fps = 30.;
479 | viewer.core().background_color = Eigen::Vector4f(1, 1, 1, 100);
480 | viewer.launch();
481 |
482 | }
--------------------------------------------------------------------------------
/app/gui.h:
--------------------------------------------------------------------------------
1 | #pragma once
2 | #include
3 | #include
4 | #include
5 | #include
6 | #include
7 | #include
8 | #include
9 | #include
10 | #include
11 | #include
12 | #include
13 | #include
14 | #include
15 | #include
16 | #include
17 | // -------------------- OpenMesh
18 | #include
19 | #include
20 | #include
21 | #include
22 | #include
23 | #include
24 |
25 | typedef OpenMesh::PolyMesh_ArrayKernelT<> CGMesh;
26 |
27 | // the interface operators
28 | class lscif
29 | {
30 | private:
31 | #ifdef _WIN32
32 | std::string spliter = "\\";
33 | #else
34 | std::string spliter = "/";
35 | #endif
36 | public:
37 | lscif();
38 | igl::Timer timer_global;
39 | double time_total = 0;
40 | int iteration_total = 0;
41 | std::vector errorlist;
42 | std::vector timelist;
43 |
44 | Eigen::RowVector3d sea_green;
45 | Eigen::RowVector3d hot_red;
46 | Eigen::RowVector3d pure_blk;
47 | MeshProcessing MP;
48 |
49 | // This V and F are only for visulization of the default mesh
50 | Eigen::MatrixXd V;
51 | Eigen::MatrixXi F;
52 |
53 | bool keyPress_1 = false;
54 | bool keyPress_2 = false;
55 | bool keyPress_d = false;
56 |
57 | // Optimization Parameters
58 | double weigth_closeness = 0.0;
59 | double refer_AveEL = 1;
60 | double weight_mass = 100.; // weight of the mass function to
61 | double weight_boundary = 100; // weight of the boundary condition
62 | double weight_laplacian = 0.001;
63 | double weight_pseudo_geodesic = 0.01;
64 | double weight_strip_width = 0.0001;
65 | double weight_geodesic = 3;
66 | // double weight_shading = 0.01; // For shading: the light is othogonal to the tangent direction
67 |
68 | double maximal_step_length = 0.5;
69 | bool enable_extreme_cases = false;
70 | bool Given_Const_Direction = false;
71 | int which_levelset = 0;
72 | bool fix_angle_of_two_levelsets = false;
73 | double angle_between_two_levelsets = 60;
74 | double weight_fix_two_ls_angle = 0;
75 |
76 | // Tracing Parameters
77 | int which_seg_id = 0; // the face id of which we will assign value to
78 | int nbr_of_intervals = 3;
79 | int start_bnd_he = 0; // start boundary halfedge, for init the values by assign values on some edges
80 | int nbr_edges = 20;
81 | int id_debug_global = 5;
82 | double target_angle = 60;
83 | double target_angle_2 = 60;
84 | double start_angle = 60;
85 | double threadshold_angel_degree = 150; // the threadshold for detecting boundary corners
86 | int dbg_int = 0;
87 | int dbg_int2 = 5;
88 | double dbg_dbl = 30;
89 | double dbg_dbl2 = 60;
90 | double vector_scaling = 1;
91 | double vector_scaling2 = 0;
92 | int extracted_nbr = 5;
93 | bool debug_flag = false;
94 | std::vector fixedVertices;
95 | double ptInx = 0;
96 | double ptIny = 0;
97 | double ptInz = 0;
98 | int TracingType = 0;
99 | // int QuadOptType = 0;
100 |
101 | int OpIter = 10;
102 | CGMesh mesh;
103 | CGMesh RefMesh;
104 | bool enable_pg_energy_checkbox = false;
105 | bool enable_strip_width_checkbox = false;
106 | bool fixBoundary_checkbox = false;
107 |
108 | // mesh processing for level set
109 | int nbr_lines_first_ls = 30;
110 | int nbr_lines_second_ls = 30;
111 | Eigen::VectorXd readed_LS1;
112 | Eigen::VectorXd readed_LS2;
113 | Eigen::VectorXd readed_LS3;
114 | std::vector readed_mesh1;
115 | CGMesh readed_mesh2;
116 | int Nbr_Iterations_Mesh_Opt = 10;
117 | double weight_Mesh_mass = 100;
118 | double weight_Mesh_smoothness = 0.001;
119 | double weight_Mesh_edgelength = 0.01;
120 | double weight_Mesh_pesudo_geodesic = 30;
121 | double Mesh_opt_max_step_length = 0.1;
122 | double weight_Mesh_approximation = 0.01;
123 |
124 | int update_ver_id = 0;
125 | int ring_nbr;
126 | std::vector update_verlist;
127 |
128 | bool selectFEV[30] = {true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true};
129 | std::vector meshFileName;
130 | std::vector Meshes;
131 | lsTools tools;
132 | PolyOpt poly_tool;
133 | QuadOpt quad_tool;
134 | double weight_angle = 0;
135 | double InputPx = 0; // theta
136 | double InputPy = 180; // phi
137 |
138 | double InputPx1 = 0;
139 | double InputPy1 = 180;
140 |
141 | double InputThetaTol = 23.5; // give 10 degrees of tolerance
142 | double InputThetaTol1 = 23.5; // give 10 degrees of tolerance
143 | double InputPhiTol = 45; // give 10 degrees of tolerance
144 | double InputPhiTol1 = 45; // give 10 degrees of tolerance
145 | int vinrow = -1;
146 |
147 | double Shading_Latitude = 34;
148 | bool shading_init = false;
149 | bool let_ray_through = false;
150 | bool let_ray_reflect = false;
151 | bool recompute_auxiliaries = false;
152 |
153 | double weight_binormal = 1;
154 | double weight_smt_binormal = 0;
155 | double weight_endpoint_ratio = 1;
156 | bool pick_single_ply = false;
157 | int pick_line_id = 0;
158 | std::vector> Poly_readed;
159 | std::vector> Bino_readed;
160 | std::vector> Poly_opt;
161 | std::vector> Bino_opt;
162 |
163 | std::vector VertexType;
164 |
165 | // interaction stuff
166 | bool draw_strokes = false;
167 | bool left_button_down = false;
168 | std::vector> project_2dx;
169 | std::vector> project_2dy;
170 | std::vector project_x_tmp;
171 | std::vector project_y_tmp;
172 | std::vector> flist;
173 | std::vector> bclist;
174 | std::vector flist_tmp;
175 | std::vector bclist_tmp;
176 | std::vector> project_pts;
177 | AutoRunArgs autorunner[2];
178 |
179 | // functional angles stuff.
180 | bool Disable_Changed_Angles = false;
181 | bool Use_Fitting_Angles = false;
182 | bool Use_Opt_Only_BNMS = false;
183 |
184 | bool AxisFixedForSlopes = false;
185 | bool AnglesFixedForSlopes = false;
186 | double AxisFixInX = 0;
187 | double AxisFixInY = 0;
188 | double AxisFixInZ = 1;
189 | double AngleFixIn = 45;
190 |
191 | bool CentroidFixedForNodes = false;
192 | bool RadiusFixedForNodes = false;
193 | bool FindCandRForNodes = false; // take C and R as variables
194 | double CentroidFixInX = 0;
195 | double CentroidFixInY = 0;
196 | double CentroidFixInZ = 1;
197 | double RadiusFixIn = 45;
198 |
199 |
200 | // add a new mesh into the mesh lists, and show the new mesh along with previous showed meshes
201 | void updateMeshViewer(igl::opengl::glfw::Viewer &viewer, CGMesh &mesh);
202 |
203 | void plot2dFittingResults(igl::opengl::glfw::Viewer &viewer, const Eigen::VectorXd& xs, const Eigen::VectorXd& ys,
204 | const std::vector &ply);
205 |
206 | bool pre_draw(igl::opengl::glfw::Viewer &viewer);
207 | bool key_up(igl::opengl::glfw::Viewer &viewer, unsigned char key, int mods);
208 | bool key_down(igl::opengl::glfw::Viewer &viewer, unsigned char key, int mods);
209 |
210 | // when holding "1" or "2", with mouse left button down, points can be choosen
211 | // TODO fix the bug when select one mesh but click on the other one, and when swich to
212 | // the other mesh, all the histories are recorded and reproduce points on the second mesh
213 | bool mouse_down(igl::opengl::glfw::Viewer &viewer, int button, int modifier);
214 | bool mouse_up(igl::opengl::glfw::Viewer &viewer, int button, int modifier);
215 | bool mouse_move(igl::opengl::glfw::Viewer &viewer, int mouse_x, int mouse_y);
216 |
217 | void show_axis(Eigen::MatrixXd &E0, Eigen::MatrixXd &E1, double ratio);
218 |
219 | void viewer_launch_functions(igl::opengl::glfw::Viewer& viewer, igl::opengl::glfw::imgui::ImGuiPlugin &plugin,
220 | igl::opengl::glfw::imgui::ImGuiMenu &menu, igl::opengl::glfw::imgui::ImGuiMenu &menu_mp);
221 | void draw_menu1(igl::opengl::glfw::Viewer& viewer, igl::opengl::glfw::imgui::ImGuiPlugin &plugin,
222 | igl::opengl::glfw::imgui::ImGuiMenu &menu);
223 | void draw_menu2(igl::opengl::glfw::Viewer& viewer, igl::opengl::glfw::imgui::ImGuiPlugin &plugin,
224 | igl::opengl::glfw::imgui::ImGuiMenu &menu);
225 | };
226 |
227 | void launch_viewer();
--------------------------------------------------------------------------------
/app/lsc_main.cpp:
--------------------------------------------------------------------------------
1 | #include
2 |
3 | // ----------------------------------------------------------------------------
4 |
5 | int main(int argc, char *argv[])
6 | {
7 | // lscif viewerTools;
8 |
9 | //viewerTools.viewer_launch_functions();
10 |
11 | launch_viewer();
12 | }
13 |
--------------------------------------------------------------------------------
/app/main.cpp:
--------------------------------------------------------------------------------
1 |
2 | #include
3 | #include
4 | #include
5 | #include
6 | #include
7 | #include
8 | #include
9 | #include
10 | #include
11 | #include
12 | #include
13 | int main(int argc, char *argv[])
14 | {
15 | runRotateArrows(0.15);
16 | }
--------------------------------------------------------------------------------
/cmake/DownloadProject.CMakeLists.cmake.in:
--------------------------------------------------------------------------------
1 | # Distributed under the OSI-approved MIT License. See accompanying
2 | # file LICENSE or https://github.com/Crascit/DownloadProject for details.
3 |
4 | cmake_minimum_required(VERSION 2.8.2)
5 |
6 | project(${DL_ARGS_PROJ}-download NONE)
7 |
8 | include(ExternalProject)
9 | ExternalProject_Add(${DL_ARGS_PROJ}-download
10 | ${DL_ARGS_UNPARSED_ARGUMENTS}
11 | SOURCE_DIR "${DL_ARGS_SOURCE_DIR}"
12 | BINARY_DIR "${DL_ARGS_BINARY_DIR}"
13 | CONFIGURE_COMMAND ""
14 | BUILD_COMMAND ""
15 | INSTALL_COMMAND ""
16 | TEST_COMMAND ""
17 | )
18 |
--------------------------------------------------------------------------------
/cmake/DownloadProject.cmake:
--------------------------------------------------------------------------------
1 | # Distributed under the OSI-approved MIT License. See accompanying
2 | # file LICENSE or https://github.com/Crascit/DownloadProject for details.
3 | #
4 | # MODULE: DownloadProject
5 | #
6 | # PROVIDES:
7 | # download_project( PROJ projectName
8 | # [PREFIX prefixDir]
9 | # [DOWNLOAD_DIR downloadDir]
10 | # [SOURCE_DIR srcDir]
11 | # [BINARY_DIR binDir]
12 | # [QUIET]
13 | # ...
14 | # )
15 | #
16 | # Provides the ability to download and unpack a tarball, zip file, git repository,
17 | # etc. at configure time (i.e. when the cmake command is run). How the downloaded
18 | # and unpacked contents are used is up to the caller, but the motivating case is
19 | # to download source code which can then be included directly in the build with
20 | # add_subdirectory() after the call to download_project(). Source and build
21 | # directories are set up with this in mind.
22 | #
23 | # The PROJ argument is required. The projectName value will be used to construct
24 | # the following variables upon exit (obviously replace projectName with its actual
25 | # value):
26 | #
27 | # projectName_SOURCE_DIR
28 | # projectName_BINARY_DIR
29 | #
30 | # The SOURCE_DIR and BINARY_DIR arguments are optional and would not typically
31 | # need to be provided. They can be specified if you want the downloaded source
32 | # and build directories to be located in a specific place. The contents of
33 | # projectName_SOURCE_DIR and projectName_BINARY_DIR will be populated with the
34 | # locations used whether you provide SOURCE_DIR/BINARY_DIR or not.
35 | #
36 | # The DOWNLOAD_DIR argument does not normally need to be set. It controls the
37 | # location of the temporary CMake build used to perform the download.
38 | #
39 | # The PREFIX argument can be provided to change the base location of the default
40 | # values of DOWNLOAD_DIR, SOURCE_DIR and BINARY_DIR. If all of those three arguments
41 | # are provided, then PREFIX will have no effect. The default value for PREFIX is
42 | # CMAKE_BINARY_DIR.
43 | #
44 | # The QUIET option can be given if you do not want to show the output associated
45 | # with downloading the specified project.
46 | #
47 | # In addition to the above, any other options are passed through unmodified to
48 | # ExternalProject_Add() to perform the actual download, patch and update steps.
49 | # The following ExternalProject_Add() options are explicitly prohibited (they
50 | # are reserved for use by the download_project() command):
51 | #
52 | # CONFIGURE_COMMAND
53 | # BUILD_COMMAND
54 | # INSTALL_COMMAND
55 | # TEST_COMMAND
56 | #
57 | # Only those ExternalProject_Add() arguments which relate to downloading, patching
58 | # and updating of the project sources are intended to be used. Also note that at
59 | # least one set of download-related arguments are required.
60 | #
61 | # If using CMake 3.2 or later, the UPDATE_DISCONNECTED option can be used to
62 | # prevent a check at the remote end for changes every time CMake is run
63 | # after the first successful download. See the documentation of the ExternalProject
64 | # module for more information. It is likely you will want to use this option if it
65 | # is available to you. Note, however, that the ExternalProject implementation contains
66 | # bugs which result in incorrect handling of the UPDATE_DISCONNECTED option when
67 | # using the URL download method or when specifying a SOURCE_DIR with no download
68 | # method. Fixes for these have been created, the last of which is scheduled for
69 | # inclusion in CMake 3.8.0. Details can be found here:
70 | #
71 | # https://gitlab.kitware.com/cmake/cmake/commit/bdca68388bd57f8302d3c1d83d691034b7ffa70c
72 | # https://gitlab.kitware.com/cmake/cmake/issues/16428
73 | #
74 | # If you experience build errors related to the update step, consider avoiding
75 | # the use of UPDATE_DISCONNECTED.
76 | #
77 | # EXAMPLE USAGE:
78 | #
79 | # include(DownloadProject)
80 | # download_project(PROJ googletest
81 | # GIT_REPOSITORY https://github.com/google/googletest.git
82 | # GIT_TAG master
83 | # UPDATE_DISCONNECTED 1
84 | # QUIET
85 | # )
86 | #
87 | # add_subdirectory(${googletest_SOURCE_DIR} ${googletest_BINARY_DIR})
88 | #
89 | #========================================================================================
90 |
91 |
92 | set(_DownloadProjectDir "${CMAKE_CURRENT_LIST_DIR}")
93 |
94 | include(CMakeParseArguments)
95 |
96 | function(download_project)
97 |
98 | set(options QUIET)
99 | set(oneValueArgs
100 | PROJ
101 | PREFIX
102 | DOWNLOAD_DIR
103 | SOURCE_DIR
104 | BINARY_DIR
105 | # Prevent the following from being passed through
106 | CONFIGURE_COMMAND
107 | BUILD_COMMAND
108 | INSTALL_COMMAND
109 | TEST_COMMAND
110 | )
111 | set(multiValueArgs "")
112 |
113 | cmake_parse_arguments(DL_ARGS "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN})
114 |
115 | # Hide output if requested
116 | if (DL_ARGS_QUIET)
117 | set(OUTPUT_QUIET "OUTPUT_QUIET")
118 | else()
119 | unset(OUTPUT_QUIET)
120 | message(STATUS "Downloading/updating ${DL_ARGS_PROJ}")
121 | endif()
122 |
123 | # Set up where we will put our temporary CMakeLists.txt file and also
124 | # the base point below which the default source and binary dirs will be.
125 | # The prefix must always be an absolute path.
126 | if (NOT DL_ARGS_PREFIX)
127 | set(DL_ARGS_PREFIX "${CMAKE_BINARY_DIR}")
128 | else()
129 | get_filename_component(DL_ARGS_PREFIX "${DL_ARGS_PREFIX}" ABSOLUTE
130 | BASE_DIR "${CMAKE_CURRENT_BINARY_DIR}")
131 | endif()
132 | if (NOT DL_ARGS_DOWNLOAD_DIR)
133 | set(DL_ARGS_DOWNLOAD_DIR "${DL_ARGS_PREFIX}/${DL_ARGS_PROJ}-download")
134 | endif()
135 |
136 | # Ensure the caller can know where to find the source and build directories
137 | if (NOT DL_ARGS_SOURCE_DIR)
138 | set(DL_ARGS_SOURCE_DIR "${DL_ARGS_PREFIX}/${DL_ARGS_PROJ}-src")
139 | endif()
140 | if (NOT DL_ARGS_BINARY_DIR)
141 | set(DL_ARGS_BINARY_DIR "${DL_ARGS_PREFIX}/${DL_ARGS_PROJ}-build")
142 | endif()
143 | set(${DL_ARGS_PROJ}_SOURCE_DIR "${DL_ARGS_SOURCE_DIR}" PARENT_SCOPE)
144 | set(${DL_ARGS_PROJ}_BINARY_DIR "${DL_ARGS_BINARY_DIR}" PARENT_SCOPE)
145 |
146 | # The way that CLion manages multiple configurations, it causes a copy of
147 | # the CMakeCache.txt to be copied across due to it not expecting there to
148 | # be a project within a project. This causes the hard-coded paths in the
149 | # cache to be copied and builds to fail. To mitigate this, we simply
150 | # remove the cache if it exists before we configure the new project. It
151 | # is safe to do so because it will be re-generated. Since this is only
152 | # executed at the configure step, it should not cause additional builds or
153 | # downloads.
154 | file(REMOVE "${DL_ARGS_DOWNLOAD_DIR}/CMakeCache.txt")
155 |
156 | # Create and build a separate CMake project to carry out the download.
157 | # If we've already previously done these steps, they will not cause
158 | # anything to be updated, so extra rebuilds of the project won't occur.
159 | # Make sure to pass through CMAKE_MAKE_PROGRAM in case the main project
160 | # has this set to something not findable on the PATH.
161 | configure_file("${_DownloadProjectDir}/DownloadProject.CMakeLists.cmake.in"
162 | "${DL_ARGS_DOWNLOAD_DIR}/CMakeLists.txt")
163 | execute_process(COMMAND ${CMAKE_COMMAND} -G "${CMAKE_GENERATOR}"
164 | -D "CMAKE_MAKE_PROGRAM:FILE=${CMAKE_MAKE_PROGRAM}"
165 | .
166 | RESULT_VARIABLE result
167 | ${OUTPUT_QUIET}
168 | WORKING_DIRECTORY "${DL_ARGS_DOWNLOAD_DIR}"
169 | )
170 | if(result)
171 | message(FATAL_ERROR "CMake step for ${DL_ARGS_PROJ} failed: ${result}")
172 | endif()
173 | execute_process(COMMAND ${CMAKE_COMMAND} --build .
174 | RESULT_VARIABLE result
175 | ${OUTPUT_QUIET}
176 | WORKING_DIRECTORY "${DL_ARGS_DOWNLOAD_DIR}"
177 | )
178 | if(result)
179 | message(FATAL_ERROR "Build step for ${DL_ARGS_PROJ} failed: ${result}")
180 | endif()
181 |
182 | endfunction()
183 |
--------------------------------------------------------------------------------
/cmake/FindGMP.cmake:
--------------------------------------------------------------------------------
1 | # Try to find the GMP librairies
2 | # GMP_FOUND - system has GMP lib
3 | # GMP_INCLUDE_DIRS - the GMP include directory
4 | # GMP_LIBRARIES - Libraries needed to use GMP
5 |
6 | if (GMP_INCLUDE_DIRS AND GMP_LIBRARIES)
7 | # Already in cache, be silent
8 | set(GMP_FIND_QUIETLY TRUE)
9 | endif (GMP_INCLUDE_DIRS AND GMP_LIBRARIES)
10 |
11 |
12 |
13 | #if(WIN32)
14 | # if(CYGWIN)
15 | # triwild_download_gmp_cygwin()
16 | #elseif(MINGW)
17 | # triwild_download_gmp_mingw()
18 | #else()
19 | # triwild_download_gmp_vc()
20 | #endif()
21 |
22 | #SET(GMP_WINDOWS_PATH ${THIRD_PARTY_DIR}/gmp)
23 | #endif()
24 |
25 |
26 | find_path(GMP_INCLUDE_DIRS NAMES gmp.h PATHS $ENV{GMP_INC} ${GMP_WINDOWS_PATH})
27 | find_library(GMP_LIBRARIES NAMES gmp libgmp PATHS $ENV{GMP_LIB} ${GMP_WINDOWS_PATH})
28 | find_library(GMPXX_LIBRARIES NAMES gmpxx libgmpxx PATHS $ENV{GMP_LIB} ${GMP_WINDOWS_PATH})
29 | #MESSAGE(STATUS "GMP libs: " ${GMP_LIBRARIES} " " ${GMPXX_LIBRARIES} )
30 |
31 | include(FindPackageHandleStandardArgs)
32 | FIND_PACKAGE_HANDLE_STANDARD_ARGS(GMP DEFAULT_MSG GMP_INCLUDE_DIRS GMP_LIBRARIES)
33 |
34 | mark_as_advanced(GMP_INCLUDE_DIRS GMP_LIBRARIES)
35 | MESSAGE(STATUS "GMP libs: " ${GMP_LIBRARIES} " " ${GMP_INCLUDE_DIRS} )
--------------------------------------------------------------------------------
/cmake/PrependCurrentPath.cmake:
--------------------------------------------------------------------------------
1 | function(prepend_current_path SOURCE_FILES)
2 | # Use recursive substitution to expand SOURCE_FILES
3 | unset(MODIFIED)
4 | foreach(SOURCE_FILE IN ITEMS ${${SOURCE_FILES}})
5 | list(APPEND MODIFIED "${CMAKE_CURRENT_SOURCE_DIR}/${SOURCE_FILE}")
6 | endforeach()
7 | set(${SOURCE_FILES} ${MODIFIED} PARENT_SCOPE)
8 | endfunction()
9 |
--------------------------------------------------------------------------------
/cmake/UseColors.cmake:
--------------------------------------------------------------------------------
1 | ################################################################################
2 | # When using Clang, there is nothing to do: colors are enabled by default
3 | # When using GCC >= 4.9, colored diagnostics can be enabled natively
4 | # When using an older version, one can use gccfilter (a perl script)
5 | #
6 | # I do not recommend using gccfilter as of now (May 2014), because it seems to
7 | # be bugged. But if you still want to try, here is how to install it on Ubuntu:
8 | #
9 | #
10 | # 1) Download the perl script and add it to you $PATH
11 | # mkdir -p ~/.local/bin
12 | # wget -P ~/.local/bin http://www.mixtion.org/gccfilter/gccfilter
13 | # chmod +x ~/local/bin/gccfilter
14 | # echo 'PATH="$HOME/.local/bin:$PATH"' >> ~/.bashrc
15 | #
16 | # 2) Install the dependencies
17 | # * Term::ANSIColor
18 | # sudo cpan
19 | # cpan> install Term::ANSIColor
20 | # * The module "Getopt::Long" is included in "perl-base"
21 | # * For Getopt::ArgvFile and Regexp::Common ...
22 | # sudo apt-get install libgetopt-argvfile-perl libregexp-common-perl
23 | #
24 | ################################################################################
25 |
26 | if(CMAKE_COMPILER_IS_GNUCXX)
27 | # If GCC >= 4.9, just activate the right option
28 | if(NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS 4.9)
29 | message(STATUS "GCC >= 4.9 detected, enabling colored diagnostics")
30 | set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fdiagnostics-color=auto")
31 | set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -fdiagnostics-color=auto")
32 | set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -fdiagnostics-color=auto")
33 | return()
34 | endif()
35 | # If GCC < 4.9, maybe we can use gccfilter
36 | find_program(GCC_FILTER gccfilter)
37 | if(GCC_FILTER)
38 | option(COLOR_GCC "Use GCCFilter to color compiler output messages" OFF)
39 | set(COLOR_GCC_OPTIONS "-c -r -w" CACHE STRING "Arguments that are passed to gccfilter when output coloring is switchend on. Defaults to -c -r -w.")
40 | if(COLOR_GCC)
41 | set_property(GLOBAL PROPERTY RULE_LAUNCH_COMPILE "${GCC_FILTER} ${COLOR_GCC_OPTIONS}")
42 | message(STATUS "Using gccfilter for colored diagnostics")
43 | endif()
44 | endif()
45 | endif()
46 |
--------------------------------------------------------------------------------
/cmake/Warnings.cmake:
--------------------------------------------------------------------------------
1 | ################################################################################
2 | cmake_minimum_required(VERSION 2.6.3)
3 | ################################################################################
4 | # See comments and discussions here:
5 | # http://stackoverflow.com/questions/5088460/flags-to-enable-thorough-and-verbose-g-warnings
6 | ################################################################################
7 |
8 | if(TARGET warnings::all)
9 | return()
10 | endif()
11 |
12 | set(MY_FLAGS
13 | -Wall
14 | -Wextra
15 | -pedantic
16 |
17 | # -Wconversion
18 | #-Wunsafe-loop-optimizations # broken with C++11 loops
19 | -Wunused
20 |
21 | -Wno-long-long
22 | -Wpointer-arith
23 | -Wformat=2
24 | -Wuninitialized
25 | -Wcast-qual
26 | -Wmissing-noreturn
27 | -Wmissing-format-attribute
28 | -Wredundant-decls
29 |
30 | -Werror=implicit
31 | -Werror=nonnull
32 | -Werror=init-self
33 | -Werror=main
34 | -Werror=missing-braces
35 | -Werror=sequence-point
36 | -Werror=return-type
37 | -Werror=trigraphs
38 | -Werror=array-bounds
39 | -Werror=write-strings
40 | -Werror=address
41 | -Werror=int-to-pointer-cast
42 | -Werror=pointer-to-int-cast
43 |
44 | -Wno-unused-variable
45 | -Wunused-but-set-variable
46 | -Wno-unused-parameter
47 |
48 | #-Weffc++
49 | -Wno-old-style-cast
50 | # -Wno-sign-conversion
51 | #-Wsign-conversion
52 |
53 | -Wshadow
54 |
55 | -Wstrict-null-sentinel
56 | -Woverloaded-virtual
57 | -Wsign-promo
58 | -Wstack-protector
59 | -Wstrict-aliasing
60 | -Wstrict-aliasing=2
61 |
62 | # Warn whenever a switch statement has an index of enumerated type and
63 | # lacks a case for one or more of the named codes of that enumeration.
64 | -Wswitch
65 | # This is annoying if all cases are already covered.
66 | # -Wswitch-default
67 | # This is annoying if there is a default that covers the rest.
68 | # -Wswitch-enum
69 | -Wswitch-unreachable
70 | # -Wcovered-switch-default # Annoying warnings from nlohmann::json
71 |
72 | -Wcast-align
73 | -Wdisabled-optimization
74 | #-Winline # produces warning on default implicit destructor
75 | -Winvalid-pch
76 | # -Wmissing-include-dirs
77 | -Wpacked
78 | -Wno-padded
79 | -Wstrict-overflow
80 | -Wstrict-overflow=2
81 |
82 | -Wctor-dtor-privacy
83 | -Wlogical-op
84 | -Wnoexcept
85 | -Woverloaded-virtual
86 | # -Wundef
87 |
88 | -Wnon-virtual-dtor
89 | -Wdelete-non-virtual-dtor
90 | -Werror=non-virtual-dtor
91 | -Werror=delete-non-virtual-dtor
92 |
93 | -Wno-sign-compare
94 |
95 | ###########
96 | # GCC 6.1 #
97 | ###########
98 |
99 | -Wnull-dereference
100 | -fdelete-null-pointer-checks
101 | -Wduplicated-cond
102 | -Wmisleading-indentation
103 |
104 | #-Weverything
105 |
106 | ###########################
107 | # Enabled by -Weverything #
108 | ###########################
109 |
110 | #-Wdocumentation
111 | #-Wdocumentation-unknown-command
112 | #-Wfloat-equal
113 |
114 | #-Wglobal-constructors
115 | #-Wexit-time-destructors
116 | #-Wmissing-variable-declarations
117 | #-Wextra-semi
118 | #-Wweak-vtables
119 | #-Wno-source-uses-openmp
120 | #-Wdeprecated
121 | #-Wnewline-eof
122 | #-Wmissing-prototypes
123 |
124 | #-Wno-c++98-compat
125 | #-Wno-c++98-compat-pedantic
126 |
127 | ###########################
128 | # Need to check if those are still valid today
129 | ###########################
130 |
131 | #-Wimplicit-atomic-properties
132 | #-Wmissing-declarations
133 | #-Wmissing-prototypes
134 | #-Wstrict-selector-match
135 | #-Wundeclared-selector
136 | #-Wunreachable-code
137 |
138 | # Not a warning, but enable link-time-optimization
139 | # TODO: Check out modern CMake version of setting this flag
140 | # https://cmake.org/cmake/help/latest/module/CheckIPOSupported.html
141 | #-flto
142 |
143 | # Gives meaningful stack traces
144 | -fno-omit-frame-pointer
145 | -fno-optimize-sibling-calls
146 | )
147 |
148 | # Flags above don't make sense for MSVC
149 | if(MSVC)
150 | set(MY_FLAGS)
151 | endif()
152 |
153 | include(CheckCXXCompilerFlag)
154 |
155 | add_library(warnings_all INTERFACE)
156 | add_library(warnings::all ALIAS warnings_all)
157 |
158 | foreach(FLAG IN ITEMS ${MY_FLAGS})
159 | string(REPLACE "=" "-" FLAG_VAR "${FLAG}")
160 | if(NOT DEFINED IS_SUPPORTED_${FLAG_VAR})
161 | check_cxx_compiler_flag("${FLAG}" IS_SUPPORTED_${FLAG_VAR})
162 | endif()
163 | if(IS_SUPPORTED_${FLAG_VAR})
164 | target_compile_options(warnings_all INTERFACE ${FLAG})
165 | endif()
166 | endforeach()
167 |
--------------------------------------------------------------------------------
/cmake/lscDependencies.cmake:
--------------------------------------------------------------------------------
1 | # Prepare dependencies
2 | #
3 | # For each third-party library, if the appropriate target doesn't exist yet,
4 | # download it via external project, and add_subdirectory to build it alongside
5 | # this project.
6 |
7 |
8 | # Download and update 3rd_party libraries
9 | list(APPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_LIST_DIR})
10 | list(REMOVE_DUPLICATES CMAKE_MODULE_PATH)
11 | include(${PROJECT_NAME}DownloadExternal)
12 |
13 | ################################################################################
14 | # Required libraries
15 | ################################################################################
16 |
17 | # Eigen
18 | if(NOT TARGET Eigen3::Eigen)
19 | sparse_interp_download_eigen()
20 | add_library(${PROJECT_NAME}_eigen INTERFACE)
21 | target_include_directories(${PROJECT_NAME}_eigen SYSTEM INTERFACE
22 | $
23 | $
24 | )
25 | set_property(TARGET ${PROJECT_NAME}_eigen PROPERTY EXPORT_NAME Eigen3::Eigen)
26 | add_library(Eigen3::Eigen ALIAS ${PROJECT_NAME}_eigen)
27 | # Set Eigen directory environment variable (needed for EVCTCD)
28 | set(ENV{EIGEN3_INCLUDE_DIR} "${SPARSE_EXTERNAL}/eigen/")
29 | endif()
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 | # libigl
38 | if(TARGET igl::core)
39 | return()
40 | endif()
41 |
42 | include(FetchContent)
43 | FetchContent_Declare(
44 | libigl
45 | GIT_REPOSITORY https://github.com/libigl/libigl.git
46 | GIT_TAG v2.4.0
47 | )
48 | FetchContent_MakeAvailable(libigl)
49 |
50 |
51 | # tinyad
52 |
53 | # FetchContent_Declare(
54 | # tinyad
55 | # GIT_REPOSITORY https://github.com/patr-schm/tinyad.git
56 | # GIT_TAG 75093e14ef0d7bb39657c5f3b2aba1251afaa38c
57 | # )
58 | # FetchContent_GetProperties(tinyad)
59 | # if(NOT tinyad_POPULATED)
60 | # # Fetch the content using previously declared details
61 | # FetchContent_Populate(tinyad)
62 | # message(STATUS "tinyad_SOURCE_DIR: ${tinyad_SOURCE_DIR}")
63 | # message(STATUS "tinyad_BINARY_DIR: ${tinyad_BINARY_DIR}")
64 | # add_subdirectory(${tinyad_SOURCE_DIR} ${tinyad_BINARY_DIR})
65 | # endif()
66 |
67 | # # ANN
68 | # set(ANN_FILE "${CMAKE_CURRENT_SOURCE_DIR}/external/ann.zip")
69 | # set(ANN_PATH "${CMAKE_CURRENT_SOURCE_DIR}/external/ann" )
70 | # if(EXISTS "${ANN_FILE}" OR EXISTS "${ANN_PATH}")
71 | # message("LSC: ANN source file exists")
72 | # else()
73 | # if(NOT EXISTS "${ANN_FILE}")
74 | # message("LSC: downloading ANN")
75 | # file(DOWNLOAD https://www.cs.umd.edu/~mount/ANN/Files/1.1.2/ann_1.1.2.zip ${ANN_FILE})
76 | # endif()
77 | # endif()
78 | # if(NOT EXISTS "${ANN_PATH}")
79 | # message("LSC: ANN unzipping")
80 | # file(ARCHIVE_EXTRACT INPUT ${ANN_FILE} DESTINATION ${ANN_PATH})
81 | # message("LSC: ANN is unzipped")
82 | # else()
83 | # message("LSC: ANN is already unzipped")
84 | # endif()
85 | # message("LSC: ann file: ${ANN_PATH}/ann_1.1.2/")
86 | # if (WIN32)
87 | # set(ANN_MAKE gmake) # Windows
88 | # elseif (APPLE)
89 | # set(ANN_MAKE make macosx-g++)
90 | # else ()
91 | # set(ANN_MAKE make)#linux
92 | # endif()
93 |
94 | # if(NOT WIN32)
95 | # if (NOT EXISTS "${ANN_PATH}/ann_1.1.2/lib/libANN.a") # TODO add more lib file paths for windows
96 | # message("LSC: ANN starting installing")
97 | # execute_process(COMMAND ${ANN_MAKE} -C ${ANN_PATH}/ann_1.1.2 )
98 | # message("LSC: ANN get installed")
99 | # else()
100 | # message("LSC: ANN is already installed")
101 | # endif()
102 | # endif()
103 |
104 | #################openmesh
105 | set(OM_FILE "${CMAKE_CURRENT_SOURCE_DIR}/external/openmesh.zip")
106 | set(OM_PATH "${CMAKE_CURRENT_SOURCE_DIR}/external/openmesh" )
107 | if(EXISTS "${OM_FILE}" OR EXISTS "${OM_PATH}")
108 | message("LSC: OpenMesh source file exists")
109 | else()
110 | if(NOT EXISTS "${OM_FILE}")
111 | message("LSC: downloading OpenMesh")
112 | file(DOWNLOAD https://www.graphics.rwth-aachen.de/media/openmesh_static/Releases/9.0/OpenMesh-9.0.zip ${OM_FILE})
113 | endif()
114 | endif()
115 | if(NOT EXISTS "${OM_PATH}")
116 | message("LSC: OpenMesh unzipping")
117 | file(ARCHIVE_EXTRACT INPUT ${OM_FILE} DESTINATION ${OM_PATH})
118 | message("LSC: OpenMesh is unzipped")
119 | else()
120 | message("LSC: OpenMesh is already unzipped")
121 | endif()
122 | message("LSC: OpenMesh file: ${OM_PATH}/OpenMesh-9.0.0/")
123 | # if(NOT WIN32)
124 | # execute_process(COMMAND python ${CMAKE_CURRENT_SOURCE_DIR}/cmake/install_openmesh.py)
125 | # if (NOT EXISTS "${OM_PATH}/OpenMesh-9.0.0/build/Build/lib/libOpenMeshCore.a") # TODO add more lib file paths for windows
126 | # message("LSC: OpenMesh starting installing")
127 |
128 | # message("LSC: OpenMesh get installed")
129 | # else()
130 | # message("LSC: OpenMesh is already installed")
131 | # endif()
132 | # endif()^
133 | ###########
134 |
--------------------------------------------------------------------------------
/cmake/lscDownloadExternal.cmake:
--------------------------------------------------------------------------------
1 | include(DownloadProject)
2 |
3 | # With CMake 3.8 and above, we can hide warnings about git being in a
4 | # detached head by passing an extra GIT_CONFIG option
5 | if(NOT (${CMAKE_VERSION} VERSION_LESS "3.8.0"))
6 | set(SPARSE_INTERP_EXTRA_OPTIONS "GIT_CONFIG advice.detachedHead=false")
7 | else()
8 | set(SPARSE_INTERP_EXTRA_OPTIONS "")
9 | endif()
10 |
11 | function(sparse_interp_download_project name)
12 | download_project(
13 | PROJ ${name}
14 | SOURCE_DIR ${SPARSE_EXTERNAL}/${name}
15 | DOWNLOAD_DIR ${SPARSE_EXTERNAL}/.cache/${name}
16 | QUIET
17 | ${SPARSE_INTERP_EXTRA_OPTIONS}
18 | ${ARGN}
19 | )
20 | endfunction()
21 |
22 | ################################################################################
23 |
24 |
25 | # Eigen
26 | function(sparse_interp_download_eigen)
27 | sparse_interp_download_project(eigen
28 | GIT_REPOSITORY https://gitlab.com/libeigen/eigen.git
29 | GIT_TAG 3.4.0
30 | )
31 | endfunction()
32 |
33 |
34 |
35 | # libigl for timing and mesh processing
36 | function(sparse_interp_download_libigl)
37 | sparse_interp_download_project(libigl
38 | GIT_REPOSITORY https://github.com/libigl/libigl.git
39 | GIT_TAG aea868bd1fc64f71afecd2c51e51507a99d8e3e5
40 | )
41 | endfunction()
42 |
43 | # A modern string formatting library
44 | function(sparse_interp_download_fmt)
45 | sparse_interp_download_project(fmt
46 | GIT_REPOSITORY https://github.com/fmtlib/fmt.git
47 | GIT_TAG 6.2.0
48 | )
49 | endfunction()
50 |
51 |
52 |
--------------------------------------------------------------------------------
/cmake/lscUtils.cmake:
--------------------------------------------------------------------------------
1 | function(lsc_copy_headers)
2 | foreach(filepath IN ITEMS ${ARGN})
3 | get_filename_component(filename "${filepath}" NAME)
4 | if(${filename} MATCHES ".*\.(hpp|h|ipp)$")
5 | configure_file(${filepath} ${PROJECT_BINARY_DIR}/include/lsc/${filename})
6 | endif()
7 | endforeach()
8 | endfunction()
9 |
10 | function(prepend_current_path SOURCE_FILES)
11 | # Use recursive substitution to expand SOURCE_FILES
12 | unset(MODIFIED)
13 | foreach(SOURCE_FILE IN ITEMS ${${SOURCE_FILES}})
14 | list(APPEND MODIFIED "${CMAKE_CURRENT_SOURCE_DIR}/${SOURCE_FILE}")
15 | endforeach()
16 | set(${SOURCE_FILES} ${MODIFIED} PARENT_SCOPE)
17 | endfunction()
18 |
19 | function(lsc_set_source_group)
20 | foreach(filepath IN ITEMS ${ARGN})
21 | get_filename_component(folderpath "${filepath}" DIRECTORY)
22 | get_filename_component(foldername "${folderpath}" NAME)
23 | source_group(foldername FILES "${filepath}")
24 | endforeach()
25 | endfunction()
--------------------------------------------------------------------------------
/data/RectifyingPatternsLowRes.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/wangbolun300/RectifyingStripPatterns/c36941b5a917ba66bdadcbe7474d90f3f37c468a/data/RectifyingPatternsLowRes.pdf
--------------------------------------------------------------------------------
/data/fig/carpet60.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/wangbolun300/RectifyingStripPatterns/c36941b5a917ba66bdadcbe7474d90f3f37c468a/data/fig/carpet60.png
--------------------------------------------------------------------------------
/data/fig/code_teaser.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/wangbolun300/RectifyingStripPatterns/c36941b5a917ba66bdadcbe7474d90f3f37c468a/data/fig/code_teaser.png
--------------------------------------------------------------------------------
/data/fig/extractQuad.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/wangbolun300/RectifyingStripPatterns/c36941b5a917ba66bdadcbe7474d90f3f37c468a/data/fig/extractQuad.png
--------------------------------------------------------------------------------
/data/fig/mainpage.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/wangbolun300/RectifyingStripPatterns/c36941b5a917ba66bdadcbe7474d90f3f37c468a/data/fig/mainpage.png
--------------------------------------------------------------------------------
/data/fig/quad_diags.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/wangbolun300/RectifyingStripPatterns/c36941b5a917ba66bdadcbe7474d90f3f37c468a/data/fig/quad_diags.png
--------------------------------------------------------------------------------
/data/fig/smooth.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/wangbolun300/RectifyingStripPatterns/c36941b5a917ba66bdadcbe7474d90f3f37c468a/data/fig/smooth.png
--------------------------------------------------------------------------------
/data/fig/strips.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/wangbolun300/RectifyingStripPatterns/c36941b5a917ba66bdadcbe7474d90f3f37c468a/data/fig/strips.png
--------------------------------------------------------------------------------
/data/fig/strips2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/wangbolun300/RectifyingStripPatterns/c36941b5a917ba66bdadcbe7474d90f3f37c468a/data/fig/strips2.png
--------------------------------------------------------------------------------
/data/fig/strokes.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/wangbolun300/RectifyingStripPatterns/c36941b5a917ba66bdadcbe7474d90f3f37c468a/data/fig/strokes.png
--------------------------------------------------------------------------------
/data/fig/tracing.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/wangbolun300/RectifyingStripPatterns/c36941b5a917ba66bdadcbe7474d90f3f37c468a/data/fig/tracing.png
--------------------------------------------------------------------------------
/data/interactive/48p75_1.csv:
--------------------------------------------------------------------------------
1 | 8.03596
2 | 6.9953
3 | 7.36459
4 | 11.35
5 | 12.2931
6 | 11.678
7 | 10.7106
8 | 1.20357
9 | 0.864142
10 | 1.76955
11 | -1.28534
12 | -0.20413
13 | -0.68946
14 | 7.0882
15 | 6.76766
16 | 6.12014
17 | -7.78291
18 | -7.39273
19 | -7.95642
20 | -0.0821655
21 | 0.109018
22 | 0.489567
23 | -9.39055
24 | -10.2274
25 | -10.4293
26 | -11.167
27 | -11.3739
28 | -11.7315
29 | -9.47168
30 | -8.63673
31 | -9.20922
32 | -10.5208
33 | -10.7341
34 | -11.3298
35 | -9.53989
36 | -8.81055
37 | -9.38952
38 | 0.439947
39 | 0.00501737
40 | -0.866903
41 | 9.07217
42 | 8.71949
43 | 9.21109
44 | 6.85688
45 | 6.51723
46 | 5.93285
47 | 12.678
48 | 13.6877
49 | 13.2608
50 | -5.6247
51 | -6.56492
52 | -5.78695
53 | 8.42964
54 | 9.29208
55 | 8.70428
56 | 7.97005
57 | 8.2089
58 | 4.5546
59 | 5.73434
60 | 5.51295
61 | 6.09985
62 | 5.88181
63 | 9.09293
64 | 9.21283
65 | 8.87655
66 | 9.76229
67 | 9.38235
68 | 8.85874
69 | 8.55289
70 | 7.18411
71 | 8.3196
72 | 7.64191
73 | -8.53456
74 | -8.94854
75 | -8.63506
76 | 6.99312
77 | 7.62451
78 | 6.42951
79 | 7.55339
80 | 3.32812
81 | 3.64539
82 | 3.5404
83 | 12.8492
84 | 11.9858
85 | 13.3204
86 | -0.303642
87 | 0.483303
88 | 0.351778
89 | -13.0586
90 | -11.4721
91 | -13.1387
92 | -4.03759
93 | -5.7157
94 | -4.44615
95 | 6.38052
96 | 0.859382
97 | 1.96775
98 | 0.929042
99 | 2.14425
100 | 2.96511
101 | 2.25147
102 | 3.61963
103 | 4.16647
104 | 3.16643
105 | -11.3776
106 | -11.0993
107 | -12.8955
108 | 7.47598
109 | 7.56746
110 | 6.61941
111 | 7.38791
112 | 5.14414
113 | 5.3281
114 | 4.4168
115 | 5.78685
116 | -2.69068
117 | -2.69431
118 | 5.85144
119 | 6.57464
120 | 3.89521
121 | 3.13347
122 | 3.78863
123 | 4.79018
124 | -3.98474
125 | -4.61954
126 | -4.86406
127 | 9.43381
128 | 9.60298
129 | 10.1828
130 | -1.64914
131 | -0.728179
132 | -1.0293
133 | 8.46675
134 | 13.9314
135 | 12.1454
136 | 8.37209
137 | 8.48415
138 | 7.64079
139 | -3.91371
140 | -4.89743
141 | -5.85854
142 | 10.0111
143 | 9.93237
144 | 10.8088
145 | 5.3203
146 | 3.33558
147 | 1.61139
148 | 1.91651
149 | 4.372
150 | 4.29658
151 | 4.19395
152 | -1.86479
153 | -1.0085
154 | 0.460576
155 | -0.354125
156 | 4.78683
157 | 4.09989
158 | -3.11392
159 | -2.82059
160 | -3.75136
161 | -3.87188
162 | 5.07725
163 | 6.42874
164 | 10.039
165 | 9.07197
166 | 8.31029
167 | 9.04676
168 | 8.14423
169 | 3.68365
170 | 5.11092
171 | 8.36643
172 | 9.03421
173 | 2.99816
174 | 2.40948
175 | 1.80308
176 | 7.12544
177 | 6.35221
178 | 1.78334
179 | 2.10954
180 | 0.401483
181 | 4.45297
182 | 3.69413
183 | 9.5985
184 | 9.96792
185 | -9.265
186 | -1.90548
187 | 7.47812
188 | 7.5276
189 | -12.6998
190 | -11.0419
191 | -10.8414
192 | 9.09997
193 | 10.1375
194 | 10.942
195 | 7.6821
196 | -4.98137
197 | -6.03035
198 | -5.12641
199 | -11.4638
200 | -11.4181
201 | -10.5283
202 | 4.57007
203 | 11.6009
204 | 10.2856
205 | 9.29205
206 | 10.0465
207 | -1.28316
208 | -0.384564
209 | 0.524126
210 | -0.221655
211 | 0.467001
212 | 14.0181
213 | 14.3272
214 | 13.69
215 | 5.8757
216 | 9.25581
217 | 0.938473
218 | 0.266327
219 | 0.749932
220 | -0.288181
221 | 14.4883
222 | 14.5332
223 | 13.3354
224 | 14.489
225 | 14.3205
226 | 11.9973
227 | 11.9889
228 | 10.7704
229 | 9.91156
230 | 4.55133
231 | 2.5746
232 | 3.55425
233 | -5.03974
234 | -5.88115
235 | -5.88335
236 | 8.48821
237 | 8.79082
238 | 7.90486
239 | 9.85464
240 | 2.21742
241 | 2.51714
242 | -5.81789
243 | -6.61436
244 | 1.04132
245 | 1.39696
246 | 1.7867
247 | -7.48393
248 | -8.71432
249 | -8.3412
250 | 1.52824
251 | 2.45209
252 | -12.793
253 | -13.0304
254 | -12.0682
255 | -7.45547
256 | -8.45573
257 | -8.5026
258 | -7.62158
259 | -6.65447
260 | -6.8496
261 | -11.8145
262 | -9.63935
263 | -8.66849
264 | -9.52238
265 | -10.4575
266 | -10.2451
267 | -10.6661
268 | -9.87415
269 | -12.0386
270 | -10.0343
271 | -9.89212
272 | -11.284
273 | -10.6307
274 | -7.0901
275 | -6.78974
276 | -7.07866
277 | -6.57162
278 | -11.6009
279 | -12.5528
280 | -9.21641
281 | -10.5729
282 | -12.365
283 | -12.1951
284 | 3.45969
285 | 2.91987
286 | 3.40774
287 | 2.81026
288 | -0.49485
289 | -0.487298
290 | 0.088488
291 | -7.45228
292 | -8.64074
293 | -8.52532
294 | -7.01727
295 | -7.66498
296 | 2.76173
297 | -8.05976
298 | -3.84537
299 | 3.39676
300 | -1.05127
301 | 0.0289252
302 | -5.63974
303 | -10.1141
304 | -8.67204
305 | -9.04732
306 | -8.55293
307 | 11.2076
308 | 10.6032
309 | 9.75092
310 | -8.38736
311 | 11.5762
312 | 10.9536
313 | 11.9758
314 | -8.46545
315 | -8.57467
316 | 3.73876
317 | -1.28173
318 | -1.50117
319 | -2.18494
320 | -4.70192
321 | -5.84567
322 | -9.15077
323 | -8.04714
324 | -7.36903
325 | -6.59053
326 | -6.41938
327 | -6.09607
328 | -5.76128
329 | 1.15803
330 | -1.81586
331 | -0.0296213
332 | -0.972415
333 | 1.07437
334 | 0.236659
335 | 1.66087
336 | 1.31786
337 | -2.0503
338 | -3.0999
339 | -1.06089
340 | -1.19261
341 | -1.44685
342 | -0.946881
343 | -6.68701
344 | -6.16859
345 | 4.76522
346 | 9.45396
347 | 9.21827
348 | 9.33244
349 | -2.24438
350 | -3.18169
351 | -9.29348
352 | -7.03887
353 | -7.48284
354 | -7.87154
355 | -6.3126
356 | -8.02122
357 | -7.31848
358 | -1.97644
359 | 12.4533
360 | 11.1529
361 | 12.4783
362 | 11.5211
363 | 4.32241
364 | 3.99447
365 | 4.22941
366 | 1.9378
367 | -10.6708
368 | 12.8745
369 | 1.82156
370 | 10.149
371 | 4.02534
372 | -3.17216
373 | 4.12897
374 | 3.74539
375 | -4.12619
376 | -2.75191
377 | -0.911991
378 | 2.4872
379 | 3.09295
380 | 13.1344
381 | -8.15721
382 | -8.32776
383 | -10.5224
384 | -9.45923
385 | -8.20417
386 | 10.2688
387 | 10.8218
388 | 11.0855
389 | -9.42931
390 | 5.03423
391 | 4.6274
392 | 3.68336
393 | 3.27681
394 | 4.18896
395 | 2.74431
396 | -8.91378
397 | -1.84685
398 | -4.55699
399 | 8.52331
400 | 10.8766
401 | 10.8005
402 | -4.0476
403 | -5.02399
404 | -4.72136
405 | -4.58968
406 | -1.42133
407 | -3.78832
408 | -2.64533
409 | -3.20986
410 | -2.74164
411 | 4.6168
412 | -11.2315
413 | 2.11912
414 | -2.38333
415 | 9.16263
416 | -9.71552
417 | -4.51302
418 | -5.05366
419 | 6.7313
420 | 0.203412
421 | -3.93753
422 | 5.52915
423 | 4.83397
424 | 5.72746
425 | -9.71291
426 | -2.16397
427 | 2.88574
428 | -8.16934
429 | -3.99923
430 | 7.08468
431 | 7.44699
432 | -6.37163
433 | -7.44043
434 | 8.8828
435 | 8.65669
436 | 9.28124
437 | 11.0549
438 | -10.2746
439 | -11.3149
440 | -9.28792
441 | -8.74434
442 | -11.0897
443 | -11.9326
444 | -4.11785
445 | -10.2923
446 | -10.0844
447 | 10.562
448 | -9.43266
449 | 9.99942
450 | -9.60854
451 | -10.4109
452 | -10.1215
453 | -4.90602
454 | -11.1926
455 | -11.8488
456 | -11.824
457 | -11.3446
458 | -11.2217
459 | 13.4096
460 | -6.28183
461 | -10.6552
462 | -10.6878
463 | 9.36962
464 | -0.613301
465 | -9.43815
466 | -9.82946
467 | 6.91287
468 | 7.07616
469 | 7.52888
470 | 7.93233
471 | 8.62831
472 | 8.21541
473 | -5.25543
474 | -3.35126
475 | -4.27103
476 | -3.97062
477 | 1.78644
478 | 3.92854
479 | 2.82904
480 | 3.37277
481 | -3.79298
482 | 6.73167
483 | 3.71618
484 | 3.74735
485 | 6.30583
486 | 3.26398
487 | 2.50196
488 | 2.45614
489 | 1.17478
490 | -2.50508
491 | -1.66643
492 | 9.56955
493 | 3.28168
494 | -10.3014
495 | 9.0251
496 | -10.9184
497 | 8.52355
498 | 8.10201
499 | 5.1186
500 | 8.90205
501 | 0.914125
502 | 1.00948
503 | 7.74455
504 | -10.7463
505 | -11.3887
506 | 9.48774
507 | 9.33765
508 | 1.66675
509 | 1.60316
510 | 5.01363
511 | -4.44655
512 | 11.7718
513 | -12.4429
514 | 4.48172
515 | -1.13692
516 | -2.56266
517 | -2.43075
518 | -3.31649
519 | -2.8703
520 | -1.81756
521 | -3.20863
522 | -0.470531
523 | -3.82664
524 | -3.80931
525 | -3.0144
526 | 3.21061
527 | 0.526062
528 | 4.8161
529 | 4.53159
530 | 9.33303
531 | 5.71479
532 | -13.118
533 | 8.46492
534 | -6.79914
535 | 1.67186
536 | 2.91648
537 | -7.51797
538 | 10.16
539 | 2.28283
540 | -8.45334
541 | -7.18439
542 | -3.87998
543 | -8.78288
544 | -7.69282
545 | 9.15341
546 | -4.18069
547 | 3.2225
548 | 4.24314
549 | -8.30739
550 | -10.1772
551 | -4.74425
552 | -4.98027
553 | -1.63095
554 | -2.29251
555 | -5.82271
556 | -5.39759
557 | -5.76972
558 | 10.1112
559 | 1.79373
560 | 5.41885
561 | 3.39387
562 | 4.06917
563 | 6.2498
564 | -9.12753
565 | -9.62059
566 | -8.45127
567 | -2.57651
568 | 3.86191
569 | -3.07789
570 | -3.96162
571 | -9.12118
572 | 5.99633
573 | 3.47388
574 | 3.41529
575 | 6.00845
576 | 5.20303
577 | 4.80299
578 | 8.31923
579 | 5.0504
580 | 5.53419
581 | 5.36152
582 | -4.25624
583 | -7.42353
584 | 3.60047
585 | 2.93169
586 | 1.01301
587 | 10.3077
588 | 5.74947
589 | -4.50047
590 | -3.3611
591 | -8.75252
592 | 3.58009
593 | 3.69884
594 | 11.1918
595 | 1.52408
596 | -6.52447
597 | 12.275
598 | -3.96797
599 | 4.28497
600 | -7.36271
601 | 6.50852
602 | 9.34607
603 | 9.30546
604 | -4.08454
605 | 12.2282
606 | 3.75047
607 | -1.62546
608 | 5.14253
609 | 5.96661
610 | 3.87793
611 | 12.0817
612 | -5.4787
613 | -5.23192
614 | 2.31805
615 | -7.94609
616 | -8.15711
617 | -6.07137
618 | -8.79345
619 | -7.00655
620 | -8.39051
621 |
--------------------------------------------------------------------------------
/data/interactive/48p75_1b.csv:
--------------------------------------------------------------------------------
1 | 0.862327,0.161277,-0.479982
2 | 0.797869,0.110557,-0.592607
3 | 0.83494,0.12303,-0.536414
4 | 0.918752,0.317304,-0.234975
5 | 0,0,0
6 | 0,0,0
7 | 0.911752,0.28001,-0.300505
8 | 0.593257,0.329423,-0.734525
9 | 0.575902,0.348585,-0.739477
10 | 0.628461,0.327035,-0.705752
11 | 0.63394,0.212511,-0.743613
12 | 0.665439,0.208603,-0.716713
13 | 0.64093,0.19768,-0.741709
14 | 0.844704,0.100562,-0.525703
15 | 0.802957,0.0828138,-0.590256
16 | 0.767397,0.0506918,-0.639166
17 | 0,0,0
18 | 0,0,0
19 | 0.347316,0.0429175,-0.936765
20 | 0.541665,0.345952,-0.766106
21 | 0.54076,0.354283,-0.76293
22 | 0.559352,0.340663,-0.755695
23 | 0.420263,0.166043,-0.892084
24 | 0.358355,0.146426,-0.922031
25 | 0.400981,0.13481,-0.906117
26 | 0.52971,-0.00714498,-0.84815
27 | 0.504538,0.00357194,-0.863383
28 | 0,0,0
29 | 0.552127,0.0823065,-0.829688
30 | 0.534576,0.133742,-0.834475
31 | 0.523107,0.114073,-0.844598
32 | 0.1333,0.0607087,-0.989216
33 | 0,0,0
34 | 0,0,0
35 | 0.499264,0.115425,-0.858733
36 | 0.513004,0.146539,-0.84579
37 | 0.478283,0.135842,-0.867638
38 | 0.561923,0.0431687,-0.826062
39 | 0,0,0
40 | 0,0,0
41 | 0.970299,0.228899,-0.0783239
42 | 0.968245,0.229174,-0.0999151
43 | 0.973949,0.217465,-0.0642936
44 | 0.937812,0.258526,-0.231676
45 | 0,0,0
46 | 0.909084,0.291784,-0.297369
47 | 0.948693,0.315201,0.025165
48 | 0.940395,0.33899,0.0272626
49 | 0.942872,0.332772,-0.0160026
50 | 0.463446,0.286544,-0.838519
51 | 0.428269,0.266678,-0.863406
52 | 0.492721,0.27104,-0.826901
53 | 0.967525,0.224777,-0.115631
54 | 0.976334,0.207136,-0.0622319
55 | 0.933411,0.21308,-0.28869
56 | 0.904454,0.158026,-0.396221
57 | 0.931209,0.167023,-0.323967
58 | 0.656655,0.00824012,-0.754147
59 | 0.728339,0.0361482,-0.684264
60 | 0.711168,0.0296019,-0.702399
61 | 0.750598,0.0832646,-0.655492
62 | 0.734103,0.0590822,-0.676463
63 | 0,0,0
64 | 0.959598,0.201112,-0.19679
65 | 0,0,0
66 | 0.922116,0.270885,-0.276268
67 | 0.904475,0.243103,-0.350467
68 | 0.898906,0.214183,-0.382224
69 | 0.873373,0.193867,-0.446806
70 | 0,0,0
71 | 0.890372,0.178872,-0.41862
72 | 0.95607,0.239131,-0.169554
73 | 0,0,0
74 | 0.239204,0.050494,-0.969656
75 | 0,0,0
76 | 0,0,0
77 | 0.946619,0.239995,-0.215208
78 | 0.920987,0.255317,-0.294278
79 | 0.948747,0.238455,-0.207411
80 | 0.752238,0.229713,-0.617552
81 | 0,0,0
82 | 0,0,0
83 | 0,0,0
84 | 0.939617,0.317511,-0.127702
85 | 0,0,0
86 | 0.669315,0.23267,-0.705612
87 | 0.690064,0.226111,-0.687523
88 | 0.688843,0.225564,-0.688926
89 | 0,0,0
90 | 0.233744,0.0937398,-0.967769
91 | 0,0,0
92 | 0.470987,0.358817,-0.805867
93 | 0,0,0
94 | 0,0,0
95 | 0.806492,0.0695875,-0.587137
96 | 0.68705,0.191755,-0.700853
97 | 0.695625,0.167219,-0.698674
98 | 0.665871,0.174276,-0.725428
99 | 0.732651,0.211401,-0.646941
100 | 0.741302,0.194329,-0.642425
101 | 0.732254,0.203832,-0.649833
102 | 0,0,0
103 | 0.82145,0.274073,-0.500104
104 | 0.760809,0.289065,-0.581043
105 | 0.253382,0.103853,-0.961776
106 | 0.248812,0.106892,-0.962635
107 | 0,0,0
108 | 0.950458,0.238305,-0.199603
109 | 0.953675,0.238026,-0.183981
110 | 0.930325,0.252704,-0.265778
111 | 0.889321,0.105743,-0.444891
112 | 0.873809,0.265534,-0.40737
113 | 0.878495,0.271285,-0.393258
114 | 0.829905,0.283256,-0.48065
115 | 0.902089,0.280767,-0.327727
116 | 0.474395,0.365327,-0.800928
117 | 0.482105,0.355535,-0.800731
118 | 0,0,0
119 | 0.928133,0.253173,-0.272897
120 | 0,0,0
121 | 0,0,0
122 | 0.625758,0.00347907,-0.78001
123 | 0.670283,0.0236472,-0.741729
124 | 0.540897,0.278741,-0.793559
125 | 0.50475,0.291435,-0.812587
126 | 0.514794,0.28081,-0.810022
127 | 0.936203,0.251549,-0.245453
128 | 0.944228,0.259107,-0.203216
129 | 0.946457,0.275435,-0.16839
130 | 0.621132,0.231287,-0.748801
131 | 0.653544,0.228095,-0.721702
132 | 0.648171,0.223149,-0.728069
133 | 0.968498,0.22066,-0.115416
134 | 0,0,0
135 | 0.942088,0.318841,-0.103983
136 | 0.966011,0.223603,-0.129706
137 | 0.912827,0.19939,-0.356358
138 | 0.867574,0.139186,-0.477434
139 | 0.548109,0.122849,-0.827336
140 | 0,0,0
141 | 0,0,0
142 | 0.966465,0.247777,-0.0674667
143 | 0.969614,0.240882,-0.042749
144 | 0.962856,0.270008,-0.00173896
145 | 0,0,0
146 | 0.668613,0.0755198,-0.739767
147 | 0.620262,0.091102,-0.779087
148 | 0.646942,0.12505,-0.752217
149 | 0,0,0
150 | 0.770938,0.054181,-0.634601
151 | 0,0,0
152 | 0.568294,0.119468,-0.814107
153 | 0.584596,0.134966,-0.800021
154 | 0.600503,0.100998,-0.793218
155 | 0.608238,0.146877,-0.780048
156 | 0.785831,0.0587255,-0.615647
157 | 0.743568,0.0673879,-0.665256
158 | 0.558543,0.275119,-0.782525
159 | 0.575652,0.268942,-0.772207
160 | 0.540513,0.283739,-0.792049
161 | 0,0,0
162 | 0.693245,0.0478801,-0.71911
163 | 0.76976,0.0726233,-0.634189
164 | 0.938568,0.272102,-0.212254
165 | 0.917573,0.237605,-0.318754
166 | 0.843939,0.189952,-0.501683
167 | 0.861936,0.213439,-0.459903
168 | 0,0,0
169 | 0.619101,0.00696903,-0.785281
170 | 0.690952,0.0157405,-0.722729
171 | 0.946354,0.161514,-0.279869
172 | 0.947964,0.219108,-0.230992
173 | 0.596812,0.00334501,-0.802374
174 | 0,0,0
175 | 0,0,0
176 | 0.80329,0.122809,-0.582789
177 | 0.768211,0.112467,-0.630241
178 | 0.597888,0.058649,-0.799432
179 | 0.583589,0.0307686,-0.811466
180 | 0.57776,0.0663029,-0.813509
181 | 0.731534,0.0618575,-0.678994
182 | 0.704942,0.0845248,-0.704212
183 | 0.889356,0.241317,-0.388347
184 | 0.91237,0.262685,-0.313972
185 | 0.571258,0.0695425,-0.81782
186 | 0.615549,0.223029,-0.755884
187 | 0.912793,0.109835,-0.393377
188 | 0.928013,0.1091,-0.356221
189 | 0,0,0
190 | 0.308496,0.109783,-0.94487
191 | 0.279582,0.117159,-0.952947
192 | 0.88439,0.219643,-0.411839
193 | 0.948209,0.273078,-0.162258
194 | 0.944387,0.300531,-0.133467
195 | 0.833897,0.147187,-0.531934
196 | 0.526473,0.112968,-0.842653
197 | 0.494939,0.102443,-0.862871
198 | 0.518848,0.0980125,-0.84923
199 | 0.410288,0.0701989,-0.90925
200 | 0.441646,0.0541676,-0.895553
201 | 0.456751,0.0987946,-0.884092
202 | 0,0,0
203 | 0.928444,0.326757,-0.176696
204 | 0,0,0
205 | 0,0,0
206 | 0.88277,0.2447,-0.401047
207 | 0,0,0
208 | 0,0,0
209 | 0.579446,0.338689,-0.741306
210 | 0.653603,0.238436,-0.718299
211 | 0.676856,0.230216,-0.699191
212 | 0,0,0
213 | 0,0,0
214 | 0.94078,0.334047,0.0579979
215 | 0,0,0
216 | 0.97399,0.214349,-0.0734714
217 | 0.616835,0.284801,-0.733761
218 | 0.59804,0.288985,-0.747555
219 | 0.584362,0.318228,-0.746493
220 | 0.549292,0.325913,-0.769454
221 | 0,0,0
222 | 0,0,0
223 | 0.943038,0.326922,-0.0616776
224 | 0,0,0
225 | 0,0,0
226 | 0.946786,0.315857,-0.0618968
227 | 0.946132,0.309883,-0.0938399
228 | 0.959591,0.278119,-0.0428379
229 | 0.962422,0.249602,-0.10698
230 | 0,0,0
231 | 0,0,0
232 | 0.775713,0.296755,-0.556962
233 | 0.524638,0.270249,-0.807293
234 | 0.509224,0.257569,-0.821189
235 | 0.5117,0.255719,-0.820226
236 | 0.960059,0.236722,-0.149165
237 | 0,0,0
238 | 0,0,0
239 | 0,0,0
240 | 0.658633,0.301939,-0.689231
241 | 0.672188,0.303512,-0.675311
242 | 0.493759,0.301344,-0.815717
243 | 0,0,0
244 | 0.702112,0.200536,-0.683246
245 | 0.710579,0.204877,-0.67313
246 | 0.713514,0.185168,-0.67573
247 | 0.393763,0.24408,-0.886216
248 | 0.31717,0.203652,-0.926246
249 | 0.368488,0.214976,-0.904436
250 | 0.704717,0.225575,-0.672675
251 | 0.731166,0.228785,-0.642694
252 | 0,0,0
253 | 0,0,0
254 | 0.132561,0.0397132,-0.990379
255 | 0.501247,0.202992,-0.84116
256 | 0.473523,0.179387,-0.862321
257 | 0.493679,0.166102,-0.853638
258 | 0.321511,0.24228,-0.915387
259 | 0.384869,0.271821,-0.882038
260 | 0.34109,0.272453,-0.899682
261 | 0.209918,0.075815,-0.974776
262 | 0.250016,0.135683,-0.958688
263 | 0.273552,0.176682,-0.945492
264 | 0.231835,0.129601,-0.964084
265 | 0.486276,0.0773704,-0.870375
266 | 0.581246,0.0151676,-0.813587
267 | 0,0,0
268 | 0,0,0
269 | 0,0,0
270 | 0.505809,0.0918342,-0.857744
271 | 0.531036,0.0753876,-0.843989
272 | 0.477143,0.0300724,-0.878313
273 | 0.514579,0.0497391,-0.856001
274 | 0.319977,0.275511,-0.906481
275 | 0,0,0
276 | 0,0,0
277 | 0.465295,0.256553,-0.847162
278 | 0.364097,0.0842517,-0.927546
279 | 0,0,0
280 | 0.386512,0.175754,-0.905384
281 | 0.422083,0.118074,-0.898835
282 | 0,0,0
283 | 0,0,0
284 | 0,0,0
285 | 0.731828,0.185367,-0.655795
286 | 0,0,0
287 | 0.728395,0.173276,-0.662885
288 | 0.661999,0.232212,-0.712626
289 | 0.65876,0.23139,-0.715888
290 | 0.683756,0.222661,-0.69491
291 | 0.354908,0.245303,-0.902146
292 | 0.294155,0.20323,-0.933904
293 | 0,0,0
294 | 0.45232,0.0920258,-0.887096
295 | 0,0,0
296 | 0.680413,0.119215,-0.723069
297 | 0.295221,0.225381,-0.928465
298 | 0.513326,0.289476,-0.807904
299 | 0,0,0
300 | 0.504714,0.363655,-0.782955
301 | 0.542844,0.353936,-0.76161
302 | 0.42416,0.289641,-0.858019
303 | 0.268522,0.143025,-0.952597
304 | 0,0,0
305 | 0.226825,0.138548,-0.964031
306 | 0,0,0
307 | 0,0,0
308 | 0.973334,0.228369,-0.0216311
309 | 0.97283,0.221741,-0.066576
310 | 0,0,0
311 | 0.957173,0.288829,0.0199411
312 | 0.966432,0.255285,0.028959
313 | 0.958734,0.278047,0.0593249
314 | 0.332147,0.0754718,-0.940204
315 | 0.310126,0.0884086,-0.946602
316 | 0.744235,0.0777448,-0.663378
317 | 0.629644,0.239606,-0.739012
318 | 0.621312,0.235269,-0.747409
319 | 0.586598,0.253672,-0.769126
320 | 0.469498,0.297906,-0.831158
321 | 0.378641,0.298648,-0.876051
322 | 0.27309,0.172165,-0.946457
323 | 0.29186,0.224766,-0.929676
324 | 0,0,0
325 | 0.490995,0.243267,-0.836509
326 | 0,0,0
327 | 0,0,0
328 | 0,0,0
329 | 0.705052,0.213881,-0.676134
330 | 0.609511,0.253016,-0.751319
331 | 0.630172,0.256331,-0.732928
332 | 0.641819,0.240683,-0.728108
333 | 0.7083,0.216342,-0.671945
334 | 0.686771,0.218303,-0.693318
335 | 0.624903,0.303643,-0.719234
336 | 0.608102,0.340185,-0.717278
337 | 0.582216,0.267804,-0.767667
338 | 0.539617,0.288206,-0.791046
339 | 0.629341,0.245365,-0.737379
340 | 0.59979,0.263025,-0.755693
341 | 0.506899,0.346497,-0.789301
342 | 0.509768,0.357281,-0.782615
343 | 0.50396,0.230918,-0.832289
344 | 0.511229,0.250569,-0.822108
345 | 0.771844,0.0556275,-0.633374
346 | 0.961829,0.219514,-0.163396
347 | 0,0,0
348 | 0,0,0
349 | 0.572173,0.137865,-0.808463
350 | 0.558907,0.131489,-0.81874
351 | 0.269521,0.168156,-0.948199
352 | 0.510655,0.218222,-0.831632
353 | 0.512319,0.192091,-0.837037
354 | 0.521318,0.178038,-0.834585
355 | 0.509162,0.255401,-0.821904
356 | 0,0,0
357 | 0,0,0
358 | 0.551638,0.292275,-0.781199
359 | 0,0,0
360 | 0.973664,0.227983,0.00211524
361 | 0.962296,0.267277,0.0505172
362 | 0.970763,0.237312,0.0360996
363 | 0,0,0
364 | 0.802296,0.304403,-0.513491
365 | 0.824505,0.325943,-0.46255
366 | 0.675101,0.151783,-0.721943
367 | 0.233305,0.112127,-0.965918
368 | 0.948575,0.309325,0.0672559
369 | 0.57077,0.018837,-0.820894
370 | 0.891388,0.259971,-0.371272
371 | 0,0,0
372 | 0,0,0
373 | 0,0,0
374 | 0.786484,0.281789,-0.54958
375 | 0.532873,0.278624,-0.799011
376 | 0.518096,0.312858,-0.796051
377 | 0.572048,0.0707739,-0.817161
378 | 0.716985,0.164233,-0.677466
379 | 0.727532,0.137467,-0.672163
380 | 0.948623,0.306611,0.0781291
381 | 0,0,0
382 | 0.254213,-0.0228429,-0.96689
383 | 0.55522,0.0141663,-0.831583
384 | 0.447941,0.154171,-0.880672
385 | 0.510697,0.169644,-0.842858
386 | 0.951815,0.271734,-0.142161
387 | 0.955891,0.281848,-0.0827098
388 | 0.948614,0.294767,-0.115082
389 | 0.335809,0.174216,-0.925679
390 | 0.809213,0.0429929,-0.58594
391 | 0,0,0
392 | 0.628975,0.0180079,-0.777217
393 | 0.639419,0.0467198,-0.767438
394 | 0.667772,0.0281289,-0.743835
395 | 0.607267,0.0337942,-0.793779
396 | 0,0,0
397 | 0.607005,0.254215,-0.752942
398 | 0.516421,0.283642,-0.807996
399 | 0.965191,0.222897,-0.136831
400 | 0.942002,0.301495,-0.147424
401 | 0.936995,0.296443,-0.184828
402 | 0.547108,0.113418,-0.829343
403 | 0,0,0
404 | 0,0,0
405 | 0.535013,0.0928149,-0.839731
406 | 0.597399,0.161432,-0.785534
407 | 0.559087,0.126511,-0.819401
408 | 0.585932,0.172223,-0.791852
409 | 0.566096,0.141522,-0.812112
410 | 0.579209,0.233672,-0.780971
411 | 0.66725,0.00780913,-0.744793
412 | 0,0,0
413 | 0.688434,0.302371,-0.659266
414 | 0.578376,0.152326,-0.801425
415 | 0,0,0
416 | 0.257619,0.140589,-0.955964
417 | 0.478349,0.338177,-0.810444
418 | 0.49515,0.305414,-0.813357
419 | 0.855598,0.0717642,-0.512644
420 | 0.682274,0.214865,-0.69881
421 | 0.549221,0.118181,-0.827278
422 | 0.731765,0.0300281,-0.680896
423 | 0.694595,0.0223002,-0.719056
424 | 0.766988,0.048185,-0.63985
425 | 0.29426,0.160571,-0.942141
426 | 0,0,0
427 | 0.745463,0.205291,-0.634147
428 | 0.538808,0.157165,-0.827645
429 | 0.511359,0.302396,-0.804409
430 | 0,0,0
431 | 0.814303,0.152883,-0.559945
432 | 0.515488,0.243747,-0.821507
433 | 0.513473,0.205112,-0.833232
434 | 0.959241,0.174011,-0.22266
435 | 0,0,0
436 | 0.871315,0.22172,-0.43778
437 | 0,0,0
438 | 0.148811,0.0714338,-0.986283
439 | 0.0981096,0.0417097,-0.994301
440 | 0.196293,0.102323,-0.975192
441 | 0,0,0
442 | 0.204768,0.0925609,-0.974426
443 | 0.17348,0.0599832,-0.98301
444 | 0.544204,0.116371,-0.830845
445 | 0.219744,0.109234,-0.969423
446 | 0.171043,0.0887606,-0.981258
447 | 0.921896,0.3006,-0.244434
448 | 0.183537,0.0801702,-0.979739
449 | 0.958012,0.249147,-0.14191
450 | 0.200382,0.112366,-0.973254
451 | 0.189013,0.0966689,-0.977206
452 | 0.18621,0.096772,-0.977733
453 | 0.430241,0.304718,-0.849742
454 | 0.114702,0.0493228,-0.992175
455 | 0.0754228,0.0160414,-0.997023
456 | 0.103518,0.0318763,-0.994117
457 | 0.150616,0.0650426,-0.986451
458 | 0.130866,0.0582992,-0.989686
459 | 0,0,0
460 | 0.478619,0.0789055,-0.874471
461 | 0.146411,0.071613,-0.986629
462 | 0.161903,0.0800265,-0.983557
463 | 0,0,0
464 | 0.577668,0.291827,-0.762326
465 | 0.213305,0.0639341,-0.974892
466 | 0.17229,0.0647611,-0.982916
467 | 0.898643,0.0743679,-0.432339
468 | 0,0,0
469 | 0,0,0
470 | 0,0,0
471 | 0,0,0
472 | 0,0,0
473 | 0.507879,0.2828,-0.813686
474 | 0.525616,0.276146,-0.804656
475 | 0.4637,0.306789,-0.831182
476 | 0.484217,0.290382,-0.825356
477 | 0.645761,0.321758,-0.692434
478 | 0.798937,0.301695,-0.520272
479 | 0.707425,0.138501,-0.693086
480 | 0.713593,0.107182,-0.692314
481 | 0.494096,0.325928,-0.806004
482 | 0.872625,0.0841474,-0.481089
483 | 0.780728,0.283946,-0.556632
484 | 0.77811,0.29345,-0.555368
485 | 0,0,0
486 | 0.736844,0.27468,-0.617751
487 | 0.711434,0.246833,-0.65798
488 | 0.690764,0.26857,-0.671358
489 | 0.712172,0.217171,-0.66757
490 | 0.500144,0.335563,-0.798283
491 | 0.528577,0.320429,-0.786089
492 | 0.955261,0.232437,-0.18289
493 | 0.757902,0.233225,-0.609279
494 | 0.252894,0.126921,-0.959133
495 | 0.957438,0.188425,-0.218653
496 | 0.162569,0.0781859,-0.983595
497 | 0.853364,0.197203,-0.482578
498 | 0.844959,0.173044,-0.506064
499 | 0.874513,0.30706,-0.375445
500 | 0,0,0
501 | 0.654109,0.252164,-0.713132
502 | 0.63385,0.140091,-0.760664
503 | 0,0,0
504 | 0.192106,0.0910486,-0.977142
505 | 0.172113,0.0737939,-0.98231
506 | 0.972162,0.227768,-0.0549741
507 | 0.968891,0.23572,-0.0754124
508 | 0.68177,0.244571,-0.689475
509 | 0.645784,0.27893,-0.710748
510 | 0.729487,0.0424132,-0.68268
511 | 0,0,0
512 | 0.952518,0.303271,-0.0271207
513 | 0,0,0
514 | 0.841859,0.32158,-0.433428
515 | 0.577373,0.0942113,-0.811027
516 | 0,0,0
517 | 0.578952,0.245899,-0.777399
518 | 0.533957,0.276799,-0.79892
519 | 0.567203,0.269978,-0.778076
520 | 0.600237,0.17638,-0.780133
521 | 0.534904,0.277633,-0.797997
522 | 0.629229,0.177059,-0.756785
523 | 0,0,0
524 | 0,0,0
525 | 0.581928,0.203457,-0.78738
526 | 0.751277,0.25392,-0.609187
527 | 0,0,0
528 | 0,0,0
529 | 0,0,0
530 | 0.95537,0.21789,-0.199482
531 | 0.898276,0.278567,-0.339858
532 | 0,0,0
533 | 0.953198,0.152326,-0.26117
534 | 0,0,0
535 | 0.720659,0.211609,-0.660206
536 | 0.718679,0.304385,-0.625181
537 | 0.48392,0.214164,-0.848504
538 | 0.976879,0.212117,-0.0267654
539 | 0.663791,0.314945,-0.678375
540 | 0.314018,0.0904708,-0.945098
541 | 0.419313,0.0582304,-0.905974
542 | 0,0,0
543 | 0,0,0
544 | 0,0,0
545 | 0.9681,0.228694,-0.10238
546 | 0,0,0
547 | 0.743402,0.262723,-0.615087
548 | 0.693836,0.0493693,-0.718439
549 | 0.41123,0.20683,-0.887757
550 | 0,0,0
551 | 0,0,0
552 | 0,0,0
553 | 0.613369,0.194463,-0.765483
554 | 0.603022,0.20074,-0.772056
555 | 0.497938,0.0626151,-0.86495
556 | 0,0,0
557 | 0,0,0
558 | 0.974316,0.224797,-0.0133597
559 | 0.719404,0.20849,-0.662563
560 | 0,0,0
561 | 0.739521,0.294215,-0.605432
562 | 0.802839,0.29782,-0.516483
563 | 0.868137,0.0416866,-0.494572
564 | 0.250201,0.0819004,-0.964724
565 | 0,0,0
566 | 0.443654,0.195646,-0.874583
567 | 0.592975,0.183115,-0.784125
568 | 0,0,0
569 | 0.579458,0.19579,-0.791136
570 | 0,0,0
571 | 0,0,0
572 | 0.832849,0.0618731,-0.550032
573 | 0,0,0
574 | 0,0,0
575 | 0.81359,0.0519312,-0.579117
576 | 0.765838,0.0491953,-0.64115
577 | 0.853882,0.290512,-0.431844
578 | 0,0,0
579 | 0.870131,0.302252,-0.389251
580 | 0.829602,0.0377609,-0.557092
581 | 0.800473,0.0512701,-0.597172
582 | 0,0,0
583 | 0.44197,0.233375,-0.866142
584 | 0.759855,0.284655,-0.58446
585 | 0.705217,0.292594,-0.645801
586 | 0,0,0
587 | 0.977518,0.210614,-0.0100159
588 | 0,0,0
589 | 0,0,0
590 | 0.574559,0.165814,-0.801492
591 | 0,0,0
592 | 0,0,0
593 | 0,0,0
594 | 0.96962,0.240845,0.0427964
595 | 0,0,0
596 | 0,0,0
597 | 0.961577,0.266831,0.0645977
598 | 0,0,0
599 | 0.821167,0.299602,-0.485721
600 | 0.473718,0.219843,-0.852797
601 | 0,0,0
602 | 0,0,0
603 | 0,0,0
604 | 0,0,0
605 | 0.954803,0.293407,0.0475799
606 | 0,0,0
607 | 0,0,0
608 | 0,0,0
609 | 0,0,0
610 | 0,0,0
611 | 0.953936,0.299543,0.0167624
612 | 0,0,0
613 | 0,0,0
614 | 0.723995,0.19945,-0.660344
615 | 0,0,0
616 | 0,0,0
617 | 0,0,0
618 | 0.255626,0.167667,-0.952126
619 | 0,0,0
620 | 0,0,0
621 |
--------------------------------------------------------------------------------
/data/interactive/readme.txt:
--------------------------------------------------------------------------------
1 | This example is to test interactive design.
2 |
3 | "s_shape_mod.obj" is the mesh. Don't forget to unit-scale it after loading the mesh.
4 | "s1*" are the strokes. Load it and it will be drawn on the mesh.
5 | "smooth1.csv" is the scalar field follows the strokes.
6 | "48p75_1.csv" and "48p75_1b.csv" are the scalar field and binormal vector field of \theta = 48.75. They are obtained by automatic optimization.
--------------------------------------------------------------------------------
/data/interactive/s1_0x.csv:
--------------------------------------------------------------------------------
1 | 33.07,18.7471,-19.0375,-49.8022,-52.4624,-50.4465,-47.0893,-33.0032,-29.7834
2 |
--------------------------------------------------------------------------------
/data/interactive/s1_0y.csv:
--------------------------------------------------------------------------------
1 | -355.91,-345.269,-302.999,-258.579,-248.984,-200.603,-188.435,-134.438,-120.139
2 |
--------------------------------------------------------------------------------
/data/interactive/s1_0z.csv:
--------------------------------------------------------------------------------
1 | -39.7859,-46.5491,-62.6832,-61.855,-61.2318,-56.6277,-52.2693,0.100386,20.5503
2 |
--------------------------------------------------------------------------------
/data/interactive/s1_1x.csv:
--------------------------------------------------------------------------------
1 | 115.982,97.0812,91.3869,85.082,68.7273,46.1017,43.567,37.8529,36.5658,37.6581,46.8171,50.4302,52.7224
2 |
--------------------------------------------------------------------------------
/data/interactive/s1_1y.csv:
--------------------------------------------------------------------------------
1 | -349.718,-340.16,-336.27,-331.799,-317.14,-274.962,-263.948,-234.565,-225.003,-188.429,-147.307,-131.181,-120.38
2 |
--------------------------------------------------------------------------------
/data/interactive/s1_1z.csv:
--------------------------------------------------------------------------------
1 | -40.2064,-45.8709,-48.4637,-51.2193,-59.1983,-72.2619,-73.3765,-74.0749,-73.753,-68.1695,-38.3745,-17.8432,-2.27759
2 |
--------------------------------------------------------------------------------
/data/interactive/s1_2x.csv:
--------------------------------------------------------------------------------
1 | 191.677,182.882,162.55,157.445,145.889,126.444,117.198,117.239,119.94,123.286,127.344,129.528,137.614,139.613,147.989,153.237
2 |
--------------------------------------------------------------------------------
/data/interactive/s1_2y.csv:
--------------------------------------------------------------------------------
1 | -339.875,-336.424,-321.513,-316.342,-298.983,-269.306,-240.287,-229.543,-199.244,-186.971,-176.262,-169.391,-152.313,-144.516,-117.825,-104.799
2 |
--------------------------------------------------------------------------------
/data/interactive/s1_2z.csv:
--------------------------------------------------------------------------------
1 | -48.661,-50.0454,-56.8305,-59.1013,-65.9668,-73.1246,-75.3263,-75.415,-74.1311,-71.5865,-68.0111,-64.3998,-50.7838,-42.2722,-5.08892,17.0347
2 |
--------------------------------------------------------------------------------
/data/interactive/s1_bc.csv:
--------------------------------------------------------------------------------
1 | 0.122656,0.412127,0.465217,0.249853,0.0148849,0.735262,0.359696,0.039519,0.600785,0.0404916,0.564883,0.394625,0.505678,0.207065,0.287257,0.633304,0.244545,0.122151,0.395323,0.473119,0.131558,0.180808,0.33748,0.481712,0.377473,0.407713,0.214814,
2 | 0.0622153,0.104708,0.833076,0.697893,0.238788,0.0633194,0.163153,0.136152,0.700695,0.121477,0.512179,0.366344,0.804763,0.126753,0.0684836,0.299477,0.667946,0.032577,0.128203,0.672333,0.199464,0.0191341,0.0175537,0.963312,0.071943,0.428398,0.499659,0.105926,0.556339,0.337735,0.354001,0.0790401,0.566959,0.372584,0.211889,0.415528,0.175161,0.354651,0.470188,
3 | 0.0227417,0.977011,0.000247595,0.611338,0.244285,0.144377,0.809235,0.120052,0.0707127,0.595075,0.223878,0.181048,0.219208,0.276629,0.504163,0.335655,0.586323,0.0780212,0.045721,0.0947566,0.859522,0.249708,0.28308,0.467211,0.794384,0.106716,0.0989003,0.457385,0.174496,0.368119,0.0364131,0.935739,0.0278482,0.0160019,0.855413,0.128585,0.0461732,0.14286,0.810967,0.361052,0.488565,0.150383,0.0572123,0.0223372,0.92045,0.764508,0.0152765,0.220215,
4 |
--------------------------------------------------------------------------------
/data/interactive/s1_flist.csv:
--------------------------------------------------------------------------------
1 | 416,263,922,861,749,592,316,556,539
2 | 952,531,66,67,685,352,353,712,202,131,140,846,836
3 | 745,313,537,538,206,989,949,1025,354,483,575,1053,1068,760,617,331
4 |
--------------------------------------------------------------------------------
/data/interactive/smooth1.csv:
--------------------------------------------------------------------------------
1 | 8.35407
2 | 7.23357
3 | 7.57716
4 | 12.0729
5 | 12.986
6 | 12.4133
7 | 11.4315
8 | 1.19141
9 | 1.13375
10 | 1.9471
11 | -1.8667
12 | -0.52978
13 | -1.16479
14 | 7.27009
15 | 6.8923
16 | 6.19234
17 | -8.5145
18 | -8.11819
19 | -8.70649
20 | -0.243981
21 | 0.324514
22 | 0.439075
23 | -11.0872
24 | -11.9239
25 | -12.0574
26 | -12.3022
27 | -12.6114
28 | -12.86
29 | -10.3907
30 | -9.62306
31 | -10.3921
32 | -11.5491
33 | -11.5702
34 | -12.267
35 | -10.9222
36 | -10.141
37 | -10.9039
38 | 0.482517
39 | 0.320988
40 | -0.628889
41 | 10.4759
42 | 10.1032
43 | 10.6839
44 | 8.11606
45 | 7.7425
46 | 7.08089
47 | 14.25
48 | 15.2852
49 | 14.7345
50 | -7.16037
51 | -8.21328
52 | -7.36284
53 | 9.82874
54 | 10.8334
55 | 9.25482
56 | 8.33025
57 | 8.76239
58 | 4.63347
59 | 5.79735
60 | 5.64786
61 | 6.55376
62 | 6.14175
63 | 10.3627
64 | 10.4445
65 | 10.1238
66 | 10.3696
67 | 9.91255
68 | 9.30443
69 | 8.98496
70 | 8.45782
71 | 8.66783
72 | 8.98728
73 | -9.3735
74 | -9.84894
75 | -9.49333
76 | 8.60954
77 | 9.16386
78 | 7.83836
79 | 9.04212
80 | 3.86733
81 | 4.49898
82 | 4.47004
83 | 13.5686
84 | 12.8499
85 | 14.142
86 | -1.05585
87 | -0.0746753
88 | -0.0896064
89 | -14.5585
90 | -12.9923
91 | -14.6038
92 | -3.58489
93 | -4.9764
94 | -3.48994
95 | 6.54433
96 | 0.830811
97 | 2.29446
98 | 0.8812
99 | 2.12265
100 | 3.48905
101 | 2.4507
102 | 5.48181
103 | 5.58551
104 | 4.62322
105 | -12.9839
106 | -12.6557
107 | -14.4466
108 | 8.89141
109 | 8.94677
110 | 7.87449
111 | 7.71707
112 | 6.57233
113 | 6.57488
114 | 5.50302
115 | 6.91177
116 | -2.15513
117 | -2.72622
118 | 7.01192
119 | 7.88963
120 | 4.51914
121 | 3.67476
122 | 4.0776
123 | 5.01305
124 | -5.34254
125 | -6.03392
126 | -6.33356
127 | 10.0727
128 | 10.4086
129 | 11.0793
130 | -2.23832
131 | -1.18541
132 | -1.53694
133 | 9.92744
134 | 14.957
135 | 13.3214
136 | 9.87066
137 | 8.89478
138 | 7.88273
139 | -4.45757
140 | -5.10696
141 | -6.17339
142 | 11.4626
143 | 11.4192
144 | 12.3691
145 | 6.38801
146 | 3.72899
147 | 1.64809
148 | 2.07885
149 | 5.71439
150 | 5.39021
151 | 5.47262
152 | -2.2168
153 | -1.38983
154 | 0.314216
155 | -0.669745
156 | 5.86044
157 | 4.92394
158 | -4.35507
159 | -4.00196
160 | -5.05758
161 | -3.9015
162 | 5.50852
163 | 6.56857
164 | 10.7579
165 | 9.56207
166 | 9.1103
167 | 9.91983
168 | 9.17626
169 | 3.69416
170 | 5.12423
171 | 9.13473
172 | 9.79854
173 | 3.21552
174 | 2.90931
175 | 2.26081
176 | 7.5651
177 | 6.98389
178 | 1.76116
179 | 2.11754
180 | 0.266565
181 | 5.03656
182 | 4.27344
183 | 10.2322
184 | 10.5962
185 | -9.93281
186 | -2.54091
187 | 7.98633
188 | 8.32409
189 | -14.2885
190 | -12.702
191 | -12.5079
192 | 9.63107
193 | 11.2323
194 | 12.0805
195 | 8.01831
196 | -5.59689
197 | -6.65551
198 | -5.86078
199 | -12.9624
200 | -12.8453
201 | -12.0065
202 | 5.27177
203 | 12.3599
204 | 11.1618
205 | 10.2715
206 | 10.8619
207 | 0.232801
208 | 1.25605
209 | 1.51307
210 | -1.0297
211 | -0.186546
212 | 15.8794
213 | 16.0798
214 | 15.3934
215 | 7.55088
216 | 10.8451
217 | 0.48229
218 | -0.335121
219 | 0.455384
220 | -0.755314
221 | 16.1208
222 | 16.0287
223 | 14.6554
224 | 15.8792
225 | 15.5492
226 | 13.4186
227 | 13.2822
228 | 12.2665
229 | 11.3091
230 | 6.35042
231 | 4.46975
232 | 4.60627
233 | -6.45047
234 | -7.41358
235 | -7.30936
236 | 10.0282
237 | 10.3138
238 | 9.461
239 | 11.3694
240 | 2.18516
241 | 2.74436
242 | -5.83293
243 | -6.16533
244 | 1.11222
245 | 1.58372
246 | 2.12611
247 | -9.21444
248 | -10.4186
249 | -10.1096
250 | 1.18037
251 | 2.39595
252 | -14.0874
253 | -14.4173
254 | -13.4361
255 | -8.90778
256 | -10.0885
257 | -10.0071
258 | -9.18443
259 | -8.22789
260 | -8.26069
261 | -13.3029
262 | -10.9818
263 | -9.87572
264 | -10.7935
265 | -11.8385
266 | -11.1021
267 | -11.4904
268 | -10.501
269 | -13.3048
270 | -11.3091
271 | -11.0154
272 | -12.6362
273 | -11.8614
274 | -8.24008
275 | -7.71559
276 | -8.01193
277 | -8.22869
278 | -13.1443
279 | -14.1101
280 | -10.9754
281 | -12.1302
282 | -13.7992
283 | -13.5383
284 | 4.46859
285 | 3.64498
286 | 4.4972
287 | 3.60586
288 | -1.16089
289 | -1.00805
290 | -0.242924
291 | -9.11219
292 | -10.2677
293 | -9.01789
294 | -7.6404
295 | -8.13121
296 | 3.18061
297 | -9.47933
298 | -5.06273
299 | 4.51501
300 | -0.425446
301 | 0.754511
302 | -7.07985
303 | -11.7579
304 | -9.65645
305 | -10.1663
306 | -9.55018
307 | 12.7965
308 | 12.2645
309 | 11.3592
310 | -9.19893
311 | 13.1818
312 | 12.5976
313 | 13.6882
314 | -9.25864
315 | -9.39835
316 | 4.71092
317 | -2.06288
318 | -2.17192
319 | -3.05373
320 | -6.01914
321 | -7.14555
322 | -10.5564
323 | -9.2529
324 | -8.30278
325 | -8.1919
326 | -7.33061
327 | -6.99609
328 | -6.62287
329 | 1.1612
330 | -2.79622
331 | -0.794771
332 | -1.84589
333 | 0.833099
334 | 0.0325416
335 | 1.48578
336 | 1.80565
337 | -3.16265
338 | -4.25161
339 | -2.02348
340 | -2.17402
341 | -1.7667
342 | -0.896528
343 | -8.19926
344 | -7.46595
345 | 5.60197
346 | 10.747
347 | 10.5122
348 | 10.6594
349 | -2.91218
350 | -3.94998
351 | -10.8222
352 | -8.00245
353 | -8.70525
354 | -8.89005
355 | -6.98047
356 | -8.01669
357 | -7.08488
358 | -2.97418
359 | 14.1945
360 | 12.8887
361 | 14.3183
362 | 13.3056
363 | 5.15566
364 | 4.59212
365 | 4.90576
366 | 2.16346
367 | -12.1332
368 | 14.5725
369 | 1.9821
370 | 10.8826
371 | 5.2599
372 | -1.97583
373 | 4.9168
374 | 4.29316
375 | -5.43857
376 | -3.65092
377 | -0.93062
378 | 3.07173
379 | 3.89575
380 | 14.969
381 | -8.91857
382 | -9.10343
383 | -11.5466
384 | -11.0718
385 | -9.46916
386 | 11.54
387 | 12.2544
388 | 12.4063
389 | -11.1822
390 | 6.3726
391 | 6.0781
392 | 3.65754
393 | 3.50141
394 | 4.33568
395 | 2.79359
396 | -9.23398
397 | -2.9235
398 | -5.73468
399 | 10.0612
400 | 11.7911
401 | 11.5778
402 | -4.84089
403 | -5.73921
404 | -5.44179
405 | -5.37099
406 | -2.03192
407 | -4.56922
408 | -3.43623
409 | -4.01785
410 | -3.34442
411 | 4.61489
412 | -12.1984
413 | 3.37812
414 | -3.14372
415 | 10.5428
416 | -11.1197
417 | -4.48633
418 | -5.61212
419 | 7.06436
420 | 0.00307759
421 | -4.72921
422 | 5.58296
423 | 4.91193
424 | 5.91386
425 | -11.43
426 | -0.79376
427 | 3.18045
428 | -8.82009
429 | -4.98856
430 | 8.08249
431 | 8.04356
432 | -7.48518
433 | -8.0501
434 | 10.0574
435 | 9.89606
436 | 10.0147
437 | 11.8417
438 | -11.4122
439 | -12.4145
440 | -10.3783
441 | -9.71125
442 | -12.5256
443 | -13.3761
444 | -4.86185
445 | -11.6716
446 | -11.2845
447 | 11.2661
448 | -10.4562
449 | 11.3124
450 | -10.7995
451 | -11.7424
452 | -11.3829
453 | -6.07406
454 | -12.3877
455 | -12.9982
456 | -13.082
457 | -12.6968
458 | -12.5094
459 | 15.2776
460 | -6.99052
461 | -11.8856
462 | -11.9773
463 | 10.7164
464 | -1.39816
465 | -10.3237
466 | -10.8012
467 | 7.73676
468 | 8.38162
469 | 8.79597
470 | 9.16259
471 | 9.97987
472 | 9.54542
473 | -6.22382
474 | -4.07762
475 | -5.05922
476 | -4.98496
477 | 2.65647
478 | 4.40598
479 | 3.42236
480 | 4.05529
481 | -4.40775
482 | 7.26856
483 | 4.15236
484 | 4.14865
485 | 7.23501
486 | 3.40625
487 | 2.38279
488 | 2.34252
489 | 0.809509
490 | -3.07527
491 | -2.42265
492 | 10.7315
493 | 3.57245
494 | -11.797
495 | 10.0941
496 | -12.2507
497 | 9.09934
498 | 8.57913
499 | 6.09903
500 | 10.2726
501 | 0.379388
502 | 0.954861
503 | 9.04952
504 | -12.1221
505 | -12.7902
506 | 10.9523
507 | 10.7638
508 | 1.32429
509 | 1.29623
510 | 5.2816
511 | -5.16055
512 | 13.289
513 | -13.6263
514 | 5.24173
515 | -1.29743
516 | -2.43094
517 | -3.12056
518 | -3.89245
519 | -3.97608
520 | -2.51933
521 | -4.18931
522 | -0.883536
523 | -4.40924
524 | -4.32875
525 | -3.65056
526 | 3.38598
527 | 2.29818
528 | 5.7745
529 | 5.41967
530 | 10.3141
531 | 6.88411
532 | -14.5522
533 | 9.50745
534 | -7.19013
535 | 1.65149
536 | 3.64903
537 | -9.11952
538 | 11.8306
539 | 2.73736
540 | -9.16861
541 | -7.89988
542 | -4.33406
543 | -9.70352
544 | -8.65407
545 | 10.7015
546 | -4.85315
547 | 3.35822
548 | 4.58747
549 | -10.0741
550 | -10.9549
551 | -5.43548
552 | -5.72277
553 | -2.29677
554 | -2.9947
555 | -6.56512
556 | -6.11918
557 | -6.48578
558 | 11.6786
559 | 2.01689
560 | 7.13138
561 | 3.86141
562 | 4.84533
563 | 7.29525
564 | -9.91507
565 | -10.3005
566 | -10.1734
567 | -3.34999
568 | 5.05524
569 | -3.79526
570 | -4.59497
571 | -9.71232
572 | 6.67268
573 | 4.61607
574 | 4.54555
575 | 6.40692
576 | 5.67507
577 | 5.78117
578 | 9.55564
579 | 6.00021
580 | 6.6157
581 | 6.11498
582 | -4.77804
583 | -9.15682
584 | 3.96
585 | 3.06977
586 | 1.39943
587 | 11.9599
588 | 6.59392
589 | -5.1166
590 | -4.11743
591 | -9.62962
592 | 4.72222
593 | 4.86845
594 | 12.9112
595 | 3.35283
596 | -7.23692
597 | 14.0794
598 | -4.43703
599 | 4.96387
600 | -9.0411
601 | 7.9286
602 | 10.7142
603 | 10.6845
604 | -4.57224
605 | 13.8753
606 | 4.55932
607 | -1.43751
608 | 5.91159
609 | 7.53011
610 | 4.66615
611 | 13.6628
612 | -6.30215
613 | -6.02724
614 | 2.82801
615 | -8.92822
616 | -9.14392
617 | -6.78744
618 | -9.94377
619 | -7.72476
620 | -9.38923
621 |
--------------------------------------------------------------------------------
/data/pseudo-geodesic/readme.txt:
--------------------------------------------------------------------------------
1 | "Hall.obj" is the triangle mesh,
2 | "72.csv" is the scalar field for \theta = 72 degree,
3 | "72b.csv" is the corresponding binormal vectors of the level sets.
--------------------------------------------------------------------------------
/data/quads/info_colleft.csv:
--------------------------------------------------------------------------------
1 | 474,518,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1
2 | 391,432,475,519,563,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1
3 | 352,392,433,476,520,564,608,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1
4 | 280,315,353,393,434,477,521,565,609,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1
5 | 281,316,354,394,435,478,522,566,610,654,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1
6 | 248,282,317,355,395,436,479,523,567,611,655,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1
7 | 218,249,283,318,356,396,437,480,524,568,612,656,699,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1
8 | 190,219,250,284,319,357,397,438,481,525,569,613,657,700,742,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1
9 | 191,220,251,285,320,358,398,439,482,526,570,614,658,701,743,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1
10 | 141,165,192,221,252,286,321,359,399,440,483,527,571,615,659,702,744,783,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1
11 | 119,142,166,193,222,253,287,322,360,400,441,484,528,572,616,660,703,745,784,821,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1
12 | 99,120,143,167,194,223,254,288,323,361,401,442,485,529,573,617,661,704,746,785,822,858,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1
13 | 80,100,121,144,168,195,224,255,289,324,362,402,443,486,530,574,618,662,705,747,786,823,859,893,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1
14 | 63,81,101,122,145,169,196,225,256,290,325,363,403,444,487,531,575,619,663,706,748,787,824,860,894,926,956,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1
15 | 48,64,82,102,123,146,170,197,226,257,291,326,364,404,445,488,532,576,620,664,707,749,788,825,861,895,927,957,985,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1
16 | 35,49,65,83,103,124,147,171,198,227,258,292,327,365,405,446,489,533,577,621,665,708,750,789,826,862,896,928,958,986,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1
17 | 14,24,36,50,66,84,104,125,148,172,199,228,259,293,328,366,406,447,490,534,578,622,666,709,751,790,827,863,897,929,959,987,1012,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1
18 | 6,15,25,37,51,67,85,105,126,149,173,200,229,260,294,329,367,407,448,491,535,579,623,667,710,752,791,828,864,898,930,960,988,1013,1036,-1,-1,-1,-1,-1,-1,-1,-1,-1
19 | 0,7,16,26,38,52,68,86,106,127,150,174,201,230,261,295,330,368,408,449,492,536,580,624,668,711,753,792,829,865,899,931,961,989,1014,1037,1058,-1,-1,-1,-1,-1,-1,-1
20 | 1,8,17,27,39,53,69,87,107,128,151,175,202,231,262,296,331,369,409,450,493,537,581,625,669,712,754,793,830,866,900,932,962,990,1015,1038,1059,1078,-1,-1,-1,-1,-1,-1
21 | 2,9,18,28,40,54,70,88,108,129,152,176,203,232,263,297,332,370,410,451,494,538,582,626,670,713,755,794,831,867,901,933,963,991,1016,1039,1060,1079,1096,1111,-1,-1,-1,-1
22 | 3,10,19,29,41,55,71,89,109,130,153,177,204,233,264,298,333,371,411,452,495,539,583,627,671,714,756,795,832,868,902,934,964,992,1017,1040,1061,1080,1097,1112,1126,-1,-1,-1
23 | 4,11,20,30,42,56,72,90,110,131,154,178,205,234,265,299,334,372,412,453,496,540,584,628,672,715,757,796,833,869,903,935,965,993,1018,1041,1062,1081,1098,1113,1127,1139,1150,-1
24 | 12,21,31,43,57,73,91,111,132,155,179,206,235,266,300,335,373,413,454,497,541,585,629,673,716,758,797,834,870,904,936,966,994,1019,1042,1063,1082,1099,1114,1128,1140,1151,1160,-1
25 | 22,32,44,58,74,92,112,133,156,180,207,236,267,301,336,374,414,455,498,542,586,630,674,717,759,798,835,871,905,937,967,995,1020,1043,1064,1083,1100,1115,1129,1141,1152,1161,1169,1176
26 | 33,45,59,75,93,113,134,157,181,208,237,268,302,337,375,415,456,499,543,587,631,675,718,760,799,836,872,906,938,968,996,1021,1044,1065,1084,1101,1116,1130,1142,1153,1162,1170,1177,-1
27 | 46,60,76,94,114,135,158,182,209,238,269,303,338,376,416,457,500,544,588,632,676,719,761,800,837,873,907,939,969,997,1022,1045,1066,1085,1102,1117,1131,1143,1154,1163,1171,1178,-1,-1
28 | 61,77,95,115,136,159,183,210,239,270,304,339,377,417,458,501,545,589,633,677,720,762,801,838,874,908,940,970,998,1023,1046,1067,1086,1103,1118,1132,1144,1155,1164,1172,1179,-1,-1,-1
29 | 78,96,116,137,160,184,211,240,271,305,340,378,418,459,502,546,590,634,678,721,763,802,839,875,909,941,971,999,1024,1047,1068,1087,1104,1119,1133,1145,1156,1165,1173,-1,-1,-1,-1,-1
30 | 97,117,138,161,185,212,241,272,306,341,379,419,460,503,547,591,635,679,722,764,803,840,876,910,942,972,1000,1025,1048,1069,1088,1105,1120,1134,1146,1157,1166,1174,-1,-1,-1,-1,-1,-1
31 | 139,162,186,213,242,273,307,342,380,420,461,504,548,592,636,680,723,765,804,841,877,911,943,973,1001,1026,1049,1070,1089,1106,1121,1135,1147,1158,1167,-1,-1,-1,-1,-1,-1,-1,-1,-1
32 | 163,187,214,243,274,308,343,381,421,462,505,549,593,637,681,724,766,805,842,878,912,944,974,1002,1027,1050,1071,1090,1107,1122,1136,1148,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1
33 | 188,215,244,275,309,344,382,422,463,506,550,594,638,682,725,767,806,843,879,913,945,975,1003,1028,1051,1072,1091,1108,1123,1137,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1
34 | 216,245,276,310,345,383,423,464,507,551,595,639,683,726,768,807,844,880,914,946,976,1004,1029,1052,1073,1092,1109,1124,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1
35 | 246,277,311,346,384,424,465,508,552,596,640,684,727,769,808,845,881,915,947,977,1005,1030,1053,1074,1093,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1
36 | 278,312,347,385,425,466,509,553,597,641,685,728,770,809,846,882,916,948,978,1006,1031,1054,1075,1094,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1
37 | 313,348,386,426,467,510,554,598,642,686,729,771,810,847,883,917,949,979,1007,1032,1055,1076,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1
38 | 349,387,427,468,511,555,599,643,687,730,772,811,848,884,918,950,980,1008,1033,1056,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1
39 | 350,388,428,469,512,556,600,644,688,731,773,812,849,885,919,951,981,1009,1034,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1
40 | 389,429,470,513,557,601,645,689,732,774,813,850,886,920,952,982,1010,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1
41 | 430,471,514,558,602,646,690,733,775,814,851,887,921,953,983,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1
42 | 472,515,559,603,647,691,734,776,815,852,888,922,954,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1
43 | 516,560,604,648,692,735,777,816,853,889,923,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1
44 | 561,605,649,693,736,778,817,854,890,924,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1
45 | 606,650,694,737,779,818,855,891,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1
46 | 651,695,738,780,819,856,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1
47 | 652,696,739,781,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1
48 | 697,740,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1
49 |
--------------------------------------------------------------------------------
/data/quads/info_colright.csv:
--------------------------------------------------------------------------------
1 | 475,519,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1
2 | 392,433,476,520,564,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1
3 | 353,393,434,477,521,565,609,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1
4 | 281,316,354,394,435,478,522,566,610,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1
5 | 282,317,355,395,436,479,523,567,611,655,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1
6 | 249,283,318,356,396,437,480,524,568,612,656,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1
7 | 219,250,284,319,357,397,438,481,525,569,613,657,700,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1
8 | 191,220,251,285,320,358,398,439,482,526,570,614,658,701,743,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1
9 | 192,221,252,286,321,359,399,440,483,527,571,615,659,702,744,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1
10 | 142,166,193,222,253,287,322,360,400,441,484,528,572,616,660,703,745,784,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1
11 | 120,143,167,194,223,254,288,323,361,401,442,485,529,573,617,661,704,746,785,822,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1
12 | 100,121,144,168,195,224,255,289,324,362,402,443,486,530,574,618,662,705,747,786,823,859,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1
13 | 81,101,122,145,169,196,225,256,290,325,363,403,444,487,531,575,619,663,706,748,787,824,860,894,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1
14 | 64,82,102,123,146,170,197,226,257,291,326,364,404,445,488,532,576,620,664,707,749,788,825,861,895,927,957,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1
15 | 49,65,83,103,124,147,171,198,227,258,292,327,365,405,446,489,533,577,621,665,708,750,789,826,862,896,928,958,986,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1
16 | 36,50,66,84,104,125,148,172,199,228,259,293,328,366,406,447,490,534,578,622,666,709,751,790,827,863,897,929,959,987,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1
17 | 15,25,37,51,67,85,105,126,149,173,200,229,260,294,329,367,407,448,491,535,579,623,667,710,752,791,828,864,898,930,960,988,1013,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1
18 | 7,16,26,38,52,68,86,106,127,150,174,201,230,261,295,330,368,408,449,492,536,580,624,668,711,753,792,829,865,899,931,961,989,1014,1037,-1,-1,-1,-1,-1,-1,-1,-1,-1
19 | 1,8,17,27,39,53,69,87,107,128,151,175,202,231,262,296,331,369,409,450,493,537,581,625,669,712,754,793,830,866,900,932,962,990,1015,1038,1059,-1,-1,-1,-1,-1,-1,-1
20 | 2,9,18,28,40,54,70,88,108,129,152,176,203,232,263,297,332,370,410,451,494,538,582,626,670,713,755,794,831,867,901,933,963,991,1016,1039,1060,1079,-1,-1,-1,-1,-1,-1
21 | 3,10,19,29,41,55,71,89,109,130,153,177,204,233,264,298,333,371,411,452,495,539,583,627,671,714,756,795,832,868,902,934,964,992,1017,1040,1061,1080,1097,1112,-1,-1,-1,-1
22 | 4,11,20,30,42,56,72,90,110,131,154,178,205,234,265,299,334,372,412,453,496,540,584,628,672,715,757,796,833,869,903,935,965,993,1018,1041,1062,1081,1098,1113,1127,-1,-1,-1
23 | 5,12,21,31,43,57,73,91,111,132,155,179,206,235,266,300,335,373,413,454,497,541,585,629,673,716,758,797,834,870,904,936,966,994,1019,1042,1063,1082,1099,1114,1128,1140,1151,-1
24 | 13,22,32,44,58,74,92,112,133,156,180,207,236,267,301,336,374,414,455,498,542,586,630,674,717,759,798,835,871,905,937,967,995,1020,1043,1064,1083,1100,1115,1129,1141,1152,1161,-1
25 | 23,33,45,59,75,93,113,134,157,181,208,237,268,302,337,375,415,456,499,543,587,631,675,718,760,799,836,872,906,938,968,996,1021,1044,1065,1084,1101,1116,1130,1142,1153,1162,1170,1177
26 | 34,46,60,76,94,114,135,158,182,209,238,269,303,338,376,416,457,500,544,588,632,676,719,761,800,837,873,907,939,969,997,1022,1045,1066,1085,1102,1117,1131,1143,1154,1163,1171,1178,-1
27 | 47,61,77,95,115,136,159,183,210,239,270,304,339,377,417,458,501,545,589,633,677,720,762,801,838,874,908,940,970,998,1023,1046,1067,1086,1103,1118,1132,1144,1155,1164,1172,1179,-1,-1
28 | 62,78,96,116,137,160,184,211,240,271,305,340,378,418,459,502,546,590,634,678,721,763,802,839,875,909,941,971,999,1024,1047,1068,1087,1104,1119,1133,1145,1156,1165,1173,1180,-1,-1,-1
29 | 79,97,117,138,161,185,212,241,272,306,341,379,419,460,503,547,591,635,679,722,764,803,840,876,910,942,972,1000,1025,1048,1069,1088,1105,1120,1134,1146,1157,1166,1174,-1,-1,-1,-1,-1
30 | 98,118,139,162,186,213,242,273,307,342,380,420,461,504,548,592,636,680,723,765,804,841,877,911,943,973,1001,1026,1049,1070,1089,1106,1121,1135,1147,1158,1167,1175,-1,-1,-1,-1,-1,-1
31 | 140,163,187,214,243,274,308,343,381,421,462,505,549,593,637,681,724,766,805,842,878,912,944,974,1002,1027,1050,1071,1090,1107,1122,1136,1148,1159,1168,-1,-1,-1,-1,-1,-1,-1,-1,-1
32 | 164,188,215,244,275,309,344,382,422,463,506,550,594,638,682,725,767,806,843,879,913,945,975,1003,1028,1051,1072,1091,1108,1123,1137,1149,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1
33 | 189,216,245,276,310,345,383,423,464,507,551,595,639,683,726,768,807,844,880,914,946,976,1004,1029,1052,1073,1092,1109,1124,1138,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1
34 | 217,246,277,311,346,384,424,465,508,552,596,640,684,727,769,808,845,881,915,947,977,1005,1030,1053,1074,1093,1110,1125,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1
35 | 247,278,312,347,385,425,466,509,553,597,641,685,728,770,809,846,882,916,948,978,1006,1031,1054,1075,1094,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1
36 | 279,313,348,386,426,467,510,554,598,642,686,729,771,810,847,883,917,949,979,1007,1032,1055,1076,1095,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1
37 | 314,349,387,427,468,511,555,599,643,687,730,772,811,848,884,918,950,980,1008,1033,1056,1077,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1
38 | 350,388,428,469,512,556,600,644,688,731,773,812,849,885,919,951,981,1009,1034,1057,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1
39 | 351,389,429,470,513,557,601,645,689,732,774,813,850,886,920,952,982,1010,1035,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1
40 | 390,430,471,514,558,602,646,690,733,775,814,851,887,921,953,983,1011,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1
41 | 431,472,515,559,603,647,691,734,776,815,852,888,922,954,984,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1
42 | 473,516,560,604,648,692,735,777,816,853,889,923,955,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1
43 | 517,561,605,649,693,736,778,817,854,890,924,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1
44 | 562,606,650,694,737,779,818,855,891,925,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1
45 | 607,651,695,738,780,819,856,892,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1
46 | 652,696,739,781,820,857,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1
47 | 653,697,740,782,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1
48 | 698,741,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1
49 |
--------------------------------------------------------------------------------
/data/quads/info_cols.csv:
--------------------------------------------------------------------------------
1 | 474,518,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1
2 | 391,432,475,519,563,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1
3 | 352,392,433,476,520,564,608,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1
4 | 280,315,353,393,434,477,521,565,609,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1
5 | 281,316,354,394,435,478,522,566,610,654,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1
6 | 248,282,317,355,395,436,479,523,567,611,655,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1
7 | 218,249,283,318,356,396,437,480,524,568,612,656,699,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1
8 | 190,219,250,284,319,357,397,438,481,525,569,613,657,700,742,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1
9 | 191,220,251,285,320,358,398,439,482,526,570,614,658,701,743,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1
10 | 141,165,192,221,252,286,321,359,399,440,483,527,571,615,659,702,744,783,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1
11 | 119,142,166,193,222,253,287,322,360,400,441,484,528,572,616,660,703,745,784,821,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1
12 | 99,120,143,167,194,223,254,288,323,361,401,442,485,529,573,617,661,704,746,785,822,858,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1
13 | 80,100,121,144,168,195,224,255,289,324,362,402,443,486,530,574,618,662,705,747,786,823,859,893,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1
14 | 63,81,101,122,145,169,196,225,256,290,325,363,403,444,487,531,575,619,663,706,748,787,824,860,894,926,956,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1
15 | 48,64,82,102,123,146,170,197,226,257,291,326,364,404,445,488,532,576,620,664,707,749,788,825,861,895,927,957,985,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1
16 | 35,49,65,83,103,124,147,171,198,227,258,292,327,365,405,446,489,533,577,621,665,708,750,789,826,862,896,928,958,986,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1
17 | 14,24,36,50,66,84,104,125,148,172,199,228,259,293,328,366,406,447,490,534,578,622,666,709,751,790,827,863,897,929,959,987,1012,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1
18 | 6,15,25,37,51,67,85,105,126,149,173,200,229,260,294,329,367,407,448,491,535,579,623,667,710,752,791,828,864,898,930,960,988,1013,1036,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1
19 | 0,7,16,26,38,52,68,86,106,127,150,174,201,230,261,295,330,368,408,449,492,536,580,624,668,711,753,792,829,865,899,931,961,989,1014,1037,1058,-1,-1,-1,-1,-1,-1,-1,-1,-1
20 | 1,8,17,27,39,53,69,87,107,128,151,175,202,231,262,296,331,369,409,450,493,537,581,625,669,712,754,793,830,866,900,932,962,990,1015,1038,1059,1078,-1,-1,-1,-1,-1,-1,-1,-1
21 | 2,9,18,28,40,54,70,88,108,129,152,176,203,232,263,297,332,370,410,451,494,538,582,626,670,713,755,794,831,867,901,933,963,991,1016,1039,1060,1079,1096,1111,-1,-1,-1,-1,-1,-1
22 | 3,10,19,29,41,55,71,89,109,130,153,177,204,233,264,298,333,371,411,452,495,539,583,627,671,714,756,795,832,868,902,934,964,992,1017,1040,1061,1080,1097,1112,1126,-1,-1,-1,-1,-1
23 | 4,11,20,30,42,56,72,90,110,131,154,178,205,234,265,299,334,372,412,453,496,540,584,628,672,715,757,796,833,869,903,935,965,993,1018,1041,1062,1081,1098,1113,1127,1139,1150,-1,-1,-1
24 | 5,12,21,31,43,57,73,91,111,132,155,179,206,235,266,300,335,373,413,454,497,541,585,629,673,716,758,797,834,870,904,936,966,994,1019,1042,1063,1082,1099,1114,1128,1140,1151,1160,-1,-1
25 | 13,22,32,44,58,74,92,112,133,156,180,207,236,267,301,336,374,414,455,498,542,586,630,674,717,759,798,835,871,905,937,967,995,1020,1043,1064,1083,1100,1115,1129,1141,1152,1161,1169,1176,-1
26 | 23,33,45,59,75,93,113,134,157,181,208,237,268,302,337,375,415,456,499,543,587,631,675,718,760,799,836,872,906,938,968,996,1021,1044,1065,1084,1101,1116,1130,1142,1153,1162,1170,1177,-1,-1
27 | 34,46,60,76,94,114,135,158,182,209,238,269,303,338,376,416,457,500,544,588,632,676,719,761,800,837,873,907,939,969,997,1022,1045,1066,1085,1102,1117,1131,1143,1154,1163,1171,1178,-1,-1,-1
28 | 47,61,77,95,115,136,159,183,210,239,270,304,339,377,417,458,501,545,589,633,677,720,762,801,838,874,908,940,970,998,1023,1046,1067,1086,1103,1118,1132,1144,1155,1164,1172,1179,-1,-1,-1,-1
29 | 62,78,96,116,137,160,184,211,240,271,305,340,378,418,459,502,546,590,634,678,721,763,802,839,875,909,941,971,999,1024,1047,1068,1087,1104,1119,1133,1145,1156,1165,1173,1180,-1,-1,-1,-1,-1
30 | 79,97,117,138,161,185,212,241,272,306,341,379,419,460,503,547,591,635,679,722,764,803,840,876,910,942,972,1000,1025,1048,1069,1088,1105,1120,1134,1146,1157,1166,1174,-1,-1,-1,-1,-1,-1,-1
31 | 98,118,139,162,186,213,242,273,307,342,380,420,461,504,548,592,636,680,723,765,804,841,877,911,943,973,1001,1026,1049,1070,1089,1106,1121,1135,1147,1158,1167,1175,-1,-1,-1,-1,-1,-1,-1,-1
32 | 140,163,187,214,243,274,308,343,381,421,462,505,549,593,637,681,724,766,805,842,878,912,944,974,1002,1027,1050,1071,1090,1107,1122,1136,1148,1159,1168,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1
33 | 164,188,215,244,275,309,344,382,422,463,506,550,594,638,682,725,767,806,843,879,913,945,975,1003,1028,1051,1072,1091,1108,1123,1137,1149,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1
34 | 189,216,245,276,310,345,383,423,464,507,551,595,639,683,726,768,807,844,880,914,946,976,1004,1029,1052,1073,1092,1109,1124,1138,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1
35 | 217,246,277,311,346,384,424,465,508,552,596,640,684,727,769,808,845,881,915,947,977,1005,1030,1053,1074,1093,1110,1125,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1
36 | 247,278,312,347,385,425,466,509,553,597,641,685,728,770,809,846,882,916,948,978,1006,1031,1054,1075,1094,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1
37 | 279,313,348,386,426,467,510,554,598,642,686,729,771,810,847,883,917,949,979,1007,1032,1055,1076,1095,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1
38 | 314,349,387,427,468,511,555,599,643,687,730,772,811,848,884,918,950,980,1008,1033,1056,1077,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1
39 | 350,388,428,469,512,556,600,644,688,731,773,812,849,885,919,951,981,1009,1034,1057,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1
40 | 351,389,429,470,513,557,601,645,689,732,774,813,850,886,920,952,982,1010,1035,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1
41 | 390,430,471,514,558,602,646,690,733,775,814,851,887,921,953,983,1011,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1
42 | 431,472,515,559,603,647,691,734,776,815,852,888,922,954,984,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1
43 | 473,516,560,604,648,692,735,777,816,853,889,923,955,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1
44 | 517,561,605,649,693,736,778,817,854,890,924,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1
45 | 562,606,650,694,737,779,818,855,891,925,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1
46 | 607,651,695,738,780,819,856,892,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1
47 | 652,696,739,781,820,857,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1
48 | 653,697,740,782,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1
49 | 698,741,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1
50 |
--------------------------------------------------------------------------------
/data/quads/info_rowleft.csv:
--------------------------------------------------------------------------------
1 | 0,1,2,3,4,5,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1
2 | 6,7,8,9,10,11,12,13,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1
3 | 14,15,16,17,18,19,20,21,22,23,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1
4 | 24,25,26,27,28,29,30,31,32,33,34,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1
5 | 35,36,37,38,39,40,41,42,43,44,45,46,47,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1
6 | 48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1
7 | 63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1
8 | 80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1
9 | 99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1
10 | 119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1
11 | 141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1
12 | 165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1
13 | 190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1
14 | 218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1
15 | 248,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,265,266,267,268,269,270,271,272,273,274,275,276,277,278,279,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1
16 | 280,281,282,283,284,285,286,287,288,289,290,291,292,293,294,295,296,297,298,299,300,301,302,303,304,305,306,307,308,309,310,311,312,313,314,-1,-1,-1,-1,-1,-1,-1,-1,-1
17 | 315,316,317,318,319,320,321,322,323,324,325,326,327,328,329,330,331,332,333,334,335,336,337,338,339,340,341,342,343,344,345,346,347,348,349,350,351,-1,-1,-1,-1,-1,-1,-1
18 | 352,353,354,355,356,357,358,359,360,361,362,363,364,365,366,367,368,369,370,371,372,373,374,375,376,377,378,379,380,381,382,383,384,385,386,387,388,389,390,-1,-1,-1,-1,-1
19 | 391,392,393,394,395,396,397,398,399,400,401,402,403,404,405,406,407,408,409,410,411,412,413,414,415,416,417,418,419,420,421,422,423,424,425,426,427,428,429,430,431,-1,-1,-1
20 | 432,433,434,435,436,437,438,439,440,441,442,443,444,445,446,447,448,449,450,451,452,453,454,455,456,457,458,459,460,461,462,463,464,465,466,467,468,469,470,471,472,473,-1,-1
21 | 474,475,476,477,478,479,480,481,482,483,484,485,486,487,488,489,490,491,492,493,494,495,496,497,498,499,500,501,502,503,504,505,506,507,508,509,510,511,512,513,514,515,516,517
22 | 519,520,521,522,523,524,525,526,527,528,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,545,546,547,548,549,550,551,552,553,554,555,556,557,558,559,560,561,562
23 | 564,565,566,567,568,569,570,571,572,573,574,575,576,577,578,579,580,581,582,583,584,585,586,587,588,589,590,591,592,593,594,595,596,597,598,599,600,601,602,603,604,605,606,607
24 | 610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,627,628,629,630,631,632,633,634,635,636,637,638,639,640,641,642,643,644,645,646,647,648,649,650,651,652,653
25 | 656,657,658,659,660,661,662,663,664,665,666,667,668,669,670,671,672,673,674,675,676,677,678,679,680,681,682,683,684,685,686,687,688,689,690,691,692,693,694,695,696,697,698,-1
26 | 700,701,702,703,704,705,706,707,708,709,710,711,712,713,714,715,716,717,718,719,720,721,722,723,724,725,726,727,728,729,730,731,732,733,734,735,736,737,738,739,740,-1,-1,-1
27 | 744,745,746,747,748,749,750,751,752,753,754,755,756,757,758,759,760,761,762,763,764,765,766,767,768,769,770,771,772,773,774,775,776,777,778,779,780,781,-1,-1,-1,-1,-1,-1
28 | 784,785,786,787,788,789,790,791,792,793,794,795,796,797,798,799,800,801,802,803,804,805,806,807,808,809,810,811,812,813,814,815,816,817,818,819,820,-1,-1,-1,-1,-1,-1,-1
29 | 822,823,824,825,826,827,828,829,830,831,832,833,834,835,836,837,838,839,840,841,842,843,844,845,846,847,848,849,850,851,852,853,854,855,856,-1,-1,-1,-1,-1,-1,-1,-1,-1
30 | 859,860,861,862,863,864,865,866,867,868,869,870,871,872,873,874,875,876,877,878,879,880,881,882,883,884,885,886,887,888,889,890,891,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1
31 | 894,895,896,897,898,899,900,901,902,903,904,905,906,907,908,909,910,911,912,913,914,915,916,917,918,919,920,921,922,923,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1
32 | 926,927,928,929,930,931,932,933,934,935,936,937,938,939,940,941,942,943,944,945,946,947,948,949,950,951,952,953,954,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1
33 | 957,958,959,960,961,962,963,964,965,966,967,968,969,970,971,972,973,974,975,976,977,978,979,980,981,982,983,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1
34 | 987,988,989,990,991,992,993,994,995,996,997,998,999,1000,1001,1002,1003,1004,1005,1006,1007,1008,1009,1010,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1
35 | 1013,1014,1015,1016,1017,1018,1019,1020,1021,1022,1023,1024,1025,1026,1027,1028,1029,1030,1031,1032,1033,1034,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1
36 | 1037,1038,1039,1040,1041,1042,1043,1044,1045,1046,1047,1048,1049,1050,1051,1052,1053,1054,1055,1056,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1
37 | 1059,1060,1061,1062,1063,1064,1065,1066,1067,1068,1069,1070,1071,1072,1073,1074,1075,1076,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1
38 | 1079,1080,1081,1082,1083,1084,1085,1086,1087,1088,1089,1090,1091,1092,1093,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1
39 | 1096,1097,1098,1099,1100,1101,1102,1103,1104,1105,1106,1107,1108,1109,1110,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1
40 | 1112,1113,1114,1115,1116,1117,1118,1119,1120,1121,1122,1123,1124,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1
41 | 1127,1128,1129,1130,1131,1132,1133,1134,1135,1136,1137,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1
42 | 1139,1140,1141,1142,1143,1144,1145,1146,1147,1148,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1
43 | 1151,1152,1153,1154,1155,1156,1157,1158,1159,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1
44 | 1161,1162,1163,1164,1165,1166,1167,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1
45 | 1169,1170,1171,1172,1173,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1
46 |
--------------------------------------------------------------------------------
/data/quads/info_rowright.csv:
--------------------------------------------------------------------------------
1 | 7,8,9,10,11,12,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1
2 | 15,16,17,18,19,20,21,22,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1
3 | 24,25,26,27,28,29,30,31,32,33,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1
4 | 36,37,38,39,40,41,42,43,44,45,46,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1
5 | 49,50,51,52,53,54,55,56,57,58,59,60,61,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1
6 | 64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1
7 | 81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1
8 | 100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1
9 | 120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1
10 | 142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1
11 | 165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1
12 | 192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1
13 | 219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1
14 | 249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,265,266,267,268,269,270,271,272,273,274,275,276,277,278,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1
15 | 282,283,284,285,286,287,288,289,290,291,292,293,294,295,296,297,298,299,300,301,302,303,304,305,306,307,308,309,310,311,312,313,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1
16 | 315,316,317,318,319,320,321,322,323,324,325,326,327,328,329,330,331,332,333,334,335,336,337,338,339,340,341,342,343,344,345,346,347,348,349,-1,-1,-1,-1,-1,-1,-1,-1,-1
17 | 353,354,355,356,357,358,359,360,361,362,363,364,365,366,367,368,369,370,371,372,373,374,375,376,377,378,379,380,381,382,383,384,385,386,387,388,389,-1,-1,-1,-1,-1,-1,-1
18 | 392,393,394,395,396,397,398,399,400,401,402,403,404,405,406,407,408,409,410,411,412,413,414,415,416,417,418,419,420,421,422,423,424,425,426,427,428,429,430,-1,-1,-1,-1,-1
19 | 432,433,434,435,436,437,438,439,440,441,442,443,444,445,446,447,448,449,450,451,452,453,454,455,456,457,458,459,460,461,462,463,464,465,466,467,468,469,470,471,472,-1,-1,-1
20 | 475,476,477,478,479,480,481,482,483,484,485,486,487,488,489,490,491,492,493,494,495,496,497,498,499,500,501,502,503,504,505,506,507,508,509,510,511,512,513,514,515,516,-1,-1
21 | 518,519,520,521,522,523,524,525,526,527,528,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,545,546,547,548,549,550,551,552,553,554,555,556,557,558,559,560,561
22 | 563,564,565,566,567,568,569,570,571,572,573,574,575,576,577,578,579,580,581,582,583,584,585,586,587,588,589,590,591,592,593,594,595,596,597,598,599,600,601,602,603,604,605,606
23 | 608,609,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,627,628,629,630,631,632,633,634,635,636,637,638,639,640,641,642,643,644,645,646,647,648,649,650,651
24 | 654,655,656,657,658,659,660,661,662,663,664,665,666,667,668,669,670,671,672,673,674,675,676,677,678,679,680,681,682,683,684,685,686,687,688,689,690,691,692,693,694,695,696,697
25 | 699,700,701,702,703,704,705,706,707,708,709,710,711,712,713,714,715,716,717,718,719,720,721,722,723,724,725,726,727,728,729,730,731,732,733,734,735,736,737,738,739,740,741,-1
26 | 742,743,744,745,746,747,748,749,750,751,752,753,754,755,756,757,758,759,760,761,762,763,764,765,766,767,768,769,770,771,772,773,774,775,776,777,778,779,780,781,782,-1,-1,-1
27 | 783,784,785,786,787,788,789,790,791,792,793,794,795,796,797,798,799,800,801,802,803,804,805,806,807,808,809,810,811,812,813,814,815,816,817,818,819,820,-1,-1,-1,-1,-1,-1
28 | 821,822,823,824,825,826,827,828,829,830,831,832,833,834,835,836,837,838,839,840,841,842,843,844,845,846,847,848,849,850,851,852,853,854,855,856,857,-1,-1,-1,-1,-1,-1,-1
29 | 858,859,860,861,862,863,864,865,866,867,868,869,870,871,872,873,874,875,876,877,878,879,880,881,882,883,884,885,886,887,888,889,890,891,892,-1,-1,-1,-1,-1,-1,-1,-1,-1
30 | 893,894,895,896,897,898,899,900,901,902,903,904,905,906,907,908,909,910,911,912,913,914,915,916,917,918,919,920,921,922,923,924,925,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1
31 | 926,927,928,929,930,931,932,933,934,935,936,937,938,939,940,941,942,943,944,945,946,947,948,949,950,951,952,953,954,955,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1
32 | 956,957,958,959,960,961,962,963,964,965,966,967,968,969,970,971,972,973,974,975,976,977,978,979,980,981,982,983,984,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1
33 | 985,986,987,988,989,990,991,992,993,994,995,996,997,998,999,1000,1001,1002,1003,1004,1005,1006,1007,1008,1009,1010,1011,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1
34 | 1012,1013,1014,1015,1016,1017,1018,1019,1020,1021,1022,1023,1024,1025,1026,1027,1028,1029,1030,1031,1032,1033,1034,1035,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1
35 | 1036,1037,1038,1039,1040,1041,1042,1043,1044,1045,1046,1047,1048,1049,1050,1051,1052,1053,1054,1055,1056,1057,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1
36 | 1058,1059,1060,1061,1062,1063,1064,1065,1066,1067,1068,1069,1070,1071,1072,1073,1074,1075,1076,1077,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1
37 | 1078,1079,1080,1081,1082,1083,1084,1085,1086,1087,1088,1089,1090,1091,1092,1093,1094,1095,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1
38 | 1096,1097,1098,1099,1100,1101,1102,1103,1104,1105,1106,1107,1108,1109,1110,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1
39 | 1111,1112,1113,1114,1115,1116,1117,1118,1119,1120,1121,1122,1123,1124,1125,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1
40 | 1126,1127,1128,1129,1130,1131,1132,1133,1134,1135,1136,1137,1138,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1
41 | 1139,1140,1141,1142,1143,1144,1145,1146,1147,1148,1149,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1
42 | 1150,1151,1152,1153,1154,1155,1156,1157,1158,1159,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1
43 | 1160,1161,1162,1163,1164,1165,1166,1167,1168,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1
44 | 1169,1170,1171,1172,1173,1174,1175,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1
45 | 1176,1177,1178,1179,1180,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1
46 |
--------------------------------------------------------------------------------
/data/quads/info_rows.csv:
--------------------------------------------------------------------------------
1 | 0,1,2,3,4,5,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1
2 | 6,7,8,9,10,11,12,13,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1
3 | 14,15,16,17,18,19,20,21,22,23,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1
4 | 24,25,26,27,28,29,30,31,32,33,34,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1
5 | 35,36,37,38,39,40,41,42,43,44,45,46,47,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1
6 | 48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1
7 | 63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1
8 | 80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1
9 | 99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1
10 | 119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1
11 | 141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1
12 | 165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1
13 | 190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1
14 | 218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1
15 | 248,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,265,266,267,268,269,270,271,272,273,274,275,276,277,278,279,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1
16 | 280,281,282,283,284,285,286,287,288,289,290,291,292,293,294,295,296,297,298,299,300,301,302,303,304,305,306,307,308,309,310,311,312,313,314,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1
17 | 315,316,317,318,319,320,321,322,323,324,325,326,327,328,329,330,331,332,333,334,335,336,337,338,339,340,341,342,343,344,345,346,347,348,349,350,351,-1,-1,-1,-1,-1,-1,-1,-1,-1
18 | 352,353,354,355,356,357,358,359,360,361,362,363,364,365,366,367,368,369,370,371,372,373,374,375,376,377,378,379,380,381,382,383,384,385,386,387,388,389,390,-1,-1,-1,-1,-1,-1,-1
19 | 391,392,393,394,395,396,397,398,399,400,401,402,403,404,405,406,407,408,409,410,411,412,413,414,415,416,417,418,419,420,421,422,423,424,425,426,427,428,429,430,431,-1,-1,-1,-1,-1
20 | 432,433,434,435,436,437,438,439,440,441,442,443,444,445,446,447,448,449,450,451,452,453,454,455,456,457,458,459,460,461,462,463,464,465,466,467,468,469,470,471,472,473,-1,-1,-1,-1
21 | 474,475,476,477,478,479,480,481,482,483,484,485,486,487,488,489,490,491,492,493,494,495,496,497,498,499,500,501,502,503,504,505,506,507,508,509,510,511,512,513,514,515,516,517,-1,-1
22 | 518,519,520,521,522,523,524,525,526,527,528,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,545,546,547,548,549,550,551,552,553,554,555,556,557,558,559,560,561,562,-1
23 | 563,564,565,566,567,568,569,570,571,572,573,574,575,576,577,578,579,580,581,582,583,584,585,586,587,588,589,590,591,592,593,594,595,596,597,598,599,600,601,602,603,604,605,606,607,-1
24 | 608,609,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,627,628,629,630,631,632,633,634,635,636,637,638,639,640,641,642,643,644,645,646,647,648,649,650,651,652,653
25 | 654,655,656,657,658,659,660,661,662,663,664,665,666,667,668,669,670,671,672,673,674,675,676,677,678,679,680,681,682,683,684,685,686,687,688,689,690,691,692,693,694,695,696,697,698,-1
26 | 699,700,701,702,703,704,705,706,707,708,709,710,711,712,713,714,715,716,717,718,719,720,721,722,723,724,725,726,727,728,729,730,731,732,733,734,735,736,737,738,739,740,741,-1,-1,-1
27 | 742,743,744,745,746,747,748,749,750,751,752,753,754,755,756,757,758,759,760,761,762,763,764,765,766,767,768,769,770,771,772,773,774,775,776,777,778,779,780,781,782,-1,-1,-1,-1,-1
28 | 783,784,785,786,787,788,789,790,791,792,793,794,795,796,797,798,799,800,801,802,803,804,805,806,807,808,809,810,811,812,813,814,815,816,817,818,819,820,-1,-1,-1,-1,-1,-1,-1,-1
29 | 821,822,823,824,825,826,827,828,829,830,831,832,833,834,835,836,837,838,839,840,841,842,843,844,845,846,847,848,849,850,851,852,853,854,855,856,857,-1,-1,-1,-1,-1,-1,-1,-1,-1
30 | 858,859,860,861,862,863,864,865,866,867,868,869,870,871,872,873,874,875,876,877,878,879,880,881,882,883,884,885,886,887,888,889,890,891,892,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1
31 | 893,894,895,896,897,898,899,900,901,902,903,904,905,906,907,908,909,910,911,912,913,914,915,916,917,918,919,920,921,922,923,924,925,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1
32 | 926,927,928,929,930,931,932,933,934,935,936,937,938,939,940,941,942,943,944,945,946,947,948,949,950,951,952,953,954,955,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1
33 | 956,957,958,959,960,961,962,963,964,965,966,967,968,969,970,971,972,973,974,975,976,977,978,979,980,981,982,983,984,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1
34 | 985,986,987,988,989,990,991,992,993,994,995,996,997,998,999,1000,1001,1002,1003,1004,1005,1006,1007,1008,1009,1010,1011,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1
35 | 1012,1013,1014,1015,1016,1017,1018,1019,1020,1021,1022,1023,1024,1025,1026,1027,1028,1029,1030,1031,1032,1033,1034,1035,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1
36 | 1036,1037,1038,1039,1040,1041,1042,1043,1044,1045,1046,1047,1048,1049,1050,1051,1052,1053,1054,1055,1056,1057,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1
37 | 1058,1059,1060,1061,1062,1063,1064,1065,1066,1067,1068,1069,1070,1071,1072,1073,1074,1075,1076,1077,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1
38 | 1078,1079,1080,1081,1082,1083,1084,1085,1086,1087,1088,1089,1090,1091,1092,1093,1094,1095,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1
39 | 1096,1097,1098,1099,1100,1101,1102,1103,1104,1105,1106,1107,1108,1109,1110,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1
40 | 1111,1112,1113,1114,1115,1116,1117,1118,1119,1120,1121,1122,1123,1124,1125,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1
41 | 1126,1127,1128,1129,1130,1131,1132,1133,1134,1135,1136,1137,1138,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1
42 | 1139,1140,1141,1142,1143,1144,1145,1146,1147,1148,1149,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1
43 | 1150,1151,1152,1153,1154,1155,1156,1157,1158,1159,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1
44 | 1160,1161,1162,1163,1164,1165,1166,1167,1168,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1
45 | 1169,1170,1171,1172,1173,1174,1175,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1
46 | 1176,1177,1178,1179,1180,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1
47 |
--------------------------------------------------------------------------------
/data/quads/readme.txt:
--------------------------------------------------------------------------------
1 | This is to test extrating quad meshes from scalar fields, and quad mesh optimizations.
2 | "tri.obj" is the triangle mesh
3 | "60.csv" and "120.csv" are the two scalar fields.
4 | "quad.obj" is the quad mesh extracted directly from the triangle mesh and the two scalar fields
5 | "info*" are for the structural information of the quad mesh.
6 | "quad_opt.obj" is the PP quad mesh whose binormal vectors of the two families of curves has desired inclination angles with the normal vectors.
--------------------------------------------------------------------------------
/data/strip/crease_b_x.csv:
--------------------------------------------------------------------------------
1 | 0.691707,0.6482,0.66753,0.808486,1.18267,1.24225,1.11489,0.616848,0.136677,-0.370062,-0.804815,-0.906053,-0.971946,-0.774136,-0.675923,-0.618256,-0.625176,-0.669136
2 |
--------------------------------------------------------------------------------
/data/strip/crease_b_y.csv:
--------------------------------------------------------------------------------
1 | 0.287854,0.422981,0.64421,0.841893,1.07945,1.10099,1.07005,0.995796,0.958253,0.948569,0.969201,0.9833,1.00253,0.900784,0.794813,0.599241,0.530124,0.405947
2 |
--------------------------------------------------------------------------------
/data/strip/crease_b_z.csv:
--------------------------------------------------------------------------------
1 | -0.663263,-0.643064,-0.526066,-0.323481,0.0350464,0.0802943,0.00909455,-0.18462,-0.288919,-0.312676,-0.256003,-0.224259,-0.191881,-0.341824,-0.455983,-0.589245,-0.61371,-0.628273
2 |
--------------------------------------------------------------------------------
/data/strip/crease_x.csv:
--------------------------------------------------------------------------------
1 | -2.89691,-3.06792,-3.03014,-2.78142,-2.41267,-1.97841,-1.49765,-0.97734,-0.428251,0.134403,0.692477,1.2251,1.71198,2.1261,2.42518,2.55336,2.49429,2.30591
2 |
--------------------------------------------------------------------------------
/data/strip/crease_y.csv:
--------------------------------------------------------------------------------
1 | 1.38413,1.91156,2.3997,2.74908,2.9827,3.14669,3.26223,3.33722,3.3787,3.39,3.36647,3.29648,3.16623,2.9541,2.63152,2.18498,1.66186,1.13559
2 |
--------------------------------------------------------------------------------
/data/strip/crease_z.csv:
--------------------------------------------------------------------------------
1 | -0.720693,-0.640792,-0.375696,-0.015232,0.339381,0.658449,0.929095,1.13275,1.25256,1.27875,1.20481,1.0349,0.783951,0.468693,0.120617,-0.191612,-0.384741,-0.448236
2 |
--------------------------------------------------------------------------------
/data/strip/opt_b_x.csv:
--------------------------------------------------------------------------------
1 | 0.674752,0.677582,0.661974,0.569793,0.428512,0.286595,0.161629,0.0655918,0.0100923,-0.00478803,-0.00368079,-0.0191764,-0.0734576,-0.171437,-0.308001,-0.464514,-0.599441,-0.674312,-0.702969,-0.702316
2 |
--------------------------------------------------------------------------------
/data/strip/opt_b_y.csv:
--------------------------------------------------------------------------------
1 | 0.31805,0.320006,0.317488,0.357694,0.482858,0.635673,0.770842,0.87034,0.929717,0.951538,0.944572,0.901837,0.81975,0.698249,0.551183,0.414022,0.33592,0.321571,0.327779,0.327398
2 |
--------------------------------------------------------------------------------
/data/strip/opt_b_z.csv:
--------------------------------------------------------------------------------
1 | -0.665998,-0.662178,-0.678964,-0.739859,-0.763692,-0.716787,-0.616181,-0.488064,-0.368137,-0.307495,-0.328284,-0.431651,-0.567991,-0.695023,-0.775456,-0.782824,-0.726519,-0.664752,-0.631186,-0.63211
2 |
--------------------------------------------------------------------------------
/data/strip/opt_x.csv:
--------------------------------------------------------------------------------
1 | -2.62115,-2.89691,-3.06792,-3.03014,-2.78142,-2.41267,-1.97841,-1.49765,-0.97734,-0.428251,0.134403,0.692477,1.2251,1.71198,2.1261,2.42518,2.55336,2.49429,2.30591,2.0495
2 |
--------------------------------------------------------------------------------
/data/strip/opt_y.csv:
--------------------------------------------------------------------------------
1 | 0.895294,1.38413,1.91156,2.3997,2.74908,2.9827,3.14669,3.26223,3.33722,3.3787,3.39,3.36647,3.29648,3.16623,2.9541,2.63152,2.18498,1.66186,1.13559,0.634377
2 |
--------------------------------------------------------------------------------
/data/strip/opt_z.csv:
--------------------------------------------------------------------------------
1 | -0.674746,-0.720693,-0.640792,-0.375696,-0.015232,0.339381,0.658449,0.929095,1.13275,1.25256,1.27875,1.20481,1.0349,0.783951,0.468693,0.120617,-0.191612,-0.384741,-0.448236,-0.422951
2 |
--------------------------------------------------------------------------------
/data/strip/readme.txt:
--------------------------------------------------------------------------------
1 | The files "opt_*.csv" are the files for a high-quality binormal strip. "crease_*.csv" are for the rectifying strip optimized from the binormal strip.
--------------------------------------------------------------------------------
/data/tracing/readme.txt:
--------------------------------------------------------------------------------
1 | This is for you to test the initialization -> optimization -> binormal strip optimization -> rectifying developable optimization.
2 |
3 | "Wave.obj" is the triangle mesh,
4 | "saved_traced_*" are the traced curves of \theta = 60. You can load them one by one.
5 | "smooth.csv" is a random smooth scalar field without singularities. Load it as the start of initialization.
6 | "initial_ls.csv" is the scalar field generally follows the traced P-curves.
7 | "60.csv" and "60_b.csv" are the scalar field and the binormal vector field of \theta = 60.
8 | "ply*" are the strips extracted from the fields.
9 | "opt*" are the optimized high-quality binormal strips optimized from "ply*".
10 | "crease*" are the rectifying developables optimized from "opt*".
11 |
--------------------------------------------------------------------------------
/data/tracing/saved_traced_0.csv:
--------------------------------------------------------------------------------
1 | -9.69174,-14.6651,1.31878,16551
2 | -9.55915,-14.6399,1.35972,16552
3 | -9.10561,-14.5592,1.50682,16554
4 | -9.02079,-14.5436,1.53372,16558
5 | -8.97187,-14.5346,1.54923,3019
6 | -8.25528,-14.415,1.79061,3014
7 | -8.17279,-14.3998,1.81669,15667
8 | -8.05566,-14.3811,1.85696,1023
9 | -7.55855,-14.3009,2.02724,1024
10 | -7.2846,-14.2534,2.1173,9654
11 | -6.74284,-14.1633,2.2996,12029
12 | -6.41472,-14.1189,2.42126,12030
13 | -6.26519,-14.0918,2.46937,12176
14 | -5.94761,-14.0377,2.57527,1299
15 | -5.6048,-13.9758,2.68587,1300
16 | -5.26627,-13.9116,2.79176,6242
17 | -4.89437,-13.8356,2.90246,9292
18 | -4.74199,-13.8002,2.94369,14337
19 | -4.27813,-13.6945,3.07098,7493
20 | -4.06171,-13.6422,3.12741,5415
21 | -3.954,-13.6147,3.1539,5412
22 | -3.44193,-13.4629,3.25926,12002
23 | -2.94624,-13.3129,3.3585,14221
24 | -2.89276,-13.2942,3.36701,9297
25 | -2.32752,-13.0761,3.44015,9294
26 | -2.19038,-13.0179,3.45344,6303
27 | -1.64143,-12.7706,3.49456,6295
28 | -1.53716,-12.7192,3.49872,4553
29 | -1.02922,-12.4581,3.51024,4554
30 | -1.00189,-12.4429,3.50996,13422
31 | -0.947814,-12.4127,3.50928,13827
32 | -0.454719,-12.1214,3.48982,12287
33 | -0.179756,-11.9498,3.47093,5209
34 | 0.174568,-11.7227,3.44143,5204
35 | 0.435514,-11.5522,3.41684,14498
36 | 0.741182,-11.3364,3.37366,15096
37 | 1.00211,-11.1553,3.33965,14693
38 | 1.33043,-10.9135,3.28379,5817
39 | 1.57893,-10.7348,3.24553,5814
40 | 1.82937,-10.5433,3.19581,11898
41 | 2.18953,-10.2749,3.13133,15365
42 | 2.20558,-10.2622,3.12765,15366
43 | 2.21831,-10.2521,3.12471,4627
44 | 2.65047,-9.91605,3.03279,4628
45 | 2.9045,-9.72006,2.98057,1779
46 | 3.10021,-9.56706,2.93801,1776
47 | 3.28272,-9.43149,2.90641,11154
48 | 3.60825,-9.17625,2.83369,14041
49 | 3.99852,-8.88338,2.76343,11993
50 | 4.14617,-8.77164,2.73566,11990
51 | 4.30327,-8.66062,2.71601,8819
52 | 4.77433,-8.31296,2.63704,8820
53 | 5.18344,-8.02684,2.59091,11767
54 | 5.36666,-7.8998,2.57183,2189
55 | 6.01353,-7.47003,2.53129,2192
56 | 6.713,-7.02238,2.51363,1276
57 | 7.08944,-6.79967,2.53342,67
58 | 7.47132,-6.57038,2.54831,70
59 | 7.99063,-6.28441,2.60715,10197
60 | 8.05832,-6.24529,2.61222,10200
61 | 8.29602,-6.12089,2.64743,10701
62 | 8.74558,-5.88155,2.70832,10702
63 | 8.96791,-5.77104,2.74965,5897
64 | 9.38743,-5.55564,2.81831,5894
65 | 9.96369,-5.28053,2.93944,1739
66 | 10.0975,-5.21338,2.96352,1742
67 | 10.2095,-5.15948,2.98645,1801
68 | 10.7886,-4.89018,3.11569,1802
69 | 10.9767,-4.79915,3.15371,10222
70 | 11.411,-4.60051,3.25384,11612
71 | 11.8608,-4.39033,3.35295,15181
72 | 11.9819,-4.33472,3.38065,4867
73 | 12.398,-4.13385,3.4659,4864
74 | 12.6367,-4.02224,3.51833,13214
75 | 13.1101,-3.78406,3.60678,13560
76 | 13.5004,-3.5877,3.67972,8673
77 | 13.8593,-3.39438,3.736,8670
78 | 14.3541,-3.12103,3.80796,11747
79 | 14.5701,-2.99289,3.8325,11748
80 | 14.6931,-2.91963,3.84623,7929
81 | 15.1391,-2.64463,3.889,5569
82 | 15.3164,-2.53501,3.90573,1165
83 | 15.4308,-2.45931,3.91274,1166
84 | 15.9268,-2.11603,3.93182,7209
85 | 16.3825,-1.78007,3.93483,7206
86 | 16.4825,-1.70554,3.93487,9686
87 | 16.5388,-1.6614,3.93335,6675
88 | 17.1033,-1.19643,3.90146,4091
89 | 17.2096,-1.10263,3.89097,4086
90 | 17.6881,-0.66258,3.83114,8127
91 | 17.8201,-0.533744,3.80947,8128
92 | 18.1566,-0.190304,3.74396,10075
93 | 18.3172,-0.0169173,3.70629,10070
94 | 18.6372,0.348479,3.61787,11508
95 | 18.8234,0.575597,3.5566,4293
96 | 19.1731,1.03952,3.41621,4290
97 | 19.3105,1.23988,3.34877,11538
98 | 19.4604,1.46792,3.26868,13240
99 | 19.6633,1.80465,3.14158,15583
100 | 19.8088,2.08065,3.02759,3273
101 | 20.0002,2.48328,2.85122,3268
102 | 20.0444,2.58048,2.80769,4622
103 | 20.1195,2.77493,2.71461,4897
104 | 20.287,3.2364,2.48844,4898
105 | 20.369,3.48342,2.36321,10425
106 | 20.4925,3.90433,2.14151,10421
107 | 20.6949,4.61349,1.76516,10422
108 | 20.7064,4.65466,1.74319,15058
109 | 20.83,5.14366,1.47601,15061
110 | 20.8659,5.27843,1.40331,15064
111 | 20.9628,5.63299,1.21324,10343
112 | 21.011,5.82631,1.10704,9747
113 | 21.0395,5.93476,1.04839,9748
114 | 21.1663,6.41243,0.790645,15967
115 | 21.2486,6.69961,0.639253,15964
116 |
--------------------------------------------------------------------------------
/data/tracing/saved_traced_1.csv_0.csv:
--------------------------------------------------------------------------------
1 | -12.1011,-11.4803,1.2168,17201
2 | -11.9495,-11.407,1.26054,17202
3 | -11.58,-11.2318,1.37188,15415
4 | -11.414,-11.1518,1.42005,10391
5 | -10.8891,-10.9062,1.58352,10388
6 | -10.587,-10.7606,1.67111,4395
7 | -10.1503,-10.5576,1.80941,4398
8 | -9.83509,-10.4046,1.89861,4077
9 | -9.38792,-10.1936,2.03567,4074
10 | -9.27241,-10.1363,2.06608,11876
11 | -8.81859,-9.91801,2.19818,5395
12 | -8.50444,-9.75901,2.27406,5390
13 | -8.22761,-9.62321,2.35,9290
14 | -7.933,-9.47659,2.42628,2829
15 | -7.64479,-9.32619,2.48491,2824
16 | -7.22374,-9.10812,2.57467,6009
17 | -7.09793,-9.04017,2.59409,6010
18 | -6.71741,-8.83686,2.65917,10395
19 | -6.32151,-8.61676,2.70053,10392
20 | -6.03388,-8.45902,2.73786,4125
21 | -5.53062,-8.17143,2.76029,4120
22 | -5.39307,-8.09342,2.76881,9698
23 | -4.83352,-7.76573,2.75697,1819
24 | -4.78755,-7.73894,2.75665,1089
25 | -4.43692,-7.52939,2.72538,1086
26 | -4.19224,-7.38315,2.70348,13839
27 | -4.15966,-7.3633,2.69792,13051
28 | -3.59706,-7.02099,2.60621,1603
29 | -3.49055,-6.9553,2.5806,1598
30 | -3.01801,-6.66405,2.46922,1127
31 | -2.83223,-6.54847,2.41267,1128
32 | -2.2605,-6.19254,2.23503,9621
33 | -2.24253,-6.18136,2.22947,7217
34 | -1.70939,-5.8478,2.03406,12434
35 | -1.55256,-5.74962,1.97526,7211
36 | -1.12251,-5.48001,1.80526,7212
37 | -0.758697,-5.25213,1.66691,11370
38 | -0.467961,-5.06995,1.55341,11498
39 | -0.0702492,-4.821,1.41075,12815
40 | 0.0954643,-4.71729,1.35239,12816
41 | 0.516125,-4.45423,1.21739,9815
42 | 0.559458,-4.42715,1.20518,9816
43 | 1.05382,-4.11824,1.06722,13571
44 | 1.22248,-4.01297,1.0296,6227
45 | 1.56878,-3.79681,0.950939,6230
46 | 1.97593,-3.5431,0.882119,9810
47 | 2.23394,-3.3824,0.84283,3981
48 | 2.8861,-2.97758,0.793933,3984
49 | 2.9076,-2.96423,0.792021,15081
50 | 2.91674,-2.95856,0.791842,15079
51 | 3.05496,-2.87288,0.793886,8781
52 | 3.63031,-2.51618,0.800448,8778
53 | 3.66576,-2.49424,0.8017,5177
54 | 3.85299,-2.37895,0.824309,5174
55 | 4.36105,-2.06601,0.883085,8417
56 | 4.48108,-1.99254,0.910664,8418
57 | 4.98126,-1.6859,1.01603,13320
58 | 5.46021,-1.39521,1.16384,13319
59 | 5.48778,-1.3785,1.17276,6693
60 | 5.52776,-1.3545,1.18867,3967
61 | 6.03667,-1.04794,1.37982,2249
62 | 6.48016,-0.784636,1.58059,2246
63 | 6.555,-0.740269,1.61504,1853
64 | 6.60348,-0.711962,1.64063,1848
65 | 7.07149,-0.436624,1.87359,893
66 | 7.38255,-0.257278,2.05006,894
67 | 7.65296,-0.0995164,2.19361,13448
68 | 8.16328,0.192178,2.49313,7561
69 | 8.27089,0.25484,2.55134,7558
70 | 8.71557,0.509,2.80996,12035
71 | 8.86562,0.594907,2.89665,8569
72 | 8.90252,0.616012,2.91806,8564
73 | 9.3599,0.881469,3.16866,14486
74 | 9.67172,1.06664,3.32439,15853
75 | 9.91642,1.21101,3.44983,2429
76 | 10.2836,1.43475,3.6146,2432
77 | 10.57,1.61148,3.73584,9726
78 | 10.9133,1.83061,3.85828,7701
79 | 11.2565,2.05376,3.96867,7702
80 | 11.4378,2.1775,4.01,14713
81 | 11.8808,2.48013,4.1104,12775
82 | 11.9509,2.52861,4.12451,3299
83 | 11.981,2.5499,4.1291,3300
84 | 12.5418,2.95579,4.1844,845
85 | 12.6268,3.01895,4.18778,840
86 | 12.9749,3.284,4.18278,627
87 | 13.388,3.60616,4.15625,630
88 | 13.4946,3.68976,4.14805,2686
89 | 13.6149,3.78702,4.13027,3134
90 | 13.9856,4.09131,4.06239,8942
91 | 14.3765,4.4215,3.96583,12947
92 | 14.4715,4.50245,3.94049,6185
93 | 14.5525,4.57318,3.9139,235
94 | 14.8892,4.87184,3.79106,238
95 | 15.1546,5.11441,3.67608,7081
96 | 15.41,5.34981,3.56044,6813
97 | 15.5658,5.49725,3.47997,6814
98 | 15.8684,5.78834,3.31123,11115
99 | 15.9125,5.83164,3.28449,11116
100 | 16.1847,6.10363,3.10676,10483
101 | 16.4525,6.37633,2.91932,10479
102 | 16.6338,6.56451,2.78402,10457
103 | 16.8619,6.80601,2.60275,7099
104 | 17.0937,7.05243,2.41636,5679
105 | 17.3191,7.29651,2.2246,5217
106 | 17.5241,7.52263,2.04077,5214
107 | 17.6685,7.68233,1.9104,3651
108 | 17.8823,7.91996,1.71482,3652
109 | 18.2084,8.28263,1.41598,4524
110 | 18.2797,8.36196,1.35043,2081
111 | 18.3729,8.46516,1.26615,2082
112 | 18.7417,8.88105,0.915948,13256
113 | 19.0072,9.17504,0.675059,16331
114 | 19.1415,9.32294,0.554977,16332
115 |
--------------------------------------------------------------------------------
/data/tracing/saved_traced_2_0.csv:
--------------------------------------------------------------------------------
1 | -14.7347,-8.4881,1.1216,16133
2 | -14.3701,-8.25228,1.21322,16134
3 | -14.0912,-8.0722,1.28375,15337
4 | -13.9641,-7.98739,1.31246,15335
5 | -13.3733,-7.59649,1.44999,8315
6 | -12.8947,-7.26922,1.54802,803
7 | -12.7737,-7.18474,1.57051,798
8 | -12.436,-6.94686,1.63067,9425
9 | -12.202,-6.77601,1.66436,9426
10 | -12.0488,-6.66537,1.6881,13763
11 | -11.8853,-6.54281,1.70715,13764
12 | -11.5336,-6.27694,1.74513,13766
13 | -11.1214,-5.94989,1.76848,15419
14 | -11.0997,-5.93217,1.76891,14729
15 | -10.7419,-5.6376,1.77436,11069
16 | -10.5633,-5.48193,1.76478,11064
17 | -10.3083,-5.26172,1.75415,15492
18 | -10.0453,-5.02204,1.72461,15149
19 | -9.95702,-4.94067,1.71342,2547
20 | -9.67367,-4.67445,1.67008,457
21 | -9.27126,-4.26977,1.56905,460
22 | -9.23693,-4.23592,1.56142,11462
23 | -9.18784,-4.18341,1.5447,12419
24 | -8.86817,-3.84652,1.44316,12416
25 | -8.67416,-3.62762,1.3599,12425
26 | -8.41987,-3.34379,1.25526,6931
27 | -8.01676,-2.85905,1.03974,6928
28 | -7.95705,-2.78757,1.00826,12909
29 | -7.8245,-2.61782,0.923293,12910
30 | -7.4818,-2.18508,0.712215,11513
31 | -7.40765,-2.08639,0.659273,11514
32 | -7.06975,-1.63804,0.419999,8635
33 | -7.04527,-1.60574,0.402916,8632
34 | -7.00328,-1.54817,0.370479,7083
35 | -6.62868,-1.05123,0.103868,7084
36 | -6.49308,-0.872622,0.00900898,10474
37 | -6.00914,-0.224453,-0.343278,3923
38 | -5.97582,-0.18236,-0.364378,3924
39 | -5.74407,0.108027,-0.508278,9352
40 | -5.44402,0.481767,-0.691793,11632
41 | -5.39942,0.535961,-0.717317,6825
42 | -4.97013,1.02497,-0.921585,6826
43 | -4.80963,1.20403,-0.993331,8743
44 | -4.44392,1.57881,-1.11711,8744
45 | -4.21923,1.80448,-1.18779,13543
46 | -4.03486,1.97472,-1.22884,5591
47 | -3.54194,2.4136,-1.32063,5588
48 | -3.49217,2.45485,-1.32668,14217
49 | -3.12836,2.74374,-1.35816,14215
50 | -2.94727,2.88688,-1.37314,5101
51 | -2.93574,2.89585,-1.37393,5104
52 | -2.90743,2.91704,-1.37496,8844
53 | -2.41819,3.27039,-1.37916,3917
54 | -1.92043,3.61145,-1.3651,3920
55 | -1.90652,3.62064,-1.36438,10757
56 | -1.87608,3.63955,-1.36169,10754
57 | -1.30559,3.99304,-1.31044,9659
58 | -1.12096,4.10406,-1.2906,9656
59 | -0.656893,4.36812,-1.22639,2167
60 | -0.450537,4.48254,-1.19507,2168
61 | -0.32091,4.54965,-1.1712,12574
62 | 0.173104,4.79568,-1.0714,12578
63 | 0.718793,5.04988,-0.944807,13002
64 | 0.778347,5.07615,-0.929594,9459
65 | 0.85561,5.10835,-0.908026,9456
66 | 1.31495,5.2965,-0.776704,14690
67 | 1.61208,5.40946,-0.68355,14353
68 | 1.91909,5.51822,-0.579687,14354
69 | 2.29706,5.64728,-0.447109,6923
70 | 2.70487,5.77619,-0.293844,6920
71 | 2.81795,5.81112,-0.250541,5261
72 | 3.33681,5.94914,-0.0290419,5258
73 | 3.74645,6.06612,0.13704,15001
74 | 4.25798,6.19248,0.366963,9527
75 | 4.50758,6.25443,0.478818,9528
76 | 4.58084,6.27438,0.509562,7519
77 | 4.89596,6.3514,0.65263,4079
78 | 5.29948,6.44558,0.841625,2329
79 | 5.4435,6.47855,0.910001,2332
80 | 5.87387,6.58318,1.1054,11546
81 | 6.34778,6.70022,1.31784,12195
82 | 6.49073,6.73843,1.37741,2321
83 | 6.84036,6.83374,1.52011,2316
84 | 7.07859,6.89576,1.62245,2287
85 | 7.17646,6.92178,1.66348,2290
86 | 7.72311,7.08007,1.86703,11881
87 | 8.04602,7.17703,1.98012,11878
88 | 8.36385,7.27982,2.07545,2001
89 | 8.87276,7.45085,2.21343,2004
90 | 9.02365,7.50506,2.246,1691
91 | 9.66468,7.74392,2.36294,1688
92 | 9.68442,7.75169,2.36546,6146
93 | 9.8989,7.83945,2.38381,12537
94 | 10.4273,8.0544,2.43281,12534
95 | 10.4666,8.07068,2.4355,6313
96 | 10.5499,8.10709,2.43467,6310
97 | 11.0712,8.33392,2.43333,5147
98 | 11.596,8.57588,2.38622,5148
99 | 11.6095,8.58205,2.3852,15438
100 | 11.6224,8.58824,2.38316,11179
101 | 12.1733,8.85193,2.29781,11180
102 | 12.7207,9.12898,2.15992,10735
103 | 12.8813,9.21031,2.11925,4241
104 | 13.3636,9.46672,1.95641,3085
105 | 13.4207,9.49695,1.9377,3088
106 | 13.4329,9.50362,1.93283,9366
107 | 13.932,9.77643,1.73607,15185
108 | 14.0494,9.84192,1.68508,15139
109 | 14.8716,10.3103,1.29371,5903
110 | 14.9046,10.3293,1.2773,5904
111 | 14.9297,10.3442,1.26337,15511
112 | 15.7029,10.7961,0.854424,13679
113 | 15.74,10.8182,0.833624,13676
114 | 16.3099,11.154,0.523153,16355
115 | 16.3549,11.1811,0.496993,16352
116 |
--------------------------------------------------------------------------------
/data/tracing/saved_traced_3_0.csv:
--------------------------------------------------------------------------------
1 | -18.931,-4.23365,0.986597,16303
2 | -18.6527,-4.10402,1.08474,16304
3 | -18.485,-4.02674,1.14494,14975
4 | -18.3362,-3.95828,1.19861,11287
5 | -17.94,-3.77063,1.33427,11290
6 | -17.5152,-3.56727,1.47687,10345
7 | -17.4631,-3.54182,1.49378,471
8 | -17.3857,-3.50265,1.51709,468
9 | -16.7022,-3.15969,1.72661,8906
10 | -16.152,-2.86392,1.87183,14379
11 | -16.1004,-2.83638,1.88567,14055
12 | -16.0372,-2.80075,1.90043,14056
13 | -15.6247,-2.56389,1.99207,14053
14 | -15.2252,-2.31776,2.06223,12833
15 | -15.0651,-2.22045,2.09178,8457
16 | -14.9213,-2.12556,2.1102,8458
17 | -14.4352,-1.79748,2.1648,10004
18 | -13.8917,-1.39406,2.1877,1003
19 | -13.85,-1.36342,2.18977,998
20 | -13.8064,-1.32826,2.18878,2032
21 | -13.3524,-0.957322,2.17366,12603
22 | -13.1022,-0.733729,2.14669,12599
23 | -12.891,-0.545732,2.12462,1501
24 | -12.4223,-0.086385,2.0358,1502
25 | -12.345,-0.0109905,2.0215,6562
26 | -12.31,0.0269713,2.01149,11735
27 | -11.7865,0.595414,1.86182,2991
28 | -11.6003,0.819113,1.78984,2988
29 | -11.2648,1.22014,1.66186,10105
30 | -10.9489,1.63015,1.51413,7585
31 | -10.7037,1.94459,1.40266,2045
32 | -10.3044,2.48032,1.20185,2042
33 | -10.2032,2.61247,1.15387,1121
34 | -9.70608,3.26871,0.912519,1124
35 | -9.64307,3.34832,0.884713,6387
36 | -9.46291,3.56836,0.811047,6382
37 | -9.11769,3.99731,0.664361,6469
38 | -8.93811,4.20366,0.600587,6466
39 | -8.54368,4.64542,0.46903,12322
40 | -8.14727,5.05165,0.364727,2445
41 | -7.98316,5.2163,0.324146,2440
42 | -7.60942,5.56056,0.254372,9028
43 | -7.43373,5.72414,0.220303,9683
44 | -7.36995,5.77881,0.211344,9680
45 | -6.90285,6.17289,0.150273,6645
46 | -6.62729,6.38742,0.127188,6601
47 | -6.36053,6.59287,0.106453,1733
48 | -5.82479,6.97324,0.0880609,1734
49 | -5.8103,6.98361,0.0875055,6866
50 | -5.25533,7.34768,0.0898351,6598
51 | -4.8789,7.57607,0.104647,1155
52 | -4.69065,7.68962,0.112535,1150
53 | -4.44261,7.82746,0.131308,11910
54 | -4.03559,8.05458,0.161465,11909
55 | -3.61434,8.27088,0.205999,5571
56 | -3.40973,8.37596,0.227623,5572
57 | -3.23669,8.45826,0.250556,1407
58 | -2.79142,8.66932,0.31008,1410
59 | -2.46458,8.81434,0.360783,14962
60 | -2.26685,8.9012,0.39207,15771
61 | -1.85741,9.07127,0.463773,7935
62 | -1.68231,9.14202,0.495839,7936
63 | -1.21659,9.32118,0.58749,9917
64 | -0.864459,9.45121,0.660641,9912
65 | -0.592483,9.5475,0.72009,13508
66 | -0.0254344,9.74031,0.849733,14305
67 | -0.00173962,9.7484,0.85512,13671
68 | 0.00558714,9.75086,0.856817,13672
69 | 0.01832,9.755,0.859866,13669
70 | 0.675789,9.9646,1.02021,10253
71 | 0.918802,10.0416,1.07985,1305
72 | 1.62235,10.2577,1.25749,1308
73 | 1.70184,10.2831,1.27679,5931
74 | 1.99057,10.374,1.34806,5926
75 | 2.44028,10.514,1.46025,5960
76 | 2.57886,10.5563,1.4955,4479
77 | 3.32701,10.8068,1.66752,4474
78 | 3.43413,10.8412,1.69345,13262
79 | 3.55899,10.8857,1.71962,15070
80 | 4.08752,11.0794,1.82604,14143
81 | 4.36992,11.186,1.87993,9585
82 | 4.80809,11.3671,1.94848,3935
83 | 5.16438,11.5186,2.00002,3932
84 | 5.39181,11.6202,2.02777,12543
85 | 5.66465,11.755,2.04755,12538
86 | 6.01468,11.9218,2.07966,12544
87 | 6.49811,12.1809,2.09102,4645
88 | 6.57142,12.2199,2.09314,4642
89 | 6.98873,12.4643,2.0774,12927
90 | 7.20699,12.5911,2.07038,9893
91 | 7.23763,12.6102,2.06776,9894
92 | 7.65938,12.8794,2.02478,3613
93 | 7.70458,12.9082,2.02029,3616
94 | 8.07908,13.1598,1.96574,3753
95 | 8.59685,13.5374,1.85107,3754
96 | 8.66805,13.5878,1.83727,13500
97 | 8.7239,13.6301,1.8227,13954
98 | 9.34196,14.1141,1.63891,5909
99 | 9.45539,14.2062,1.60058,5906
100 | 9.95141,14.6244,1.41138,14357
101 | 10.0447,14.7033,1.37547,10527
102 | 10.1575,14.8032,1.32552,6917
103 | 10.5964,15.1933,1.1297,6918
104 | 10.9037,15.4771,0.977288,5273
105 | 11.1264,15.6844,0.864519,5268
106 | 11.5543,16.0929,0.6335,6571
107 | 11.7204,16.2542,0.540009,6572
108 | 12.0508,16.578,0.349694,16465
109 | 12.0963,16.6229,0.322981,16462
110 |
--------------------------------------------------------------------------------
/data/tracing/saved_traced_4_0.csv:
--------------------------------------------------------------------------------
1 | -21.1029,1.2891,0.813709,16211
2 | -20.7583,1.45345,1.00931,16214
3 | -20.6111,1.52406,1.09174,15163
4 | -20.4604,1.59736,1.1736,10981
5 | -20.1491,1.75089,1.33723,10978
6 | -19.7734,1.94154,1.52177,13125
7 | -19.6137,2.02393,1.59702,13123
8 | -19.2487,2.21823,1.75438,13120
9 | -19.0777,2.31147,1.82282,8385
10 | -18.7985,2.47011,1.91897,8382
11 | -18.5252,2.62573,2.01229,1705
12 | -18.3912,2.70267,2.05631,1706
13 | -18.0786,2.88929,2.14102,8789
14 | -17.9266,2.98131,2.17904,8792
15 | -17.7902,3.06643,2.20756,13285
16 | -17.4829,3.26239,2.26185,11917
17 | -17.0354,3.55491,2.32351,11918
18 | -16.9282,3.62597,2.33609,12045
19 | -16.8667,3.66814,2.34037,12046
20 | -16.4198,3.97897,2.36222,14405
21 | -16.1213,4.19379,2.36201,14402
22 | -15.9866,4.29168,2.35972,7711
23 | -15.7168,4.49246,2.34553,7712
24 | -15.4701,4.67893,2.32671,12572
25 | -15.3695,4.75812,2.3134,12663
26 | -14.9747,5.06699,2.26428,5857
27 | -14.7692,5.23327,2.22899,5854
28 | -14.5018,5.44767,2.18659,7385
29 | -14.1973,5.69945,2.12513,7382
30 | -13.8461,5.98943,2.05512,15718
31 | -13.7645,6.05877,2.03581,15675
32 | -13.7274,6.09073,2.02627,7663
33 | -13.2786,6.47092,1.92154,7664
34 | -13.0607,6.65818,1.86685,11579
35 | -12.7127,6.95151,1.78744,3595
36 | -12.2985,7.30127,1.69217,3592
37 | -12.1454,7.4282,1.66014,7031
38 | -11.7298,7.76898,1.57811,7032
39 | -11.5753,7.89812,1.54455,11432
40 | -11.5193,7.94377,1.53372,11570
41 | -11.0015,8.35918,1.44173,12789
42 | -10.7097,8.58523,1.39926,11605
43 | -10.4218,8.80549,1.36062,11606
44 | -9.84877,9.22491,1.3055,6465
45 | -9.8358,9.23436,1.30431,6462
46 | -9.82051,9.2448,1.3037,3787
47 | -9.26597,9.64017,1.26323,3784
48 | -8.89946,9.88441,1.25462,9310
49 | -8.71488,10.0066,1.25113,6765
50 | -8.35219,10.2308,1.26141,6760
51 | -8.09817,10.3953,1.26095,4201
52 | -7.9604,10.4787,1.26641,2931
53 | -7.35006,10.836,1.30201,2932
54 | -7.02527,11.0175,1.32911,4063
55 | -6.61897,11.2325,1.37451,4058
56 | -6.10641,11.4949,1.43979,1573
57 | -5.9277,11.5808,1.46763,1574
58 | -5.23816,11.9062,1.58053,5194
59 | -5.18491,11.9298,1.59063,9929
60 | -5.02409,11.999,1.62285,9927
61 | -4.48045,12.2412,1.72498,9924
62 | -4.3391,12.3024,1.75294,4353
63 | -3.84518,12.5033,1.86054,4354
64 | -3.64515,12.5881,1.90161,7571
65 | -3.27571,12.7318,1.98686,6287
66 | -2.9842,12.8435,2.05535,6282
67 | -2.77959,12.9178,2.10644,15866
68 | -2.26482,13.1134,2.2288,10193
69 | -1.92731,13.2396,2.31047,8169
70 | -1.52743,13.386,2.40936,8170
71 | -1.13526,13.5325,2.50441,10991
72 | -0.590369,13.7428,2.63183,10985
73 | -0.403078,13.8156,2.67527,10982
74 | 0.211271,14.0755,2.80335,8973
75 | 0.314357,14.1192,2.82477,8974
76 | 0.911261,14.4034,2.92675,11648
77 | 0.997322,14.4444,2.94148,11295
78 | 1.01108,14.4519,2.94314,10917
79 | 1.72198,14.8386,3.02899,10914
80 | 1.83728,14.9118,3.03475,2401
81 | 2.39574,15.2603,3.06749,2404
82 | 2.77013,15.5237,3.06494,14578
83 | 2.89342,15.6104,3.06417,9603
84 | 3.44393,16.0433,3.02139,9604
85 | 3.49705,16.0851,3.01717,15936
86 | 3.56955,16.1482,3.00615,9437
87 | 3.91848,16.4527,2.95204,9438
88 | 4.20282,16.7242,2.88657,5553
89 | 4.37192,16.8844,2.84875,5556
90 | 4.78474,17.315,2.71936,13091
91 | 4.82069,17.3525,2.70807,13087
92 | 4.83707,17.3712,2.70134,13088
93 | 5.21418,17.7985,2.55041,6651
94 | 5.45563,18.0991,2.42727,6646
95 | 5.72014,18.4232,2.29744,8723
96 | 5.88473,18.641,2.20054,8720
97 | 5.99738,18.7914,2.13279,559
98 | 6.28878,19.2007,1.93697,560
99 | 6.34877,19.2843,1.89727,9561
100 | 6.36711,19.3104,1.88465,9558
101 | 6.41801,19.3858,1.84638,13432
102 | 6.70917,19.8187,1.62576,15530
103 | 6.99874,20.2698,1.38455,15622
104 | 7.04185,20.3364,1.34923,14901
105 | 7.06364,20.3706,1.33081,12431
106 | 7.33782,20.8149,1.08399,12432
107 | 7.43338,20.9693,0.998413,4759
108 | 7.7012,21.4177,0.741458,1667
109 | 7.79853,21.5783,0.650657,1664
110 | 8.02952,21.9712,0.42214,13400
111 | 8.14473,22.1643,0.311272,16487
112 | 8.31836,22.4612,0.13765,16482
113 |
--------------------------------------------------------------------------------
/src/MeshProcessing.h:
--------------------------------------------------------------------------------
1 | #pragma once
2 |
3 | #include
4 | #include
5 | // -------------------- OpenMesh
6 | #include
7 | #include
8 |
9 |
10 | // ----------------------------------------------------------------------------
11 | typedef OpenMesh::PolyMesh_ArrayKernelT<> CGMesh;
12 | typedef Eigen::SparseMatrix spMat;
13 | typedef Eigen::Triplet T;
14 |
15 |
16 | class MeshProcessing
17 | {
18 | public:
19 | MeshProcessing() {};
20 | ~MeshProcessing();
21 |
22 |
23 |
24 | private:
25 |
26 |
27 | public:
28 | //std::vector fillMatandSolve_CheckBoard();
29 | void mesh2Matrix(CGMesh& mesh, Eigen::MatrixXd& V, Eigen::MatrixXi& F);
30 | void matrix2Mesh(CGMesh& mesh, Eigen::MatrixXd& V, Eigen::MatrixXi& F);
31 | void meshEdges(CGMesh& mesh, Eigen::MatrixXi& E);
32 | void MeshUpdate(CGMesh& originMesh, CGMesh& updatedMesh, std::vector& pts);
33 | void MeshUpdate(CGMesh& originMesh, CGMesh& updatedMesh, double* pts);
34 | std::vector meshCorners(CGMesh& mesh);
35 | void MeshEdgeDual(CGMesh& coarseMesh, CGMesh& fineMesh, std::vector& Vtype, double s, int type);
36 |
37 | spMat SubdivCoarseMesh_CaltmullClack(CGMesh& coarseMesh, CGMesh& fineMesh);
38 | std::vector MeshVertexClassificationBlackWhite(CGMesh& mesh);
39 | std::vector MeshFaceClassificationBlackWhite(CGMesh& mesh);
40 | std::vector MeshFaceClassificationCube4types(CGMesh& mesh, int stFaceId, std::vector& vType);
41 | void getEdgeLengthStatistics(CGMesh& mesh, double& totalL, double& minL, double& maxL, double& avgL);
42 | void MeshUnitScale(CGMesh& originMesh, CGMesh& updatedMesh);
43 | void MeshScale(CGMesh& originMesh, CGMesh& updatedMesh, double s);
44 | void MeshDiag(CGMesh& originMesh, CGMesh& updatedMesh, int type);
45 |
46 |
47 | //***************************************** mesh refinement *********************
48 | void subdivision_EdgeSplit(CGMesh& coarseMesh, CGMesh& fineMesh);
49 |
50 | //***************************************** mesh Planarity *********************
51 | void meshPlanarity(CGMesh& inputMesh, std::vector& planarity);
52 | void meshFaceCenter(CGMesh& inputMesh, std::vector& fcen);
53 |
54 |
55 |
56 | public:
57 | //CGMesh coarseMesh;
58 |
59 |
60 |
61 |
62 | private:
63 |
64 | };
65 |
--------------------------------------------------------------------------------
/src/SOURCE.cmake:
--------------------------------------------------------------------------------
1 | set(LSC_SOURCES
2 |
3 | src/MeshProcessing.cpp
4 | src/MeshProcessing.h
5 | src/basic.h
6 | src/basic.cpp
7 | src/igl_tool.h
8 | src/igl_tool.cpp
9 | src/tools.h
10 | src/tools.cpp
11 | src/tracing.cpp
12 | src/energy.cpp
13 | src/functional.cpp
14 | src/mesh_opt.cpp
15 | src/nodes.cpp
16 | src/polyline.cpp
17 | src/interaction.cpp
18 | src/interaction.h
19 | src/topology.cpp
20 | )
21 | ################################################################################
22 | # Subfolders
23 | ################################################################################
24 |
--------------------------------------------------------------------------------
/src/igl_tool.h:
--------------------------------------------------------------------------------
1 |
2 | #pragma once
3 | #include
4 | #include
5 | #include
6 | #include
7 | #include
8 | #include
9 | #include
10 | #include
11 |
12 | #include
13 |
14 | // Lib IGL includes
15 | #include
16 | #include
17 | #include
18 | #include
19 | #include
20 |
21 |
22 | typedef enum
23 | {
24 | SPHERE_SEARCH,
25 | K_RING_SEARCH
26 | } searchType;
27 |
28 | typedef enum
29 | {
30 | AVERAGE,
31 | PROJ_PLANE
32 | } normalType;
33 | class QuadricCalculator
34 | {
35 | public:
36 | /* Row number i represents the i-th vertex, whose columns are:
37 | curv[i][0] : K2
38 | curv[i][1] : K1
39 | curvDir[i][0] : PD1
40 | curvDir[i][1] : PD2
41 | */
42 | std::vector< std::vector > curv;
43 | std::vector< std::vector > curvDir;
44 | bool curvatureComputed;
45 | class Quadric
46 | {
47 | public:
48 |
49 | IGL_INLINE Quadric ()
50 | {
51 | a() = b() = c() = d() = e() = 1.0;
52 | }
53 |
54 | IGL_INLINE Quadric(double av, double bv, double cv, double dv, double ev)
55 | {
56 | a() = av;
57 | b() = bv;
58 | c() = cv;
59 | d() = dv;
60 | e() = ev;
61 | }
62 |
63 | IGL_INLINE double& a() { return data[0];}
64 | IGL_INLINE double& b() { return data[1];}
65 | IGL_INLINE double& c() { return data[2];}
66 | IGL_INLINE double& d() { return data[3];}
67 | IGL_INLINE double& e() { return data[4];}
68 |
69 | double data[5];
70 |
71 | IGL_INLINE double evaluate(double u, double v)
72 | {
73 | return a()*u*u + b()*u*v + c()*v*v + d()*u + e()*v;
74 | }
75 |
76 | IGL_INLINE double du(double u, double v)
77 | {
78 | return 2.0*a()*u + b()*v + d();
79 | }
80 |
81 | IGL_INLINE double dv(double u, double v)
82 | {
83 | return 2.0*c()*v + b()*u + e();
84 | }
85 |
86 | IGL_INLINE double duv(double u, double v)
87 | {
88 | return b();
89 | }
90 |
91 | IGL_INLINE double duu(double u, double v)
92 | {
93 | return 2.0*a();
94 | }
95 |
96 | IGL_INLINE double dvv(double u, double v)
97 | {
98 | return 2.0*c();
99 | }
100 |
101 |
102 | IGL_INLINE static Quadric fit(const std::vector &VV)
103 | {
104 | assert(VV.size() >= 5);
105 | if (VV.size() < 5)
106 | {
107 | std::cerr << "ASSERT FAILED! fit function requires at least 5 points: Only " << VV.size() << " were given." << std::endl;
108 | exit(0);
109 | }
110 |
111 | Eigen::MatrixXd A(VV.size(),5);
112 | Eigen::MatrixXd b(VV.size(),1);
113 | Eigen::MatrixXd sol(5,1);
114 |
115 | for(unsigned int c=0; c < VV.size(); ++c)
116 | {
117 | double u = VV[c][0];
118 | double v = VV[c][1];
119 | double n = VV[c][2];
120 |
121 | A(c,0) = u*u;
122 | A(c,1) = u*v;
123 | A(c,2) = v*v;
124 | A(c,3) = u;
125 | A(c,4) = v;
126 |
127 | b(c) = n;
128 | }
129 |
130 | sol=A.jacobiSvd(Eigen::ComputeThinU | Eigen::ComputeThinV).solve(b);
131 |
132 | return Quadric(sol(0),sol(1),sol(2),sol(3),sol(4));
133 | }
134 | };
135 |
136 | public:
137 |
138 | Eigen::MatrixXd vertices;
139 | // Face list of current mesh (#F x 3) or (#F x 4)
140 | // The i-th row contains the indices of the vertices that forms the i-th face in ccw order
141 | Eigen::MatrixXi faces;
142 |
143 | std::vector > vertex_to_vertices;
144 | std::vector > vertex_to_faces;
145 | std::vector > vertex_to_faces_index;
146 | Eigen::MatrixXd face_normals;
147 | Eigen::MatrixXd vertex_normals;
148 |
149 | /* Size of the neighborhood */
150 | double sphereRadius;
151 | int kRing;
152 |
153 | bool localMode; /* Use local mode */
154 | bool projectionPlaneCheck; /* Check collected vertices on tangent plane */
155 | bool montecarlo;
156 | unsigned int montecarloN;
157 |
158 | searchType st; /* Use either a sphere search or a k-ring search */
159 | normalType nt;
160 |
161 | double lastRadius;
162 | double scaledRadius;
163 | std::string lastMeshName;
164 |
165 | /* Benchmark related variables */
166 | bool expStep; /* True if we want the radius to increase exponentially */
167 | int step; /* If expStep==false, by how much rhe radius increases on every step */
168 | int maxSize; /* The maximum limit of the radius in the benchmark */
169 |
170 | QuadricCalculator();
171 | IGL_INLINE void init(const Eigen::MatrixXd& V, const Eigen::MatrixXi& F);
172 |
173 | IGL_INLINE void finalEigenStuff(int, const std::vector&, Quadric&);
174 | IGL_INLINE void fitQuadric(const Eigen::Vector3d&, const std::vector& ref, const std::vector& , Quadric *);
175 | void applyProjOnPlane(const Eigen::Vector3d&, const std::vector&, std::vector&);
176 | IGL_INLINE void getSphere(const int, const double, std::vector&, int min);
177 | IGL_INLINE void getSphere(const Eigen::Vector3d &, const int, const double, std::vector &, int min);
178 |
179 | IGL_INLINE void getKRing(const int, const double,std::vector&);
180 | IGL_INLINE Eigen::Vector3d project(const Eigen::Vector3d&, const Eigen::Vector3d&, const Eigen::Vector3d&);
181 | void computeReferenceFrame(int i, const Eigen::Vector3d& normal, std::vector& ref);
182 | void computeReferenceFrame_face(const Eigen::Vector3d& mp, const int fid, const Eigen::Vector3d &normal, std::vector &ref);
183 | IGL_INLINE void getAverageNormal(int, const std::vector&, Eigen::Vector3d&);
184 | IGL_INLINE void getAverageNormal_face(const std::vector &, Eigen::Vector3d &);
185 | IGL_INLINE void getProjPlane(int, const std::vector&, Eigen::Vector3d&);
186 | IGL_INLINE void applyMontecarlo(const std::vector&,std::vector*);
187 | IGL_INLINE void computeCurvature();
188 | void computeCurvature_faces();
189 | // get the derivates, get the second fundamental form, and get the corresponding normals
190 | IGL_INLINE void get_I_and_II(Eigen::MatrixXd& ru, Eigen::MatrixXd& rv, Eigen::MatrixXd& ruu, Eigen::MatrixXd& ruv,
191 | Eigen::MatrixXd& rvv, std::vector& L_list,std::vector& M_list, std::vector &N_list,Eigen::MatrixXd &normals);
192 | IGL_INLINE void get_pseudo_vertex_on_edge(
193 | const int center_id,
194 | const Eigen::Vector3d &epoint, const Eigen::Vector3d &pnormal,Eigen::Vector3d &pvertex);
195 | IGL_INLINE void printCurvature(const std::string& outpath);
196 | IGL_INLINE double getAverageEdge();
197 |
198 | IGL_INLINE static int rotateForward (double *v0, double *v1, double *v2)
199 | {
200 | double t;
201 |
202 | if (std::abs(*v2) >= std::abs(*v1) && std::abs(*v2) >= std::abs(*v0))
203 | return 0;
204 |
205 | t = *v0;
206 | *v0 = *v2;
207 | *v2 = *v1;
208 | *v1 = t;
209 |
210 | return 1 + rotateForward (v0, v1, v2);
211 | }
212 |
213 | IGL_INLINE static void rotateBackward (int nr, double *v0, double *v1, double *v2)
214 | {
215 | double t;
216 |
217 | if (nr == 0)
218 | return;
219 |
220 | t = *v2;
221 | *v2 = *v0;
222 | *v0 = *v1;
223 | *v1 = t;
224 |
225 | rotateBackward (nr - 1, v0, v1, v2);
226 | }
227 |
228 | IGL_INLINE static Eigen::Vector3d chooseMax (Eigen::Vector3d n, Eigen::Vector3d abc, double ab)
229 | {
230 | int max_i;
231 | double max_sp;
232 | Eigen::Vector3d nt[8];
233 |
234 | n.normalize ();
235 | abc.normalize ();
236 |
237 | max_sp = - std::numeric_limits::max();
238 |
239 | for (int i = 0; i < 4; ++i)
240 | {
241 | nt[i] = n;
242 | if (ab > 0)
243 | {
244 | switch (i)
245 | {
246 | case 0:
247 | break;
248 |
249 | case 1:
250 | nt[i][2] = -n[2];
251 | break;
252 |
253 | case 2:
254 | nt[i][0] = -n[0];
255 | nt[i][1] = -n[1];
256 | break;
257 |
258 | case 3:
259 | nt[i][0] = -n[0];
260 | nt[i][1] = -n[1];
261 | nt[i][2] = -n[2];
262 | break;
263 | }
264 | }
265 | else
266 | {
267 | switch (i)
268 | {
269 | case 0:
270 | nt[i][0] = -n[0];
271 | break;
272 |
273 | case 1:
274 | nt[i][1] = -n[1];
275 | break;
276 |
277 | case 2:
278 | nt[i][0] = -n[0];
279 | nt[i][2] = -n[2];
280 | break;
281 |
282 | case 3:
283 | nt[i][1] = -n[1];
284 | nt[i][2] = -n[2];
285 | break;
286 | }
287 | }
288 |
289 | if (nt[i].dot(abc) > max_sp)
290 | {
291 | max_sp = nt[i].dot(abc);
292 | max_i = i;
293 | }
294 | }
295 | return nt[max_i];
296 | }
297 |
298 | };
299 |
300 |
301 |
--------------------------------------------------------------------------------
/src/interaction.h:
--------------------------------------------------------------------------------
1 | #pragma once
2 | #include
3 | #include
4 | #include
5 | #include
6 | // to use sleep()
7 | #ifdef _WIN32
8 | #include
9 | #else
10 | #include
11 | #endif
12 |
13 | void draw_stroke_on_mesh(const CGMesh &mesh, igl::opengl::glfw::Viewer &viewer,
14 | const Eigen::MatrixXd &V, const Eigen::MatrixXi &F, const std::vector &xs,
15 | const std::vector &ys, Eigen::MatrixXd& Vers, std::vector &fout,
16 | std::vector &bcout);
17 | class PartOfAutoRun{
18 | public:
19 | PartOfAutoRun(){};
20 | int iterations; // nbr of iterations
21 | double weight_gravity;
22 | double weight_lap ;
23 | double weight_bnd;
24 | double weight_pg;
25 | double weight_strip_width;
26 | };
27 |
28 |
29 | // the default arguments for running the pseudo-geodesics with drawing strokes
30 | class AutoRunArgs{
31 | public:
32 | AutoRunArgs(){};
33 | std::vector parts;
34 | bool compute_pg;
35 | double stop_step_length; // when the step length lower than this, stop
36 | double stop_energy_sqrt; // when the energy sqrt lower than this, stop
37 |
38 |
39 | };
40 | void AssignAutoRunDefaultArgs(AutoRunArgs &args, const bool compute_pg);
--------------------------------------------------------------------------------
/src/tools.h:
--------------------------------------------------------------------------------
1 | #pragma once
2 | #include
3 | std::vector to_triplets(spMat &M);
4 | // convert a vector to a matrix with size 1*n
5 | Eigen::VectorXd duplicate_valus(const double value, const int n);
6 | Eigen::MatrixXd duplicate_vector(const Eigen::Vector2d& vec, const int n);
7 | spMat sparse_vec_to_sparse_maxrix(Efunc &vec);
8 | Efunc sparse_mat_col_to_sparse_vec(const spMat &mat, const int col);
9 | Efunc dense_vec_to_sparse_vec(const Eigen::VectorXd &vec);
10 | void mat_col_to_triplets(const spMat &mat, const int col, const int ref, const bool inverse, std::vector &triplets);
11 | spMat dense_mat_list_as_sparse_diagnal(const std::vector &mlist);
12 | Eigen::MatrixXd vec_list_to_matrix(const std::vector &vec);
13 | Eigen::VectorXd vec_list_to_vector(const std::vector& vec);
14 | bool triangles_coplanar(const Eigen::Vector3d &t0, const Eigen::Vector3d &t1, const Eigen::Vector3d &t2,
15 | const Eigen::Vector3d &p0, const Eigen::Vector3d &p1, const Eigen::Vector3d &p2);
16 |
17 | bool triangles_coplanar(const Eigen::MatrixXd& V, const Eigen::MatrixXi& F, const int fid1, const int fid2);
18 | bool segments_colinear(const Eigen::Vector3d& s1, const Eigen::Vector3d& s2);
19 | // -1: boundary edge
20 | // 0 not coplanar
21 | // 1 co-planar
22 | int edge_is_coplanar(const CGMesh &lsmesh, const CGMesh::EdgeHandle &edge_middle, const Eigen::MatrixXd &V, const Eigen::MatrixXi &F);
23 | std::vector polynomial_simplify(const std::vector &poly);
24 | std::vector polynomial_add(const std::vector &poly1, const std::vector &poly2);
25 | std::vector polynomial_times(const std::vector &poly1, const std::vector &poly2);
26 | std::vector polynomial_times(const std::vector &poly1, const double &nbr);
27 | double polynomial_value(const std::vector &poly, const double para);
28 | std::vector polynomial_integration(const std::vector &poly);
29 | double polynomial_integration(const std::vector &poly, const double lower, const double upper);
30 |
31 | void cylinder_example(double radius, double height, int nr, int nh);
32 | void cylinder_open_example(double radius, double height, int nr, int nh);
33 | // theta <= pi/2, phi<=pi
34 | void sphere_example(double radius, double theta, double phi, int nt, int np);
35 |
36 | void split_mesh_boundary_by_corner_detection(CGMesh& lsmesh, const Eigen::MatrixXd& V, const double threadshold_angel_degree,
37 | const std::vector &Boundary_Edges, std::vector>& boundaries);
38 |
39 | bool save_levelset(const Eigen::VectorXd &ls, const Eigen::MatrixXd& binormals);
40 | bool save_levelset(const Eigen::VectorXd &ls);
41 | bool read_levelset(Eigen::VectorXd &ls);
42 | bool read_bi_normals(Eigen::MatrixXd &bn);
43 | std::array get_vers_around_edge(CGMesh& lsmesh, int edgeid, int& fid1, int &fid2);
44 | double get_t_of_segment(const Eigen::Vector3d &ver, const Eigen::Vector3d &start, const Eigen::Vector3d &end);
45 | double get_t_of_value(const double &ver, const double &start, const double &end);
46 | Eigen::Vector2d get_2d_ver_from_t(const double t, const Eigen::Vector2d& start, const Eigen::Vector2d& end);
47 | Eigen::Vector3d get_3d_ver_from_t(const double t, const Eigen::Vector3d& start, const Eigen::Vector3d& end);
48 | bool angles_match(const double angle_degree1, const double angle_degree2);
49 | void assign_angles_based_on_funtion_values(const Eigen::VectorXd &fvalues,
50 | const double angle_large_function, const double angle_small_function,
51 | std::vector& angle_degree);
52 | bool find_one_ls_segment_on_triangle(const double value, const Eigen::MatrixXi &F, const Eigen::MatrixXd &V,
53 | const Eigen::VectorXd &fvalues, const int fid, Eigen::Vector3d &E0, Eigen::Vector3d &E1);
54 | void extract_levelset_web(const CGMesh &lsmesh, const Eigen::MatrixXd &V,
55 | const Eigen::MatrixXi &F, const Eigen::VectorXd &ls0, const Eigen::VectorXd &ls1,
56 | const int nbr_ls0, const int nbr_ls1, const int threadshold_nbr,
57 | Eigen::MatrixXd &vers, Eigen::MatrixXi &Faces, bool even_pace);
58 | void extract_levelset_web_stable(const CGMesh &lsmesh, const std::vector& loop, const Eigen::MatrixXd &V,
59 | const Eigen::MatrixXi &F, const Eigen::VectorXd &ls0, const Eigen::VectorXd &ls1,
60 | const int expect_nbr_ls0, const int expect_nbr_ls1, const int threadshold_nbr,
61 | Eigen::MatrixXd &vers, Eigen::MatrixXi &Faces, bool even_pace, bool diagSegments);
62 | void extract_shading_lines(const CGMesh &lsmesh, const Eigen::MatrixXd &V, const std::vector &loop,
63 | const Eigen::MatrixXi &F, const Eigen::VectorXd &ls,
64 | const int expect_nbr_ls, const bool write_binormals);
65 | double get_mat_max_diag(spMat& M);
66 | void solve_mean_value_laplacian_mat(CGMesh& lsmesh, const std::vector& IVids, spMat& mat);
67 | spMat sum_uneven_spMats(const spMat& mat_small, const spMat& mat_large);
68 | Eigen::VectorXd sum_uneven_vectors(const Eigen::VectorXd& vsmall, const Eigen::VectorXd& vlarge);
69 | spMat three_spmat_in_diag(const spMat& mat0, const spMat& mat1, const spMat& mat2, const int ntarget);
70 | Eigen::VectorXd three_vec_in_row(const Eigen::VectorXd& ve0, const Eigen::VectorXd& ve1, const Eigen::VectorXd& ve2, const int ntarget);
71 | // Ft, Vt belong to the triangle mesh,
72 | bool write_quad_mesh_with_binormal(const std::string & fname, const Eigen::MatrixXd& Vt, const Eigen::MatrixXi& Ft, const Eigen::MatrixXd& bi,
73 | const Eigen::MatrixXd& Vq, const Eigen::MatrixXi& Fq);
74 | void levelset_unit_scale(Eigen::VectorXd& func, Eigen::MatrixXd &GradValueF, const double length);
75 | void extract_Quad_Mesh_Zigzag(const CGMesh &lsmesh,const std::vector& loop, const Eigen::MatrixXd &V,
76 | const Eigen::MatrixXi &F, const Eigen::VectorXd &ls,
77 | const int expect_nbr_ls, const int expect_nbr_dis, const int threadshold_nbr,
78 | Eigen::MatrixXd &vers, Eigen::MatrixXi &Faces);
79 | Eigen::MatrixXd get_each_face_direction(const Eigen::MatrixXd &V, const Eigen::MatrixXi &F, const Eigen::VectorXd &func);
80 | void visual_extract_levelset_web(const CGMesh &lsmesh, const Eigen::MatrixXd &V,
81 | const Eigen::MatrixXi &F, const Eigen::VectorXd &ls0, const Eigen::VectorXd &ls1,
82 | const int expect_nbr_ls0, const int expect_nbr_ls1, Eigen::MatrixXd &E0, Eigen::MatrixXd& E1,
83 | Eigen::MatrixXd &E2, Eigen::MatrixXd& E3,
84 | bool even_pace = false, bool debug = false, int dbg0 = -1, int dbg1 = -1);
85 | void visual_extract_levelset_web_stable(const CGMesh &lsmesh, const std::vector& loop, const Eigen::MatrixXd &V,
86 | const Eigen::MatrixXi &F, const Eigen::VectorXd &ls0, const Eigen::VectorXd &ls1,
87 | const int expect_nbr_ls0, const int expect_nbr_ls1, Eigen::MatrixXd &E0, Eigen::MatrixXd &E1,
88 | Eigen::MatrixXd &E2, Eigen::MatrixXd &E3,
89 | bool even_pace, bool debug, int dbg0, int dbg1);
90 | CGMesh::HalfedgeHandle boundary_halfedge(const CGMesh& lsmesh, const CGMesh::HalfedgeHandle& boundary_edge);
91 | void select_mesh_boundary_curve_on_boundary_loop(CGMesh &lsmesh, const Eigen::MatrixXd &V, const int loopid,
92 | const int start_edge, const int nbr_edges,
93 | const std::vector &Boundary_Edges,
94 | std::vector &selected);
95 | bool vector_contains_NAN(Eigen::VectorXd &B);
96 | bool vector_contains_NAN(Eigen::VectorXd &B, int& loc);
97 | void get_one_ring_vertices(CGMesh &lsmesh, const int id, std::vector &pts);
98 | Eigen::VectorXi Second_Angle_Inner_Vers();
99 | // the angles are in degree.
100 | Eigen::Vector3d angle_ray_converter(const double theta, const double phi);
101 | void rotate_z_axis_to_earth_axis(const Eigen::MatrixXd &Vori, Eigen::MatrixXd &Vnew, const double latitude_degree);
102 | void mesh_unit_scale(const Eigen::MatrixXd &V, Eigen::MatrixXd &Vout);
103 | void mark_high_energy_vers(const Eigen::VectorXd &energy, const int ninner, const double percentage,
104 | const std::vector &IVids, Eigen::VectorXi &he, std::vector& refid);
105 | void read_plylines_and_binormals(std::vector>& ply, std::vector>& bin);
106 | bool read_polylines(std::vector>& ply);
107 | CGMesh polyline_to_strip_mesh(const std::vector> &ply, const std::vector> &bi,
108 | const double ratio, const double ratio_back = 0);
109 |
110 | std::vector sample_one_polyline_based_on_length(const std::vector& polyline, const double avg);
111 | std::vector sample_one_polyline_and_binormals_based_on_length(const std::vector &polyline, const int nbr,
112 | const std::vector &binormals, std::vector &bn_out);
113 | double polyline_length(const std::vector& line);
114 | void write_polyline_xyz(const std::vector> &lines, const std::string prefix);
115 | Eigen::Vector3d orient_vector(const Eigen::Vector3d& base, const Eigen::Vector3d &vec);
116 | void read_origami_and_convert_to_polylines(std::vector>& ply, std::vector>& bin);
117 | std::array barycenter_coordinate(const Eigen::Vector3d &v0, const Eigen::Vector3d &v1, const Eigen::Vector3d &v2, const Eigen::Vector3d &p);
118 | void update_qd_mesh_with_plylines();
119 | Eigen::Vector3d get_light_rotated_back_from_earth_axis(const double latitude_degree, const double theta, const double phi);
120 | bool read_csv_data_lbl(const std::string fname, std::vector> &data);
121 | void project_mesh_and_get_shading_info(CGMesh &ref, CGMesh &base, const int nbr_rings, Eigen::VectorXi &info,
122 | Eigen::MatrixXd &P1, Eigen::MatrixXd &P2);
123 | void project_mesh_and_get_vertex_class(std::vector &ref, CGMesh &base, Eigen::VectorXi &info);
124 | spMat put_mat_in_middle(const spMat &mat, const int sizemat);
125 | Eigen::VectorXd put_vec_in_middle(const Eigen::VectorXd &vec);
126 | double get_interactive_angle(const Eigen::VectorXd &func, const LSAnalizer &analizer,
127 | const CGMesh &lsmesh, const Eigen::MatrixXd &norm_v,
128 | const Eigen::MatrixXd &V,
129 | const Eigen::MatrixXi &F, const std::vector> interactive_flist,
130 | const std::vector> &interactive_bclist, const Eigen::VectorXi &InnerV);
131 | void convert_polyline_to_developable_strips(const std::vector &ply,
132 | const std::vector &bnm, std::vector &creases);
133 | void convert_polyline_to_developable_strips_reflection_method(const std::vector &ply,
134 | const std::vector &bnm, std::vector &creases);
135 | void evaluate_and_print_strip_developability(const std::vector> &ply,
136 | const std::vector> &crease);
137 | void get_polyline_rectifying_planes(const std::vector> &ply,
138 | const std::vector> &bnm,
139 | std::vector>& vertices,
140 | std::vector>& tangents,
141 | std::vector>& binormals);
142 |
143 | void save_strokes(const std::vector> &flist, const std::vector> &bclist,
144 | const Eigen::MatrixXd& V, const Eigen::MatrixXi& F);
145 | void read_strokes( std::vector> &flist, std::vector> &bclist);
146 | void get_geodesic_distance(const Eigen::MatrixXd &V, const Eigen::MatrixXi &F, const std::vector &IVids,
147 | const std::vector &idinner, Eigen::VectorXd &D);
148 | void assign_pg_angle_based_on_geodesic_distance(const Eigen::VectorXd &D, const double percentage, Eigen::VectorXd &angle);
149 | void read_ver_write_into_xyz_files();
150 |
151 | void get_iso_lines_baricenter_coord(const CGMesh &lsmesh, const std::vector& loop, const Eigen::MatrixXd &V,
152 | const Eigen::MatrixXi &F, const Eigen::VectorXd &ls, double value, std::vector> ¶s,
153 | std::vector> &handles,
154 | std::vector& left_large);
155 | void get_diff_polylines_order(const std::vector> &pls, std::vector> &sorted,
156 | const int threadshold);
157 | void read_pts_csv_and_write_xyz_files();
158 | // the optimization results of the strips lose the endpoints. this function recovers the endpoints by comparing with the
159 | // version before opt
160 | void recover_polyline_endpts();
161 |
162 | // read the developable strip, and unfold it in 2d.
163 | void write_unfold_single_strip(int which_curve = 0);
164 | // the first version of straight strips: not exactly straight.
165 | void construct_single_developable_strips_by_intersect_rectifying(const int which);
166 | void construct_developable_strips_by_intersect_rectifying();
167 | void draw_catenaries_on_cylinder();
168 |
169 | void match_the_two_catenaries(const CGMesh &lsmesh, const std::vector &loop, const Eigen::MatrixXd &V,
170 | const Eigen::MatrixXi &F, const Eigen::MatrixXd &normals, const Eigen::VectorXd &ls,
171 | Eigen::MatrixXd& Vcout, Eigen::MatrixXd& Vlout);
172 | bool quadratic_solver(const std::vector &func, std::array &roots);
173 | void orthogonal_slope_for_different_shading_types(const int whichtype, Eigen::VectorXi InnerV, const Eigen::VectorXi &info,
174 | const Eigen::MatrixXd &V, const Eigen::MatrixXi &F,
175 | const Eigen::MatrixXd &norm_f, const double theta,
176 | const double phi, const double theta_tol, const double phi_tol,
177 | const double theta2, const double phi2,
178 | std::vector &fout, std::vector &ortho);
179 | void get_orthogonal_direction_minimal_principle_curvature(const Eigen::MatrixXd &V, const Eigen::MatrixXi &F,
180 | std::vector &idspos,
181 | std::vector &idsneg, std::vector &ortho,
182 | std::vector &coscos, std::vector>& CurvDir);
183 | void obj2csv();
184 | void csv2objcurves();
185 | void project_polylines_on_shading_curves_and_save_results();
186 | void read_draw_pts_from_plylines(Eigen::MatrixXd &ver);
187 | void read_plylines_extract_offset_mesh(const double scale_front, const double scale_back, CGMesh& mesh);
188 | void make_example_comparing_two_plylines_distance();
189 | void compare_multiple_correspoding_curves_dis();
190 | void run_sort_polylines();
191 | void show_rotback_slopes(const Eigen::MatrixXd &E0, const Eigen::MatrixXd &E1, const double latitude_degree,
192 | Eigen::MatrixXd &rotmids, Eigen::MatrixXd &rotdirs);
193 | void save_rotback_slopes(const Eigen::MatrixXd &rotmids, const Eigen::MatrixXd &rotdirs);
194 | void decrease_ply_nbr_by_half();
195 | void evaluate_strip_straightness(const std::vector>& plys,const std::vector>& bnms);
196 | void save_invert_levelset(const Eigen::VectorXd& func);
197 | void write_polyline_joints(const Eigen::MatrixXd& V, const Eigen::MatrixXi& F, const Eigen::MatrixXd &norm_v);
198 | void generate_rulings_outof_plylines();
199 | void assign_const_rulings_to_strips(const Eigen::Vector3d& bnm);
200 | void compute_ls_intersections_and_assign_parallel_joints(const CGMesh &lsmesh, const Eigen::Vector3d &joint,
201 | const double scale, const Eigen::MatrixXd &V,
202 | const Eigen::MatrixXi &F, const Eigen::VectorXd &ls0, const Eigen::VectorXd &ls1,
203 | const int expect_nbr_ls0, const int expect_nbr_ls1,
204 | bool even_pace);
205 | void angle_range_calculator(double theta, double phi, double theta_tol, double phi_tol, double &zmin, double &zmax, double &tanmin,
206 | double &tanmax);
207 | void assign_ls_to_subpatch(CGMesh &ref, CGMesh &base, const Eigen::VectorXd &func, Eigen::VectorXd &funout);
208 | void runRotateArrows(double scaling);
209 | void writeRectifyingPlanes(double scaling);
210 | void writeMessyPoints(double scaling);
211 | void readTriMeshConvert2QuadMesh();
212 | void readQuadMesh2TriMesh();
213 | void evaluateGGGConsineConstraints();
214 | void processKhusravData();
--------------------------------------------------------------------------------