# Spatial graph embeddings and coupler curves¶

This program implements a method for obtaining edge lengths of a minimally rigid graph with many real spatial embeddings. The method is based on sampling over two parameter family that preserves so called coupler curve. See project website for the details.

Moreover, it includes Qt application for plotting coupler curves of the 7-vertex minimally rigid graph with the maximal number of embeddings, G48.

The main functionality is provided by the package graphEmbeddings3D, see Documentation.

The version 1.0 was used for the paper On the Maximal Number of Real Embeddings of Spatial Minimally Rigid Graphs accepted to ISSAC 2018:

The current version 2.0 supports arbitrary minimally rigid graphs containing a triangle instead of only predefined ones.

## Predefined graphs¶

• 6 vertices: octahedron/cyclohexane (the unique 6-vertex graph with the maximal number of embeddings)
• 7 vertices: G16a, G16b, G24, G32a, G32b, G48 (all 7-vertex graphs requiring the last Henneberg step being H2, the number corresponds to the number of embeddings)
• 8 vertices: G128, G160

## Tests¶

python test_6vert.py runs the sampling method for octahedron

python test_7vert.py verifies that there are edge lengths for G16a, G16b, G24, G32a, G32b and G48 such that all embeddings are real

python test_8vert.py verifies that there are edge lengths such that G128 and G160 have 128, resp. 132, real embeddings

## Sampling¶

The scripts in the folder sampling_scripts use the proposed method for various graphs and starting edge lengths.

## Coupler curves of G48¶

This Qt program is launched by python CouplerCurveG48.py.

Functionality:

• plotting coupler curve of G48
• computing number of real embeddings of G48 by PHC
• sampling of parameters for specific subgraphs
• iterative method for increasing the number of real embeddings
• export to Axel

## Warning¶

The program strongly depends on PHC computation - this fails sometimes that might cause failure of the program.