1
<chapter id="surfaces">
2
<title>Normal Surfaces</title>
7
<imagedata fileref="reginawhite.png" align="right"/>
10
The primary motivation for originally writing ®ina; was to create a
11
tool for calculating vertex normal surfaces within a triangulation.
14
A <firstterm>normal surface</firstterm> inside a 3-manifold
15
triangulation is a surface composed entirely of normal discs. A
16
<firstterm>normal disc</firstterm> is a properly embedded disc within
17
a single tetrahedron, and must be either a
18
triangle (whose boundary runs across three of the four tetrahedron faces)
19
or a quadrilateral (whose boundary runs across all four of the tetrahedron
23
The ®ina; logo shown on this page illustrates all four possible
24
triangle types and one of the three possible
25
quadrilateral types within a tetrahedron.
28
®ina; will also calculate <firstterm>almost normal
29
surfaces</firstterm>, which have the same restrictions as normal
30
surfaces except that they must contain precisely one additional
32
The boundary of an octagonal disc runs across each tetrahedron face twice,
33
and there are three possible types of octagonal disc.
36
More general definitions of almost normal surfaces allow for an annular
37
piece instead of an octagonal disc. ®ina; works with the more
38
restrictive octagon-only definition as described by Thompson
39
<xref linkend="bib-thinposition"/> (which is much simpler
40
to deal with computationally).
43
Normal surfaces are represented as integer vectors indicating how many
44
discs of each type in each tetrahedron are used to make up the surface.
47
For a summary of enough normal surface theory to use this
48
program, see a reference such as
49
<xref linkend="bib-burton-convert"/> or <xref linkend="bib-hass-knotnp"/>.
54
A normal surface list in the packet tree must be a
55
child packet of the triangulation in which the surfaces are contained.
58
Furthermore, since each normal surface is stored as a vector relative
59
to the triangulation's tetrahedra, a triangulation cannot be modified
60
once it has a normal surface list as a child. If you wish to edit
61
such a triangulation, try cloning the packet (excluding descendants so
62
the normal surfaces are not cloned as well) and edit the clone instead.
65
Triangulations containing normal surface lists are marked with a small
66
padlock in the packet tree to remind you that they cannot be edited.
70
<sect1 id="surfaces-creation">
71
<title>Creation</title>
74
A new list of normal surfaces can be created through the
76
<guimenu>Packet Tree</guimenu>
77
<guimenuitem>New Normal Surface List</guimenuitem>
79
menu item (or the corresponding toolbar button).
82
Only <firstterm>vertex normal surfaces</firstterm> will be placed in
83
the new list; all other normal surfaces can be formed as convex
84
combinations of these vertex surfaces.
88
For <emphasis>almost</emphasis> normal surfaces, older versions of
89
®ina; used to ignore any vertex surfaces with
90
more than one octagonal disc.
91
As of ®ina; 4.6, this behaviour has changed — now
92
®ina; will keep surfaces with more than one octagon, though it
93
still insists on at most one octagon <emphasis>type</emphasis>.
94
This is important if you wish to use vertex almost normal
95
surfaces as a basis for generating <emphasis>all</emphasis>
96
almost normal surfaces, as suggested above.
99
If you have a data file from ®ina; 4.5.1 or earlier,
100
then any vertex surfaces with more than one octagon will have already been
101
removed. The only way to get them back is to re-run the almost normal
102
surface enumeration using ®ina; 4.6 or later.
106
Before the normal surface list is created, you will be asked for some
107
additional details as follows.
110
<glossterm>Create beneath</glossterm>
113
Here you must select the triangulation that will contain the new
114
normal surfaces (this must be a triangulation already in
119
<glossentry id="surfaces-selectcoords">
120
<glossterm>Coordinate system</glossterm>
123
Here you must select the coordinate system in which the vertex
124
normal surfaces will be enumerated.
127
Whether or not <emphasis>almost</emphasis>
128
normal surfaces are enumerated (in addition to
129
just normal surfaces) will depend upon this choice of coordinate system.
130
Currently almost normal surfaces are only enumerated when using
131
standard almost normal coordinates or quadrilateral-octagon coordinates.
134
Note that this coordinate system refers only to the initial
135
enumeration; you will
136
be able to view these normal surfaces in a variety of different
137
coordinate systems later on.
140
Note also that this choice of coordinate system will affect which
141
surfaces are produced. For instance, quad normal
142
coordinates produce spun normal surfaces which standard normal
143
coordinates do not, and standard normal coordinates produce vertex
144
links which quad normal coordinates do not.
147
The available coordinate systems are described in detail
148
in the documentation for the
149
<link linkend="surfaces-defstandard">coordinates tab</link>.
150
If there is a particular coordinate system that you regularly
151
use, the default offering can be changed in the
152
<link linkend="options-surfaces">normal surface preferences</link>.
156
<glossentry id="surfaces-embeddedonly">
157
<glossterm>Embedded surfaces only</glossterm>
160
Here you must specify whether the search should be restricted to
161
embedded surfaces only (this is the default and is all that is
162
considered in most of the published theory).
165
Be aware that a search that is broadened to <emphasis>all</emphasis>
166
surfaces (embedded, immersed and singular) could well take much
167
longer to run than the corresponding embedded-only
168
search. Enumeration of immersed and singular surfaces is only
169
supported for normal surfaces, not almost normal surfaces.
177
<sect1 id="surfaces-analysis">
178
<title>Analysis</title>
181
Several properties of a normal surface list and its individual surfaces
182
are available; most of these properties can be viewed by clicking on the
183
different tabs in the normal surface list viewer.
186
<sect2 id="surfaces-viewlistprops">
187
<title>Properties of the List</title>
190
Above all of the tabs in the surface list viewer, a header is displayed
191
with some basic properties of the normal surface list. These include:
194
a count of the total number of vertex normal surfaces contained in
198
a reminder of how the surface list was
199
originally created, including the coordinate system used and
200
whether or not the search was restricted
201
to embedded surfaces only. Note that this does
202
not actually look at the surfaces in the list
203
– an unrestricted search might have only produced embedded
204
surfaces, but this reminder will still say
205
<literal>embedded/immersed/singular</literal>.
210
If the header says that the list was created using
211
<emphasis>legacy</emphasis> almost normal coordinates, this means
212
the list was created using ®ina; 4.5.1 or earlier, and that
213
all surfaces with more than one octagon were deleted.
214
See the notes below on
215
<link linkend="surfaces-deflegacyan">coordinates systems</link>
220
<sect2 id="surfaces-summary">
221
<title>Summary</title>
224
The first tab contains a summary of what kinds of surfaces were found.
225
This summary breaks the total count down into several
226
sub-counts, as illustrated in the screenshot below.
227
These counts are first organised by boundary, where we distinguish
228
between closed surfaces, bounded surfaces (which have real boundary)
229
and non-compact surfaces (which have infinitely many normal or
230
almost normal discs). Within each section, the counts are then
231
broken down further by Euler characteristic, orientability,
232
and one-or-two-sidedness.
233
For further information on these properties, see the documentation on
234
<link linkend="surfaces-viewsurfaceprops">individual
235
surface properties</link>.
239
<screeninfo>The summary tab for a normal surface list</screeninfo>
242
<imagedata fileref="surfaces-summary.png"/>
245
<phrase>The summary tab for a normal surface list</phrase>
247
<caption><para>The summary tab for a normal surface list</para></caption>
253
<sect2 id="surfaces-viewsurfacecoords">
254
<title>Individual Surface Coordinates</title>
257
The <guilabel>Surface Coordinates</guilabel> tab in the surface list
258
viewer contains a table of all the vertex surfaces that form
259
this list. Each surface is presented as a vector in some underlying
260
coordinate system (this coordinate system is displayed immediately
264
Each row of this table represents a single normal surface.
265
The left few columns of the table contain various surface
266
properties (see the <link
267
linkend="surfaces-viewsurfaceprops">individual surface properties</link>
268
section below). The remaining columns contain the actual surface
269
coordinates. This is illustrated in the screenshot below.
273
<screeninfo>The coordinates tab for a normal surface list</screeninfo>
276
<imagedata fileref="surfaces-coords.png"/>
279
<phrase>The coordinates tab for a normal surface list</phrase>
281
<caption><para>The coordinates tab for a normal surface
282
list</para></caption>
287
To change the coordinate system in which you are viewing the
288
surfaces, simply select a new coordinate system from the drop-down
289
box above the table. Note that this will <emphasis>not</emphasis>
290
regenerate the vertex normal surfaces in the new coordinate system;
291
it will simply redisplay the surfaces that you already have in the new
292
system. So, for instance, if a spun surface is created during a quad
293
space search and the surfaces are viewed in standard (tri-quad)
294
coordinates, this spun surface will be redisplayed in the table with
295
triangular coordinates of infinity. Furthermore, vertex links (which
296
are not found during a quad space search) will not suddenly
300
The meanings of the individual coordinate columns in the table
301
depend upon the underlying coordinate system as follows.
303
<glossentry id="surfaces-defstandard">
304
<glossterm>Standard normal (tri-quad) coordinates</glossterm>
307
Standard normal coordinates simply count the number of triangular
308
and quadrilateral discs of each type in each tetrahedron.
311
Triangular coordinates are labelled
312
<literal>0:0</literal>, <literal>0:1</literal>,
313
<literal>0:2</literal>, <literal>0:3</literal>,
314
<literal>1:0</literal>, <literal>1:1</literal>,
315
<literal>1:2</literal>, <literal>1:3</literal>,
316
<literal>2:0</literal>, etc. Coordinate
317
<literal><replaceable>t</replaceable>:<replaceable>v</replaceable></literal>
318
represents the number of triangular discs in tetrahedron
319
<replaceable>t</replaceable> that separate vertex
320
<replaceable>v</replaceable> of that tetrahedron from the other
321
three tetrahedron vertices
322
(<replaceable>v</replaceable> will always be 0, 1, 2 or 3).
325
Quadrilateral coordinates are labelled
326
<literal>0:01/23</literal>, <literal>0:02/13</literal>,
327
<literal>0:03/12</literal>, <literal>1:01/23</literal>,
328
<literal>1:02/13</literal>, <literal>1:03/12</literal>,
329
<literal>2:01/23</literal>, etc. Coordinate
330
<literal><replaceable>t</replaceable>:<replaceable>ab</replaceable>/<replaceable>cd</replaceable></literal>
331
represents the number of quadrilateral discs in tetrahedron
332
<replaceable>t</replaceable> that separate vertices
333
<replaceable>a</replaceable> and <replaceable>b</replaceable>
334
of that tetrahedron from vertices
335
<replaceable>c</replaceable> and <replaceable>d</replaceable>
337
(<replaceable>a</replaceable>, <replaceable>b</replaceable>,
338
<replaceable>c</replaceable> and <replaceable>d</replaceable>
339
will always be 0, 1, 2 and 3 in some order).
343
<glossentry id="surfaces-defquad">
344
<glossterm>Quad normal coordinates</glossterm>
347
Quad normal coordinates are identical to standard normal
348
(tri-quad) coordinates except that only quadrilateral discs are
350
See Tollefson <xref linkend="bib-quadspace"/> for details.
354
<glossentry id="surfaces-defstandardan">
355
<glossterm>Standard almost normal (tri-quad-oct) coordinates</glossterm>
358
Standard almost normal coordinates are identical to standard
359
normal coordinates except that octagonal discs are also
363
Octagonal discs are labelled similarly to quadrilateral discs
364
(each octagonal disc also separates some two vertices of the
365
corresponding tetrahedron from the other two). To make it clear
366
which coordinates are which, each triangle label begins with a
367
<literal>T</literal>, each quadrilateral label begins with
368
a <literal>Q</literal> and each octagon label begins
369
with a <literal>K</literal>.
372
Although an almost normal surface is defined to have precisely
373
one octagonal disc, surfaces here in standard almost normal coordinates
374
are allowed to have no octagons at all, or several octagons
375
(though at most one octagon <emphasis>type</emphasis> can be used).
376
This becomes important if you wish to use vertex almost normal
377
surfaces as a basis for generating <emphasis>all</emphasis>
378
almost normal surfaces.
381
In contrast, see <link linkend="surfaces-deflegacyan">legacy
382
almost normal coordinates</link> below, where surfaces with more
383
than one octagon are explicitly removed.
387
<glossentry id="surfaces-defquadoct">
388
<glossterm>Quad-oct almost normal coordinates</glossterm>
391
Quad-oct almost normal coordinates are identical to standard
392
almost normal (tri-quad-oct) coordinates, except that only
393
quadrilateral and octagonal discs are considered.
394
See <xref linkend="bib-burton-quadoct"/> for details.
397
Like standard almost normal coordinates, surfaces with no
398
octagons or many octagons (but all of the same type) are allowed.
402
<glossentry id="surfaces-deflegacyan">
403
<glossterm>Legacy almost normal (pruned tri-quad-oct)
404
coordinates</glossterm>
407
These are identical to standard almost normal (tri-quad-oct)
408
coordinates, except that surfaces with more than one octagon
409
are removed entirely from the list.
412
This was in fact the behaviour in ®ina; versions 4.5.1 and
413
earlier. This behaviour was changed in ®ina; 4.6 because
414
it is important to keep surfaces with multiple octagons if you wish
415
to generate new surfaces as convex combinations of old surfaces.
418
Unfortunately, if a surface list was created in ®ina; 4.5.1
419
or earlier then such surfaces will already have been removed, and
420
there is no way to get them back (except to run a new enumeration of
421
almost normal surfaces). Such lists will always be displayed
422
with the label <emphasis>legacy almost normal coordinates</emphasis>
423
so it is clear what has happened.
426
You cannot create a <emphasis>new</emphasis> normal
427
surface list in legacy coordinates.
431
<glossentry id="surfaces-defedgewt">
432
<glossterm>Edge weight coordinates</glossterm>
435
The coordinates are labelled <literal>0</literal>,
436
<literal>1</literal>, <literal>2</literal>, etc. Coordinate
437
<replaceable>e</replaceable> represents the number of times the
438
surface crosses edge <replaceable>e</replaceable> of the
442
Edge numbers and the tetrahedron edges/vertices to which they
443
correspond can be seen in the skeleton section of the
444
<link linkend="tri-vertexedgeface">triangulation viewer</link>.
447
Edge weight coordinates are simply offered as a different way of
448
viewing an existing list of normal surfaces. You cannot
449
<emphasis>enumerate</emphasis> a new list of surfaces
450
in edge weight coordinates.
454
<glossentry id="surfaces-deffacearc">
455
<glossterm>Face arc coordinates</glossterm>
458
The coordinates are labelled
459
<literal>0:0</literal>, <literal>0:1</literal>, <literal>0:2</literal>,
460
<literal>1:0</literal>, <literal>1:1</literal>, <literal>1:2</literal>,
461
<literal>2:0</literal>, etc. Coordinate
462
<literal><replaceable>f</replaceable>:<replaceable>v</replaceable></literal>
463
represents the number of times the surface slices through face
464
<replaceable>f</replaceable> of the triangulation in an arc
465
that truncates vertex <replaceable>v</replaceable> of that face
466
(<replaceable>v</replaceable> will always be 0, 1 or 2).
469
Face numbers and the tetrahedron faces/vertices to which they
470
correspond can be seen in the skeleton section of the
471
<link linkend="tri-vertexedgeface">triangulation viewer</link>.
474
Like edge weight coordinates, face arc coordinates are offered as a
475
different way of viewing an existing normal surface list. You cannot
476
<emphasis>enumerate</emphasis> a new list of surfaces
477
in face arc coordinates.
485
<sect2 id="surfaces-viewsurfaceprops">
486
<title>Individual Surface Properties</title>
490
<link linkend="surfaces-viewsurfacecoords">surface coordinates</link>
491
section above, the <guilabel>Surface Coordinates</guilabel> tab
492
presents a table of all of the normal surfaces in the list.
495
In the very leftmost column of this table, the individual surfaces
496
are numbered from 0 to <replaceable>S</replaceable>-1, where
497
<replaceable>S</replaceable> is the total number of surfaces in the list.
500
The next few columns describe several different properties of the
501
surfaces, as described below. Note that not all of these properties
502
appear in all situations (for instance, ®ina; does not yet calculate
503
Euler characteristic for non-compact surfaces, and the orientability
504
column will not be shown for lists that might include
505
immersed or singular surfaces).
509
<glossentry id="surfaces-propname">
510
<glossterm>Name</glossterm>
513
Individual surfaces can be optionally named by the user
514
to help keep track of which surface is which.
515
Surface names are not used by ®ina;, and do not need to be unique.
518
To rename a surface, just click on the corresponding table cell
519
and type the new name directly into that table cell.
523
<glossentry id="surfaces-propeuler">
524
<glossterm>Euler</glossterm>
526
This column shows the Euler characteristic of each surface.
529
<glossentry id="surfaces-proporient">
530
<glossterm>Orient</glossterm>
532
This column shows whether or not each surface is orientable.
535
<glossentry id="surfaces-propsides">
536
<glossterm>Sides</glossterm>
538
This column shows whether each surface is one-sided or two-sided.
541
<glossentry id="surfaces-boundary">
542
<glossterm>Bdry</glossterm>
544
This column describes whether each surface is bounded.
545
It will take one of the following values:
548
<glossterm>Closed</glossterm>
550
Indicates that the surface is compact (contains finitely many discs)
551
and closed (does not have any boundary).
555
<glossterm>Real Bdry</glossterm>
557
Indicates that the surface is compact (contains finitely many discs)
558
and bounded (meets the boundary of the enclosing triangulation).
562
<glossterm>Infinite</glossterm>
564
Indicates that the surface is non-compact, i.e., contains infinitely
565
many normal or almost normal discs. Examples of such surfaces are
566
<firstterm>spun normal surfaces</firstterm>
567
<xref linkend="bib-tillus-spun"/>,
568
which can be found in quad space for some ideal triangulations.
574
<glossentry id="surfaces-proplink">
575
<glossterm>Link</glossterm>
577
If a normal surface or a rational multiple of that surface
578
is recognised as being a link of any interesting subcomplexes
579
within the triangulation, these subcomplexes will be listed here.
580
The following links are currently recognised:
583
<glossterm>Vertex</glossterm>
585
Indicates that the surface is a vertex link.
586
The corresponding vertex number in the triangulation will be
590
Vertex numbers and the tetrahedron vertices to which they
591
correspond can be seen in the skeleton section of the
592
<link linkend="tri-vertexedgeface">triangulation viewer</link>.
596
<glossterm>Thin Edge</glossterm>
598
Indicates that the surface is a thin edge link.
599
The corresponding edge number(s) in the triangulation will be
600
listed. Note that a surface might be both the link of one thin
601
edge and also (independently) the link of another thin edge.
604
Edge numbers and the tetrahedron edges/vertices to which they
605
correspond can be seen in the skeleton section of the
606
<link linkend="tri-vertexedgeface">triangulation viewer</link>.
613
<glossterm>Type</glossterm>
615
If a normal surface is recognised as playing a particular role
616
within the triangulation, that role will be listed in this column.
617
At most one such role will be displayed for any particular surface.
618
The following roles are currently recognised:
620
<glossentry id="surfaces-propsplitting">
621
<glossterm>Splitting</glossterm>
623
Indicates that the surface is a splitting surface (contains
624
precisely one quadrilateral per tetrahedron and no other normal
625
or almost normal discs).
628
<glossentry id="surfaces-propcentral">
629
<glossterm>Central</glossterm>
631
Indicates that although it is not a splitting surface,
632
the surface is still a central surface (contains at most one
633
normal or almost normal disc per tetrahedron). A number will
634
be displayed indicating the number of tetrahedra
635
that this surface meets (i.e., the number of normal or almost
636
normal discs in the surface).
642
<glossentry id="surfaces-propoctagon">
643
<glossterm>Octagon</glossterm>
646
This column only appears when dealing with almost normal surfaces.
647
Its purpose is to indicate how many octagonal discs each surface
648
contains, and where they are.
651
For a given surface, if the cell in this column is empty then
652
the surface does not contain any octagonal discs at all (i.e., it is a
653
regular <emphasis>normal</emphasis> surface).
654
Otherwise, it will contain a single coordinate label
655
and the corresponding number of octagons,
656
such as <literal>K2: 03/12 (3 octs)</literal>.
659
Note that there can only ever be one coordinate
660
<emphasis>position</emphasis> in any given surface
661
containing octagonal discs (this is a constraint forced upon the
662
enumeration procedure). However, as of ®ina; 4.6,
663
this coordinate position may contain more than one octagon.
664
See the discussion on <link linkend="surfaces-deflegacyan">legacy
665
almost normal coordinates</link> for further details.
673
<sect2 id="surfaces-viewmatching">
674
<title>Original Matching Equations</title>
677
The <guilabel>Matching Equations</guilabel> tab in the surface list
678
viewer contains a table of the individual matching equations that
679
were used to form this list.
682
The matching equations are presented in the coordinate system that
683
was used to originally create this surface list (see the
684
<link linkend="surfaces-creation">surface list creation reference</link>).
685
This coordinate system is displayed above all of the tabs in the
689
Each row of this table represents an individual matching equation.
690
A matching equation involves setting a linear combination of surface
691
coordinates to zero; the coefficients of this linear combination are
692
shown in the individual table cells. A description of what the individual
693
surface coordinates mean can be found in the
694
<link linkend="surfaces-viewsurfacecoords">individual surface
695
coordinates</link> section above.
699
<sect2 id="surfaces-compat">
700
<title>Compatibility</title>
703
The <guilabel>Compatibility</guilabel> tab in the surface list
704
viewer shows which pairs of surfaces are compatible with each other,
705
both locally and globally. These concepts are defined as follows:
709
<glossentry id="surfaces-localcompat">
710
<glossterm>Locally compatible</glossterm>
713
Two surfaces are <emphasis>locally compatible</emphasis> if
714
they are able to avoid intersection in any given tetrahedron of
715
the triangulation (though not necessarily in all tetrahedra
719
In other words, two surfaces are locally compatible if, in each
720
tetrahedron, they <emphasis>together</emphasis> use at most
721
one quadrilateral or octagonal disc type.
725
<glossentry id="surfaces-globalcompat">
726
<glossterm>Globally compatible</glossterm>
729
Two surfaces are <emphasis>globally compatible</emphasis> if
730
they are able to avoid intersection in <emphasis>all</emphasis>
731
tetrahedra of the triangulation simultaneously.
734
In other words, two surfaces are globally compatible if they can
735
be made <emphasis>disjoint</emphasis> within the triangulation.
742
The <guilabel>Compatibility</guilabel> tab contains two matrices, one for
743
local compatibility and one for global compatibility. You can
744
switch between these two matrices by using the drop-down box labelled
745
<guilabel>Display matrix</guilabel>.
748
Each matrix has dimensions
749
<replaceable>S</replaceable>-by-<replaceable>S</replaceable>,
750
where <replaceable>S</replaceable> is the total number of surfaces
751
in the list. Rows and columns are both numbered from 0 to
752
<replaceable>S</replaceable>-1 inclusive, and the
753
(<replaceable>x</replaceable>,<replaceable>y</replaceable>) cell of
754
the matrix is filled if and only if surfaces
755
<replaceable>x</replaceable> and <replaceable>y</replaceable> are
756
compatible. Here we use same numbering scheme as in the first column of
757
the <link linkend="surfaces-viewsurfaceprops">coordinate viewer</link>.
761
<screeninfo>The global compatibility matrix for a normal
762
surface list</screeninfo>
765
<imagedata fileref="surfaces-compat.png"/>
768
<phrase>The global compatibility matrix for a
769
normal surface list</phrase>
771
<caption><para>The global compatibility matrix for a
772
normal surface list</para></caption>
777
Note that the global compatibility test comes with some constraints.
778
Specifically, it cannot be run with surfaces that are empty, disconnected
779
or non-compact (such as spun normal surfaces). For any such surfaces,
780
the corresponding rows and columns will be hashed out in the matrix
781
as illustrated below.
785
<screeninfo>Hashing out rows and columns for
786
spun normal surfaces</screeninfo>
789
<imagedata fileref="surfaces-compat-hash.png"/>
792
<phrase>Hashing out rows and columns for
793
spun normal surfaces</phrase>
795
<caption><para>Hashing out rows and columns for
796
spun normal surfaces</para></caption>
801
For very large lists of surfaces, the compatibility matrices will
802
not be generated automatically (since this could take a long time
803
and/or require a significant amount of memory). In this case, you
804
can still compute the matrices by pressing the
805
<guilabel>Calculate</guilabel> button at the top of the tab.
806
The default threshold for automatic calculation is 100 surfaces,
807
though you can change this in the
808
<link linkend="options-surfaces">normal surface preferences</link>.
813
<sect1 id="surfaces-crushandcut">
814
<title>Crushing and Cutting</title>
817
In certain situations normal surfaces can be used to
818
decompose the underlying triangulation into smaller and/or simpler
819
components. The available ways in which this can be done are as
823
<sect2 id="surfaces-crush">
824
<title>Crushing a Surface</title>
826
A normal surface can be crushed to a point in the underlying
827
triangulation by selecting the surface within the table
830
<guimenu>Normal Surfaces</guimenu>
831
<guimenuitem>Crush Surface</guimenuitem>
836
The original triangulation will not be changed; a new triangulation
837
in which the selected surface has been crushed
838
will appear as a child packet of this surface list.
841
Note that crushing a normal surface might change the topology of the
842
underlying 3-manifold (beyond the simple act of slicing along the
843
surface) and in some cases might introduce ideal vertices
844
or even invalid edges. For details see
845
<function><classname>NNormalSurface</classname>::crush()</function>
846
in the ®enginedocs;.
849
Why crush a surface if it can have such nasty side-effects?
850
The advantage is that, unlike the cutting operation described
851
below, crushing a surface can only ever <emphasis>reduce</emphasis>
852
the number of tetrahedra in a triangulation (the worst case is
853
where the surface only contains vertex links, whereupon the number
854
of tetrahedra will remain the same).
857
In general you should only crush a normal surface when there are
858
theoretical reasons to know that this is safe. Examples of safe
859
scenarios can be found in Jaco and Rubinstein's paper on
860
0-efficiency <xref linkend="bib-0-efficiency"/>.
863
<sect2 id="surfaces-cut">
864
<title>Cutting Along a Surface</title>
866
Instead of crushing a surface to a point, one might wish to simply
867
slice along the surface and subdivide the resulting polyhedra into
868
tetrahedra to produce a new triangulation.
871
This has the advantage over crushing in that it will never change
872
the topology of the underlying 3-manifold beyond the act of simply
873
slicing along the surface. It will also never introduce new ideal
874
vertices or invalid edges.
877
The disadvantage is that, after cutting along a surface,
878
the number of tetrahedra in the triangulation can potentially
879
skyrocket. This has severe implications if you wish to do anything
880
computationally intensive with the resulting triangulation(s).
883
To cut along a normal surface, select the surface within the table
886
<guimenu>Normal Surfaces</guimenu>
887
<guimenuitem>Cut Along Surface</guimenuitem>
890
As with crushing, the original triangulation will not be changed;
891
the resulting cut-open triangulation will be added to the packet
892
tree as a new child of this surface list.
895
When crushing or cutting along a two-sided surface, it is possible
896
that you will end up with a disconnected triangulation.
899
<guimenu>Triangulation</guimenu>
900
<guimenuitem>Extract Components</guimenuitem>
902
can be used to split this triangulation into its connected components.
904
<link linkend="tri-decomposition-component">component decomposition</link>
910
<sect1 id="surfaces-filtering">
911
<title>Filtering</title>
914
Sometimes you are faced with a very long list of surfaces from which
915
you wish to extract just the tori, or just the discs, or some other
916
subset of surfaces described by one or more simple constraints.
917
For tasks such as these, surface filters can be used.
920
A surface filter essentially represents some series of tests that can
921
be performed upon a surface. Tests can include a variety of easily
922
calculable properties such as orientability and Euler characteristic.
923
At its most basic level, a surface filter is a device that either
924
accepts or rejects each surface that is passed through it.
927
Each surface filter is stored as a separate packet in the packet tree.
928
Details of the types of filter that can be created are discussed
929
in the <link linkend="surfaces-filtering-creating">following
933
To restrict a normal surface list according to some filter, open the
934
surface list <link linkend="surfaces-viewsurfacecoords">coordinate
935
viewer</link> where the entire list of surfaces is displayed.
936
Above the table of coordinates is a drop-down box filled with the
937
available filters. If a filter is selected from this
938
box then the surface list is restricted to include only those
939
surfaces that the selected filter accepts. To remove the filter, select
940
the <guilabel>None</guilabel> option from this same drop-down box.
943
<sect2 id="surfaces-filtering-creating">
944
<title>Creating Filters</title>
947
Filters are created through the
949
<guimenu>Packet Tree</guimenu>
950
<guimenuitem>New Filter</guimenuitem>
952
menu item (or the corresponding toolbar button). The following types
953
of filter are available.
956
<sect3 id="surfaces-filterprop">
957
<title>Filter by Properties</title>
960
A property-based filter allows surfaces to be restricted according
961
to a variety of easily calculable properties.
964
To be accepted a surface must satisfy all of the restrictions listed
965
in the filter. For instance, if a filter restricts by
966
orientability (allow orientable surfaces only), by compactness
967
(allow compact surfaces only) and also
968
by Euler characteristic (allow Euler characteristic 1 only), then
969
the filter will accept normal discs and nothing else.
972
The properties by which surfaces can be restricted are as follows.
975
<term>Orientability</term>
977
This restriction can be used to only allow orientable surfaces
978
or only allow non-orientable surfaces.
982
<term>Compactness</term>
984
This restriction can be used to only allow compact surfaces
985
(i.e., surfaces with finitely many discs) or only allow
986
non-compact surfaces (e.g., spun normal surfaces).
990
<term>Boundary</term>
992
This restriction can be used to only allow surfaces with real
993
boundary edges or only allow surfaces with no real boundary edges.
994
Note that spun normal surfaces, though they are not closed, do
995
not have real boundary edges.
999
<term>Euler Characteristic</term>
1001
This restriction can be used to only allow surfaces whose Euler
1002
characteristic belongs to a given list.
1009
<sect3 id="surfaces-filtercomb">
1010
<title>Combination Filter</title>
1013
A combination filter is a high-level filter that combines some
1014
other group of filters using boolean <literal>AND</literal> or
1015
<literal>OR</literal>. The combination filter will combine all
1016
packet filters found directly beneath it in the packet tree.
1019
For instance, to create a filter that accepts either discs or tori,
1020
you can create a <link linkend="surfaces-filterprop">property
1021
filter</link> for discs and another property filter for tori.
1022
These are both placed within the packet tree directly beneath
1023
a boolean <literal>OR</literal> combination filter, as
1024
illustrated in the following screenshot.
1027
<screeninfo>A sample combination filter</screeninfo>
1030
<imagedata fileref="filtercombeg.png"/>
1033
<phrase>A sample combination filter</phrase>
1035
<caption><para>A sample combination filter</para></caption>
1041
<imagedata fileref="filtercombtree.png" align="right"/>
1043
</inlinemediaobject>
1044
Note that a combination filter will only combine its immediate children.
1045
Suppose for instance that a combination filter
1046
<replaceable>C</replaceable> has child filters
1047
<replaceable>P</replaceable> and <replaceable>Q</replaceable>,
1048
and that <replaceable>Q</replaceable> in turn has child filters
1049
<replaceable>X</replaceable> and <replaceable>Y</replaceable>,
1050
as illustrated in the diagram to the right.
1051
Then <replaceable>C</replaceable> forms a boolean combination of
1052
<replaceable>P</replaceable> and <replaceable>Q</replaceable> only.