Classical and virtual knots and links
More...
Classical and virtual knots and links
◆ Framing
Indicates one of the standard framings of a knot or link.
Here a framing refers to a choice of normal vector field along the knot or link. Equivalently, a framing refers to a choice of longitude on the torus bounding each component of the link.
Enumerator |
---|
Seifert | Indicates the Seifert framing, which is defined algebraically and is independent of the knot/link projection.
There are several ways in which the Seifert framing can be defined. One simple definition that works for both classical and virtual links is this: for each component of the link, the Seifert framing chooses the unique longitude for the corresponding knot that has linking number zero with the knot itself.
Some alternative definitions for classical links:
- For each component of the link, draw a Seifert surface (i.e., an orientable surface embedded in the 3-sphere that is bounded by the corresponding knot). The Seifert framing is the vector field that points into the corresponding surface.
- For each component of the link, the Seifert framing chooses the unique longitude for the corresponding knot that is trivial in the homology of the knot complement.
|
Blackboard | Indicates the blackboard framing, which is specific to the knot/link projection.
For the blackboard framing, the normal vector field stays within the projection surface. Equivalently, the blackboard framing chooses longitudes whose projections do not intersect the original link diagram.
|
◆ GraphConstraint
Represents different classes of graph embeddings that one might want to generate.
Specifically, this enumeration type is used with the routine ModelLinkGraph::generateAllEmbeddings().
These values can be combined using the bitwise OR operator, resulting in an object of type Flags<GraphConstraint>
. If a graph generation function takes an argument of type Flags<GraphConstraint>
, then it will only generate those graphs that satisfy all of the constraints that have been ORed together. For such an argument, you can pass a single GraphConstraint constant, or a bitwise combination of such constants (flag1 | flag2)
, or empty braces {}
to indicate no flags at all (which is equivalent to passing GraphConstraint::All
).
Enumerator |
---|
All | Indicates that all graph embeddings should be generated.
|
NoTwists | Indicates that only graph embeddings without twists should be generated.
By a twist, we mean that the embedding has some node with two adjacent arcs connected together. An embedding that fails this constraint must always model knot or links with twists that can be undone using type I Reidemeister moves.
|
SingleTraversal | Indicates that only graph embeddings with a single traversal should be generated.
That is, for every embedding e that is generated, e.countTraversals() should be precisely 1.
An embedding that satisfies this constraint must always model knots (classical or virtual). An embedding that fails this constraint must either be empty, or must always model multiple-component links.
|
◆ operator<<() [1/2]
std::ostream & regina::operator<< |
( |
std::ostream & | out, |
|
|
const ModelLinkGraphArc & | a ) |
|
inline |
Writes a depiction of the given arc reference to the given output stream.
- Parameters
-
out | the output stream to which to write. |
a | the arc reference to write. |
- Returns
- a reference to the given output stream.
◆ operator<<() [2/2]
std::ostream & regina::operator<< |
( |
std::ostream & | out, |
|
|
const StrandRef & | s ) |
|
inline |
Writes a depiction of the given strand reference to the given output stream.
The reference will be written in the form ^n
or _n
, denoting the upper or lower strand at crossing n respectively. For example, the upper strand of crossing 7 will be written as ^7
.
- Parameters
-
out | the output stream to which to write. |
s | the reference to write. |
- Returns
- a reference to the given output stream.
◆ operator|()
Returns the bitwise OR of the two given flags.
- Parameters
-
lhs | the first flag to combine. |
rhs | the second flag to combine. |
- Returns
- the combination of both flags.
◆ swap() [1/4]
void regina::swap |
( |
Link & | lhs, |
|
|
Link & | rhs ) |
|
inline |
Swaps the contents of the two given links.
This global routine simply calls Link::swap(); it is provided so that Link meets the C++ Swappable requirements.
See Link::swap() for more details.
- Note
- This swap function is not marked
noexcept
, since it fires change events on both links which may in turn call arbitrary code via any registered packet listeners.
- Parameters
-
lhs | the link whose contents should be swapped with rhs. |
rhs | the link whose contents should be swapped with lhs. |
◆ swap() [2/4]
Swaps the contents of the two given graphs.
This global routine simply calls ModelLinkGraph::swap(); it is provided so that ModelLinkGraph meets the C++ Swappable requirements.
See ModelLinkGraph::swap() for more details.
- Parameters
-
lhs | the graph whose contents should be swapped with rhs. |
rhs | the graph whose contents should be swapped with lhs. |
◆ swap() [3/4]
Swaps the contents of the two given spatial links.
This global routine simply calls SpatialLink::swap(); it is provided so that SpatialLink meets the C++ Swappable requirements.
See SpatialLink::swap() for more details.
- Note
- This swap function is not marked
noexcept
, since it fires change events on both links which may in turn call arbitrary code via any registered packet listeners.
- Parameters
-
lhs | the spatial link whose contents should be swapped with rhs. |
rhs | the spatial link whose contents should be swapped with lhs. |
◆ swap() [4/4]
Swaps the contents of the two given tangles.
This global routine simply calls Tangle::swap(); it is provided so that Tangle meets the C++ Swappable requirements.
See Tangle::swap() for more details.
- Parameters
-
lhs | the tangle whose contents should be swapped with rhs. |
rhs | the tangle whose contents should be swapped with lhs. |