Fast Linking Numbers of Loopy Structures Dataset

Copyright (C) 2021 Ante Qu <antequ@cs.stanford.edu>.

This is the dataset for this paper:

Ante Qu and Doug L. James. 2021. Fast Linking Numbers for Topology Verification
of Loopy Structures. ACM Trans. Graph. 40, 4, Article 106 (August 2021),
19 pages. https://doi.org/10.1145/3450626.3459778 

In particular, these files correspond to all the closed-loop examples in
Table 1, with the exception that we do not release the chevron 3x3 stitch
pattern because it is not a collection of closed loops. Most files are in the
Binary Curve Collection (BCC) file format. The open-sourced fast linking
numbers [curve verification tool](https://github.com/antequ/fastlinkingnumbers/) released with the paper uses this file format.

The chainmail, rubber band, and woundball examples came originally from Houdini
OBJ files, and we have included their original files as well.

The reference certificate for each [name].bcc is in
reference_certificates/[name].txt. As described in the code release, the first
line indicates the number of curves in the model, and every subsequent line is
a triplet consisting of two curve indices (0-based) and the linking number
between the two curves. For example, "5,6,-2" indicates that curves 5 and 6
have a linking number of -2 between them. Any curve pairs not included in a
triplet have a linking number of zero. If the certificate file only has the
first row, then all its curves are unlinked.

We also included a script in scripts/dataset_referencegen.sh to generate these
certificates. Simply edit the "VERIFYCURVESPATH=" line to point to your
"verifycurves" executable.

Here is a list of the table entries and their corresponding BCC filenames:

1. Alien Sweater (Initial):              alien_sweater_init.bcc
2. Alien Sweater (Final):                alien_sweater_final.bcc
3. Sheep Sweater:                        sheep_sweater.bcc
4. Sweater:                              sweater.bcc
5. Glove:                                glove.bcc
6. Knit Tube (Initial):                  knittubeinit.bcc
7. Knit Tube (Final):                    knittubefinal.bcc
8. Chainmail (Initial):                  chainmail_init.bcc
9. Chainmail (Final):                    chainmail_final.bcc
10. Rubber Bands:                        rubber_bands_final.bcc
11. Double-Helix Ribbon λ=10, 200K Segs: double_helix_ribbon_lambda10_N200K.bcc
12. Double-Helix Ribbon λ=1K, 200K Segs: double_helix_ribbon_lambda1K_N200K.bcc
13. Double-Helix Ribbon λ=10, 20M Segs:  double_helix_ribbon_lambda10_N20M.bcc
14. Double-Helix Ribbon λ=1K, 20M Segs:  double_helix_ribbon_lambda1K_N20M.bcc
15. Thick Square Link, 500K Segs:        thicksquarelink_N500K.bcc
16. Thick Square Link, 4M Segs:          thicksquarelink_N4M.bcc
17. Torus λ=1M, 20M Segs:                torus_lambda1M_N20M.bcc
18. Torus λ=0,  40M Segs:                torus_lambda0_N40M.bcc
19. Woundball ν=1K,  1M Segs:            woundball_nu1K_N1M.bcc
20. Woundball ν=10K, 2M Segs:            woundball_nu10K_N2M.bcc

Note that some input files are B-Splines, some are uniform Catmull–Rom splines,
and some are polylines. This information is encoded in the BCC files.

knittubebroken.bcc: For the Knit Tube, knittubeinit.bcc comes from simulation
step 0 and knittubefinal.bcc comes from simulation step 13000, and both states
are unlinked and topologically valid. We also added knittubebroken.bcc, which
comes from simulation step 13080, when it has a linkage violation.

rubber_bands_init.bcc: For the Rubber Bands, we also added
rubber_bands_init.bcc with the initial state of the rubber bands.
Interestingly, this configuration has zero potentially linked loop pairs.

The knitted yarn models (1 through 7) are modified from Cem Yuksel's Yarn-level
Cloth Models located at http://www.cemyuksel.com/research/yarnmodels/.

Download the dataset zip [here](https://drive.google.com/file/d/1tTSrzwP92xYxmVXVc6bx3GGEJ0srukp9/view).

Introducing paper: Fast Linking Numbers for Topology Verification of Loopy Structures