Name

angles — An angle structure list packet

Synopsis

Content Model
angles ::= (struct*, spanstrict?, spantaut?,
            tag*,
            (container|textdata|script|attachment|
             tri|link|snappeadata|
             angles|surfaces|hypersurfaces|
             filtercomb|filterprop|filtertrivial|
             anon|anonref)*)
Attributes
NameType
algorithmNUMBER (required)
tautonlyCDATA (required)
triCDATA (required)
idCDATA
labelCDATA

Added in Regina 7.0

Description

This represents an angle structure list packet, one of the many types of packet that together form the packet tree that a user sees when they open a Regina data file.

An angle structure list stores a list of angle structures on a particular 3-manifold triangulation. Generally this list will contain the vertex structures whose convex span is the set of all angle structures on the triangulation, though other lists (such as all taut angle structures, or other customised lists) can be stored also.

Since Regina 7.0, an angle structure list no longer needs to be a child packet of its underlying triangulation. Instead, the triangulation is denoted by the tri attribute. This must be the ID of a 3-dimensional triangulation packet that appears before this list in the packet tree, with respect to a pre-order depth-first traversal (i.e., the triangulation must appear before this list in the XML data file). The triangulation may be an anonymous packet (see anon).

The individual angle structures in this list are contained in the child struct elements. Since Regina 7.0, the parameters of the angle structure enumeration that created this list are stored in the attributes; there is no longer a child angleparams element.

There are several child XML elements that are common to all packet types. The tag elements represent an arbitrary set of string “tags” that users can attach to a packet to help organise their data. The remaining child elements list all of Regina's packet types (container, textdata, etc.), and these represent the immediate children of this packet in the packet tree.

Parents

The following elements can contain any packet element (including this): angles, anon, anonref, attachment, container, filtercomb, filterprop, filtertrivial, hypersurfaces, link, regina, script, snappeadata, surfaces, textdata, tri. This list includes all packet types, as well as the top-level element regina.

Children

The following elements occur in angles, and are specific to the angle structure list packet type: spanstrict, spantaut, struct.

The following children can occur in all packet elements: angles, anon, anonref, attachment, container, filtercomb, filterprop, filtertrivial, hypersurfaces, link, script, snappeadata, surfaces, tag, textdata, tri. This list includes all packet types, as well as the tag element for tagging individual packets.

Attributes

The following attributes are specific to angle structure lists:

algorithm

Specifies the algorithm that was used to enumerate these angle structures.

This must be an integer, formed as a bitwise OR combination of constants from the AngleAlgFlags enumeration in Regina's calculation engine.

An example of such an integer might be 32, which represents the AngleAlgFlags constant AS_ALG_DD.

Regina versions 6.0.1 and earlier did not store this information in its data files at all. If it is not provided, it will be treated as AS_ALG_LEGACY.

tautonly

Either T if only taut structures are enumerated, or F if all vertex angle structures are enumerated.

Regina versions 4.6 and earlier did not store this information in its data files at all. If it not provided through either this attribute or a (deprecated) child angleparams element, it will be treated as F (since taut enumeration was not offered in those very old versions of Regina).

tri

The ID of the triangulation on which these angle structures lie. This must match the id attribute of a 3-dimensional triangulation that appears before this list in a pre-order depth-first traversal of the full packet tree.

The following attributes are common to all packet types:

id

A unique identifier for this packet. Packets are not required to have IDs, but when they are present they must be distinct (i.e., no packets in the same file may share the same ID). IDs do not need to be human-readable, must not contain leading or trailing whitespace, and must not be empty strings. Currently, IDs are built from base 64 hashes of the underlying C++ pointers.

The purpose of these packet IDs is to allow other packets to reference this packet (for instance, so that a script packet can store references to its variables).

IDs are not required to stay the same across subsequent loads and saves of the same file. In other words, if you load a file and save it again, the packet IDs are allowed to change.

label

The name given by the user to this particular packet within the overall packet tree.