Regina 7.0 Calculation Engine
Classes | Typedefs | Enumerations | Functions
Angle Structures

Angle structures on triangulations. More...

Classes

class  regina::AngleStructure
 Represents an angle structure on a triangulation. More...
 
class  regina::AngleStructures
 A collection of angle structures on a 3-manifold triangulation. More...
 

Typedefs

using regina::AngleAlg = regina::Flags< AngleAlgFlags >
 A combination of flags for angle structure enumeration algorithms. More...
 

Enumerations

enum  regina::AngleAlgFlags {
  regina::AS_ALG_DEFAULT = 0x0000 , regina::AS_ALG_TREE = 0x0010 , regina::AS_ALG_DD = 0x0020 , regina::AS_ALG_LEGACY = 0x4000 ,
  regina::AS_ALG_CUSTOM = 0x8000
}
 Represents options and variants of algorithms for enumerating various types of angle structures on 3-manifold triangulations. More...
 

Functions

AngleAlg regina::operator| (AngleAlgFlags lhs, AngleAlgFlags rhs)
 Returns the bitwise OR of the two given flags. More...
 
void regina::swap (AngleStructure &a, AngleStructure &b) noexcept
 Swaps the contents of the given angle structures. More...
 
void regina::swap (AngleStructures &lhs, AngleStructures &rhs)
 Swaps the contents of the two given lists. More...
 
MatrixInt regina::makeAngleEquations (const Triangulation< 3 > &tri)
 Generates the set of angle structure equations for the given triangulation. More...
 

Detailed Description

Angle structures on triangulations.

Typedef Documentation

◆ AngleAlg

A combination of flags for angle structure enumeration algorithms.

If a function requires an AngleAlg object as an argument, you can pass a single AngleAlgFlags constant, or a combination of such constants using the bitwise OR operator, or empty braces {} to indicate no flags at all.

Enumeration Type Documentation

◆ AngleAlgFlags

Represents options and variants of algorithms for enumerating various types of angle structures on 3-manifold triangulations.

These options can be combined using the bitwise OR operator, and then passed to enumeration routines such as the AngleStructures class constructor.

Enumerator
AS_ALG_DEFAULT 

An empty flag, indicating to an enumeration routine that it should use its default behaviour.

The numeric value of this flag is zero (i.e., it has no effect when combined with other flags using bitwise OR).

AS_ALG_TREE 

When enumerating taut angle structures, this flag indicates that the tree traversal algorithm should be used.

This algorithm is based on linear and integer programming techniques, and has many desirable properties including a relatively low overhead. Enumeration algorithms will use it if possible unless a different method is explicitly requested.

This is a variant of the tree traversal algorithm from B. A. Burton and M. Ozlen, "A tree traversal algorithm for decision problems in knot theory and 3-manifold topology", Algorithmica 65 (2013), pp. 772-801.

This flag is incompatible with AS_ALG_DD.

AS_ALG_DD 

When enumerating vertex or taut angle structures, this flag indicates that a modified double description method should be used.

This is currently the only supported algorithm for enumerating all vertex angle structures (not just taut structures).

This flag is incompatible with AS_ALG_TREE.

AS_ALG_LEGACY 

Indicates that an angle structure list was enumerated using an older version of Regina (6.0.1 or earlier).

These older versions did not retain details of the algorithm used to build each list, and so in such cases no further algorithmic information is available.

If this flag is passed to an enumeration algorithm, it will be ignored.

AS_ALG_CUSTOM 

Indicates that an angle structure list was built using a customised algorithm.

In such cases, no further details on the algorithm are available.

If this flag is passed to an enumeration algorithm, it will be ignored.

Function Documentation

◆ makeAngleEquations()

MatrixInt regina::makeAngleEquations ( const Triangulation< 3 > &  tri)

Generates the set of angle structure equations for the given triangulation.

These are the angle equations that will be used when enumerating angle structures on the given triangulation.

Each equation will be represented as a row of the resulting matrix, and each column will represent a coordinate in the underlying coordinate system (which is described in the notes for AngleStructure::vector()).

Parameters
trithe triangulation upon which these angle structure equations will be based.
Returns
the resulting set of angle structure equations.

◆ operator|()

AngleAlg regina::operator| ( AngleAlgFlags  lhs,
AngleAlgFlags  rhs 
)
inline

Returns the bitwise OR of the two given flags.

Parameters
lhsthe first flag to combine.
rhsthe second flag to combine.
Returns
the combination of both flags.

◆ swap() [1/2]

void regina::swap ( AngleStructure a,
AngleStructure b 
)
inlinenoexcept

Swaps the contents of the given angle structures.

This global routine simply calls AngleStructure::swap(); it is provided so that AngleStructure meets the C++ Swappable requirements.

Parameters
athe first angle structure whose contents should be swapped.
bthe second angle structure whose contents should be swapped.

◆ swap() [2/2]

void regina::swap ( AngleStructures lhs,
AngleStructures rhs 
)
inline

Swaps the contents of the two given lists.

This global routine simply calls AngleStructures::swap(); it is provided so that AngleStructures meets the C++ Swappable requirements.

See AngleStructures::swap() for more details.

Note
This swap function is not marked noexcept, since it fires change events on both lists which may in turn call arbitrary code via any registered packet listeners.
Parameters
lhsthe list whose contents should be swapped with rhs.
rhsthe list whose contents should be swapped with lhs.

Copyright © 1999-2021, The Regina development team
This software is released under the GNU General Public License, with some additional permissions; see the source code for details.
For further information, or to submit a bug or other problem, please contact Ben Burton (bab@maths.uq.edu.au).