surfaces

5reg

surfaces

A normal surface list packet

Content Model
    surfaces ::= (&xml-surface;*,
                  &xml-tag;*,
                  &packetsyn1;
                  &packetsyn2;
                  &packetsyn3;
                  &packetsyn4;
                  &packetsyn5;*)
Attributes
Name | Type
`algorithm` | `NUMBER` (required)
`coords` | `NUMBER` (required)
`tri` | `CDATA` (required)
`type` | `NUMBER` (required)
&packetattrlist2col;

&eltaddedver;7.0

## Description

This represents a normal surface list packet, one of the many types of packet that together form the packet tree that a user sees when they open a ®ina; data file.

A normal surface list stores a list of normal surfaces in a particular 3-manifold triangulation. This list will often contain the vertex surfaces whose convex span is the set of all normal surfaces in the triangulation that satisfy certain constraints, though other lists (such as fundamental surfaces, or other customised lists) can be stored also.

Since ®ina; 7.0, a normal surface 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 &xml-anon;).

The individual normal surfaces in this list are contained in the child &xml-surface; elements. Since ®ina; 7.0, the parameters of the normal surface enumeration that created this list are stored in the attributes; there is no longer a child &xml-params; element.

&packetchilddesc;

### Parents

&packetparents;

### Children

The following elements occur in `surfaces`, and are specific to the normal surface list packet type:

- &xml-surface;

. &packetchildren;

## Attributes

The following attributes are specific to normal surface lists:

`algorithm`

- Specifies the algorithm that was used to enumerate these normal surfaces.

  This must be an integer, formed as a bitwise OR combination of constants from the `NormalAlg` enumeration in ®ina;'s calculation engine.

  An example of such an integer might be 17, which combines the constants `NormalAlg::VertexViaReduced` (1) and `NormalAlg::VertexTree` (16), indicating that the enumeration used the tree traversal method and did the bulk of its work in a smaller coordinate system.

`coords`

- Specifies which coordinate system was used in the normal surface enumeration.

  This must be a non-negative integer that matches one of the constants from the `NormalCoords` enumeration in ®ina;'s calculation engine.

  An example of such an integer might be 102, which is the constant `NormalCoords::QuadOct` that represents standard coordinates for octagonal almost normal surfaces.

`tri`

- The ID of the triangulation in which these normal surfaces live. 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.

`type`

- Specifies exactly which normal surfaces this list contains. In particular, this flag indicates whether the list contains all vertex surfaces, all fundamental surfaces, or some other customised list. It also indicates whether the list is restricted to properly embedded surfaces.

  This must be an integer, formed as a bitwise OR combination of constants from the `NormalList` enumeration in ®ina;'s calculation engine.

  An example of such an integer might be 5, which combines the constants `NormalList::EmbeddedOnly` (1) and `NormalList::Vertex` (4).

&packetattrdesc;