# struct

## Name

struct — A single angle structure

## Synopsis

Content Model

    struct ::= (#PCDATA, flags?)

Attributes
Name | Type
`len` | NUMBER (required)

## Description

A `struct` element stores a single angle structure on a 3-manifold triangulation.

An angle structure on a `T`-tetrahedron triangulation is represented by a vector of 3`T`+1 integers. This vector is stored as the character data of this XML element as follows.

Since an angle structure vector will generally contain many zeroes, only the non-zero elements are listed. The character data should thus consist of a whitespace-separated sequence of integer pairs. Each integer pair represents a non-zero coordinate in the vector; the first element of the pair identifies which coordinate is being described (coordinates are numbered 0, 1, 2, ...) and the second element of the pair is the actual value at this coordinate.

There are 3`T` actual angles stored in an angle structure; these are `0:01/23`, `0:02/13`, `0:03/12`, `1:01/23`, `1:02/13`, `1:03/12`, `2:01/23`, etc, where ``t`:`ab`/`cd`` represents the angle assigned to the edge in tetrahedron `t` that joins tetrahedron vertices `a` and `b`, as well as the (opposite) edge that joins tetrahedron vertices `c` and `d` (`a`, `b`, `c` and `d` will always be 0, 1, 2 and 3 in some order).

To determine the `k`th of these angles, take the `k`th integer in the angle structure vector, divide by the final element of the vector and multiply by π.

### Flags

The child `flags` element is deprecated, and should not be used. As of Regina 4.93, the `flags` element will not be written, and will be ignored when reading older data files.

In older versions of Regina, the `flags` element was used to store properties of the angle structure. The flags were a bitwise combination of the following values:

Value | Meaning
1 | The angle structure is strict (all angles are strictly between 0 and π). This flag is only meaningful if the angle structure type has been calculated; see below.
2 | The angle structure is taut (all angles are either 0 or π). This flag is only meaningful if the angle structure type has been calculated; see below.
4 | The angle structure type (strict/taut) has been calculated.

### Parents

The following elements contain `struct`: `packet` (angle structure list).

### Children

The following elements occur in `struct`: `flags`.

## Attributes

`len`

  The length of the angle structure vector. This will always be 3`T`+1, where `T` is the number of tetrahedra in the underlying 3-manifold triangulation.

## Example

The following XML snippet represents an angle structure on a 2-tetrahedron triangulation. The angle structure vector is (0, 0, 2, 1, 1, 0, 2). The corresponding six angles are (0, 0, π, π/2, π/2, 0).

    <struct len="7"> 2 2 3 1 4 1 6 2 </struct>