2
<!-- Regina data file format documentation.
3
See ../regina.sgml for further details. -->
5
<refentry id="data-struct">
7
<refentrytitle>struct</refentrytitle>
8
<manvolnum>5reg</manvolnum>
12
<refname>struct</refname>
13
<refpurpose>A single angle structure</refpurpose>
17
<informaltable frame="all">
19
<colspec colname="c1"/>
20
<colspec colname="c2"/>
22
<row><entry namest="c1" nameend="c2">
23
<emphasis role="bold">Content Model</emphasis>
25
<row><entry namest="c1" nameend="c2">
27
struct ::= (#PCDATA, &xml-flags;?)</synopsis>
29
<row><entry namest="c1" nameend="c2">
30
<emphasis role="bold">Attributes</emphasis>
33
<entry><emphasis role="bold">Name</emphasis></entry>
34
<entry><emphasis role="bold">Type</emphasis></entry>
37
<entry><sgmltag>len</sgmltag></entry>
38
<entry><type>NUMBER</type> (required)</entry>
46
<title>Description</title>
48
A &xml-struct; element stores a single angle structure on a
49
3-manifold triangulation.
52
An angle structure on a <replaceable>T</replaceable>-tetrahedron
53
triangulation is represented by a vector of
54
3<replaceable>T</replaceable>+1 integers. This vector is stored as
55
the character data of this &xml; element as follows.
58
Since an angle structure vector will generally contain many zeroes,
59
only the non-zero elements are listed. The character data should
60
thus consist of a whitespace-separated sequence of integer pairs.
61
Each integer pair represents a non-zero coordinate in the vector; the
62
first element of the pair identifies which coordinate is being
63
described (coordinates are numbered 0, 1, 2, ...) and the second element
64
of the pair is the actual value at this coordinate.
67
There are 3<replaceable>T</replaceable> actual angles stored in an
68
angle structure; these are
69
<literal>0:01/23</literal>, <literal>0:02/13</literal>,
70
<literal>0:03/12</literal>, <literal>1:01/23</literal>,
71
<literal>1:02/13</literal>, <literal>1:03/12</literal>,
72
<literal>2:01/23</literal>, etc, where
73
<literal><replaceable>t</replaceable>:<replaceable>ab</replaceable>/<replaceable>cd</replaceable></literal>
74
represents the angle assigned to the edge in tetrahedron
75
<replaceable>t</replaceable> that joins tetrahedron vertices
76
<replaceable>a</replaceable> and <replaceable>b</replaceable>, as
77
well as the (opposite) edge that joins tetrahedron vertices
78
<replaceable>c</replaceable> and <replaceable>d</replaceable>
79
(<replaceable>a</replaceable>, <replaceable>b</replaceable>,
80
<replaceable>c</replaceable> and <replaceable>d</replaceable>
81
will always be 0, 1, 2 and 3 in some order).
84
To determine the <replaceable>k</replaceable>th of these angles, take
85
the <replaceable>k</replaceable>th integer in the angle structure
86
vector, divide by the final element of the vector and multiply by π.
92
The child &xml-flags; element can be used to store properties of the
93
angle structure. The flags should be a bitwise combination of the
96
<informaltable frame="all">
98
<colspec colname="c1" colwidth="1*"/>
99
<colspec colname="c2" colwidth="8*"/>
102
<entry><emphasis role="bold">Value</emphasis></entry>
103
<entry><emphasis role="bold">Meaning</emphasis></entry>
107
<entry>The angle structure is strict (all angles are strictly
108
between 0 and π). This flag is only meaningful if the angle
109
structure type has been calculated; see below.</entry>
113
<entry>The angle structure is taut (all angles are either 0 or
114
π). This flag is only meaningful if the angle structure type
115
has been calculated; see below.</entry>
119
<entry>The angle structure type (strict/taut) has been
128
<title>Parents</title>
130
The following elements contain <sgmltag>struct</sgmltag>:
131
<simplelist type="inline">
132
<member>&xml-packet-anglestructurelist;</member>
138
<title>Children</title>
140
The following elements occur in <sgmltag>struct</sgmltag>:
141
<simplelist type="inline">
142
<member>&xml-flags;</member>
149
<title>Attributes</title>
152
<term><sgmltag>len</sgmltag></term>
155
The length of the angle structure vector.
156
This will always be 3<replaceable>T</replaceable>+1, where
157
<replaceable>T</replaceable> is the number of tetrahedra in the
158
underlying 3-manifold triangulation.
166
<title>Example</title>
168
The following &xml; snippet represents an angle structure on a
169
2-tetrahedron triangulation. The angle structure vector is
170
(0, 0, 2, 1, 1, 0, 2). The corresponding six angles are
171
(0, 0, π, π/2, π/2, 0).
174
The flags indicate that the angle structure type has been calculated
175
but the angle structure was found to be neither strict nor taut.
178
<struct len="7"> 2 2 3 1 4 1 6 2 <flags value="4"/></struct>