struts - find self-contacts of tube with Geomview VECT core


struts -e <eps> -l <levels> -v <verbosity> <file>


struts is designed to demonstrate some of the features of the liboctrope library. If the function d(x,y) gives the space distance between two points x and y on a polygonal curve in 3-space, then struts finds local minima of d(x,y) (excluding distances in the form d(x,x)=0). The program records all locally minimal pairs whose distance is within eps of the distance of the closest such pair, and displays them in the Geomview SKEL format. These locally minimal pairs are called ``struts''.


Displays a help message showing the options for struts.

-e eps, --epsilon=eps
struts will display all pairs whose distance is within eps of the closest such pair. eps defaults to 0.01.

-s, --stats
If this option is present, struts will display a human-readable summary of the characteristics of the set of pairs with distance within eps of the shortest locally minimal distance.

-l levels, --levels=levels
struts efficiently identifies pairs of points of interest using an octree-based clustering algorithm called octrope. The number of levels in the octree affects the resolution at which edges are clustered-- a higher number of levels allows more pairs of edges to be eliminated from struts' search before the code begins checking pairs of edges against one another. But this speedup must be balanced against the overhead incurred in building a larger tree.

The user can fine-tune this tradeoff by setting levels. Setting levels = 1 reduces the algorithm to checking all pairs of edges (very slow), while for an n edge link the default is levels = 0.75*log2(n).

-v verblevel, --verbosity verblevel
The user can print debugging information by setting verblevel from 0 (lowest) to 9 (highest). Usually useful only for library maintainers.

The input file, expected to be in Geomview VECT format. If the filename is infile.vect, the output file is named infile.struts.skel. This argument is not optional.


Find all nontrivial local minima of the self-distance function with length within 0.01 (the default) of minimum length for the file 3_1.vect:

 struts 3_1.vect

Find nontrivial local minima with length within 0.0001 of minimum:

 struts -e 0.0001 3_1.vect


the liboctrope manpage, the octrope_link manpage,


Ted Ashton and Jason Cantarella


This program is covered by the GNU General Public License for free software, modified as follows: Any publication of computations performed using struts must include a citation of the paper A Fast Octree-Based Algorithm for Computing Ropelength (arXiv:math.DG/0409416).