Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 0 additions & 1 deletion doc/SimplicialSurfaces.xml
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,6 @@
<#Include SYSTEM "_Chapter_Generating.xml">
<#Include SYSTEM "_Chapter_Library.xml">
<#Include SYSTEM "_Chapter_Graphs.xml">
<#Include SYSTEM "_Chapter_ConstructingFamilies.xml">
<#Include SYSTEM "_Chapter_Embeddings.xml">
<#Include SYSTEM "_Chapter_AnimationJavaScript.xml">
<#Include SYSTEM "_Chapter_EdgeColouring.xml">
Expand Down
280 changes: 1 addition & 279 deletions gap/Library/library.gd
Original file line number Diff line number Diff line change
Expand Up @@ -402,282 +402,4 @@ DeclareOperation( "Dodecahedron", [] );
#! @InsertChunk Example_Icosahedron
#!
#! @Returns a simplicial surface
DeclareOperation( "Icosahedron", [] );



#! @Section Other pre-defined surfaces
#! @SectionLabel Library_Uncategorised
#!
#! This section contains all other pre-defined surfaces that are not
#! covered in one of the other sections.

#! @Description
#! Return a <E>one-face</E> as a simplicial surface. A one-face consists
#! of one triangular face.
#!
#! @Returns a simplicial surface
DeclareOperation( "OneFace", [] );

#! @Description
#! Return a <E>butterfly</E> as a simplicial surface. A butterfly consists
#! of two triangular faces that share an edge.
#!
#! <Alt Only="HTML">
#! &lt;img src="./images/_Wrapper_Image_Butterfly-1.svg"> &lt;/img>
#! </Alt>
#! <Alt Only = "LaTeX">
#! \begin{center}
#! \includegraphics{images/_Wrapper_Image_Butterfly.pdf}
#! \end{center}
#! </Alt>
#! <Alt Only = "Text">
#! Image omitted in terminal text
#! </Alt>
#!
#! @Returns a simplicial surface
DeclareOperation( "Butterfly", [] );


#! @Description
#! Return a <E>Janus-Head</E> as a simplicial surface. A Janus-Head consists
#! of two triangular faces that share three edges.
#!
#! @InsertChunk Example_JanusHead
#!
#! @Returns a simplicial surface
DeclareOperation( "JanusHead", [] );


#! <ManSection Label="SimplicialUmbrella">
#! <Oper Name="SimplicialUmbrella" Arg="nrFaces" Label="for IsPosInt"/>
#! <Filt Name="SimplicialGon" Arg="nrFaces" Type="operation"/>
#! <Returns><K>a simplicial surface</K></Returns>
#! <Description>
#! Return a simplicial surface consisting of one closed umbrella-path
#! with <A>nrFaces</A> triangles. The labels are assigned according
#! to the following illustration, in which <M>n</M> is <A>nrFaces</A>:
#! <Alt Only="HTML">
#! &lt;br>&lt;img src='./images/_Wrapper_library-1-1.svg'> &lt;/img> &lt;br>
#! </Alt>
#! <Alt Only = "LaTeX">
#! \begin{center}
#! \includegraphics{images/_Wrapper_library-1.pdf}
#! \end{center}
#! </Alt>
#! <Alt Only = "Text">
#! Image omitted in terminal text
#! </Alt>
#!
#! @ExampleSession
#! gap> umb4 := SimplicialUmbrella(4);
#! simplicial surface (5 vertices, 8 edges, and 4 faces)
#! gap> VerticesOfEdges(umb4);
#! [ [ 1, 5 ], [ 2, 5 ], [ 3, 5 ], [ 4, 5 ], [ 1, 2 ], [ 2, 3 ], [ 3, 4 ], [ 1, 4 ] ]
#! gap> EdgesOfFaces(umb4);
#! [ [ 1, 2, 5 ], [ 2, 3, 6 ], [ 3, 4, 7 ], [ 1, 4, 8 ] ]
#! gap> VerticesOfFaces(umb4);
#! [ [ 1, 2, 5 ], [ 2, 3, 5 ], [ 3, 4, 5 ], [ 1, 4, 5 ] ]
#! gap> umb2 := SimplicialUmbrella(2);
#! simplicial surface (3 vertices, 4 edges, and 2 faces)
#! gap> VerticesOfEdges(umb2);
#! [ [ 1, 3 ], [ 2, 3 ], [ 1, 2 ], [ 1, 2 ] ]
#! gap> EdgesOfFaces(umb2);
#! [ [ 1, 2, 3 ], [ 1, 2, 4 ] ]
#! @EndExampleSession
#! </Description>
#! </ManSection>
# here no AutoDoc documentation since synonyms can't be handled automatically
DeclareOperation("SimplicialUmbrella", [ IsPosInt ] );
DeclareSynonym("SimplicialGon", SimplicialUmbrella);

#! <ManSection Label="SimplicialDoubleUmbrella">
#! <Oper Name="SimplicialDoubleUmbrella" Arg="nrFaces" Label="for IsPosInt"/>
#! <Filt Name="SimplicialDoubleGon" Arg="nrFaces" Type="operation"/>
#! <Returns><K>a simplicial surface</K></Returns>
#! <Description>
#! Return a simplicial surface consisting of two closed umbrella-paths
#! with <A>nrFaces</A> triangles which are joined at their boundary.
#! The labels of one umbrella are assigned according to the illustration for <E>SimplicialUmbrella</E>,
#! the additional vertex is labelled with <A>nrFaces+2</A>, the incident edges to this vertex
#! are labelled from <A>2*nrFaces+1</A> to <A>4*nrFaces</A> and the incident faces are labelled from
#! <A>nrFaces+1</A> to <A>2*nrFaces</A>.
#! @ExampleSession
#! gap> doubleumb2:=SimplicialDoubleUmbrella(2);
#! simplicial surface (4 vertices, 6 edges, and 4 faces)
#! gap> VerticesOfEdges(doubleumb2);
#! [ [ 1, 3 ], [ 2, 3 ], [ 1, 2 ], [ 1, 2 ], [ 1, 4 ], [ 2, 4 ] ]
#! gap> EdgesOfFaces(doubleumb2);
#! [ [ 1, 2, 3 ], [ 1, 2, 4 ], [ 3, 5, 6 ], [ 4, 5, 6 ] ]
#! gap> doubleumb4:=SimplicialDoubleUmbrella(4);
#! simplicial surface (6 vertices, 12 edges, and 8 faces)
#! gap> IsIsomorphic(doubleumb4,Octahedron());
#! true
#! @EndExampleSession
#! </Description>
#! </ManSection>
# here no AutoDoc documentation since synonyms can't be handled automatically
DeclareOperation("SimplicialDoubleUmbrella", [ IsPosInt ] );
DeclareSynonym("SimplicialDoubleGon", SimplicialDoubleUmbrella);

#! @BeginGroup SimplicialOpenGeodesic
#! @Description
#! Return a simplicial surface consisting of one non-closed geodesic-path
#! with <A>nrFaces</A> triangles. The labels are assigned according
#! to the following illustration (for <M>n</M> odd),
#! in which <M>n</M> is <A>nrFaces</A>.
#! <Alt Only="HTML">
#! &lt;br>&lt;img src="./images/_Wrapper_Image_SimplicialOpenGeodesic-1.svg"> &lt;/img> &lt;br>
#! </Alt>
#! <Alt Only = "LaTeX">
#! \begin{center}
#! \includegraphics{images/_Wrapper_Image_SimplicialOpenGeodesic.pdf}
#! \end{center}
#! </Alt>
#! <Alt Only = "Text">
#! Image omitted in terminal text
#! </Alt>
#!
#! @ExampleSession
#! gap> geo4 := SimplicialOpenGeodesic(4);
#! simplicial surface (6 vertices, 9 edges, and 4 faces)
#! gap> VerticesOfEdges(geo4);
#! [ [ 1, 2 ], [ 1, 3 ], [ 2, 3 ], [ 2, 4 ], [ 3, 4 ], [ 3, 5 ], [ 4, 5 ],
#! [ 4, 6 ], [ 5, 6 ] ]
#! gap> EdgesOfFaces(geo4);
#! [ [ 1, 2, 3 ], [ 3, 4, 5 ], [ 5, 6, 7 ], [ 7, 8, 9 ] ]
#! gap> VerticesOfFaces(geo4);
#! [ [ 1, 2, 3 ], [ 2, 3, 4 ], [ 3, 4, 5 ], [ 4, 5, 6 ] ]
#! gap>
#! gap> geo5 := SimplicialStrip(5);
#! simplicial surface (7 vertices, 11 edges, and 5 faces)
#! gap> VerticesOfEdges(geo5);
#! [ [ 1, 2 ], [ 1, 3 ], [ 2, 3 ], [ 2, 4 ], [ 3, 4 ], [ 3, 5 ], [ 4, 5 ],
#! [ 4, 6 ], [ 5, 6 ], [ 5, 7 ], [ 6, 7 ] ]
#! gap> EdgesOfFaces(geo5);
#! [ [ 1, 2, 3 ], [ 3, 4, 5 ], [ 5, 6, 7 ], [ 7, 8, 9 ], [ 9, 10, 11 ] ]
#! @EndExampleSession
#!
#!
#! @Returns a simplicial surface
#! @Arguments nrFaces
DeclareOperation( "SimplicialOpenGeodesic", [ IsPosInt ] );
#! @Arguments nrFaces
DeclareOperation( "SimplicialStrip", [ IsPosInt ] );
#! @EndGroup

#! @BeginGroup SimplicialClosedGeodesic
#! @Description
#! Return a simplicial surface consisting of one closed geodesic-path
#! with <A>nrFaces</A> triangles (at least 3 faces are needed).
#! The labels are assigned according
#! to the following illustration (for <M>n</M> odd),
#! in which <M>n</M> is <A>nrFaces</A>.
#! <Alt Only="HTML">
#! &lt;br>&lt;img src="./images/_Wrapper_Image_SimplicialClosedGeodesic-1.svg"> &lt;/img> &lt;br>
#! </Alt>
#! <Alt Only = "LaTeX">
#! \begin{center}
#! \includegraphics{images/_Wrapper_Image_SimplicialClosedGeodesic.pdf}
#! \end{center}
#! </Alt>
#! <Alt Only = "Text">
#! Image omitted in terminal text
#! </Alt>
#!
#! @ExampleSession
#! gap> geo3 := SimplicialClosedGeodesic(3);
#! simplicial surface (3 vertices, 6 edges, and 3 faces)
#! gap> VerticesOfEdges(geo3);
#! [ [ 1, 2 ], [ 1, 3 ], [ 2, 3 ], [ 1, 2 ], [ 1, 3 ], [ 2, 3 ] ]
#! gap> EdgesOfFaces(geo3);
#! [ [ 1, 2, 3 ], [ 3, 4, 5 ], [ 1, 5, 6 ] ]
#! gap> VerticesOfFaces(geo3);
#! [ [ 1, 2, 3 ], [ 1, 2, 3 ], [ 1, 2, 3 ] ]
#! gap>
#! gap> geo6 := SimplicialGeodesic(6);
#! simplicial surface (6 vertices, 12 edges, and 6 faces)
#! gap> VerticesOfEdges(geo6);
#! [ [ 1, 2 ], [ 1, 3 ], [ 2, 3 ], [ 2, 4 ], [ 3, 4 ], [ 3, 5 ], [ 4, 5 ],
#! [ 4, 6 ], [ 5, 6 ], [ 1, 5 ], [ 1, 6 ], [ 2, 6 ] ]
#! gap> EdgesOfFaces(geo6);
#! [ [ 1, 2, 3 ], [ 3, 4, 5 ], [ 5, 6, 7 ], [ 7, 8, 9 ], [ 9, 10, 11 ], [ 1, 11, 12 ] ]
#! @EndExampleSession
#!
#!
#! @Returns a simplicial surface
#! @Arguments nrFaces
DeclareOperation( "SimplicialClosedGeodesic", [ IsPosInt ] );
#! @Arguments nrFaces
DeclareOperation( "SimplicialGeodesic", [ IsPosInt ] );
#! @EndGroup

#! @BeginGroup SimplexRingByIsomorphismType
#! @Description
#! This method constructs a simplex ring given its isomorphism type.
#! A simplicial surface is a simplex ring if it is connected and each face
#! has exactly one inner and two outer edges.
#! They can be described uniquely by their isomorphism type which is a list
#! <K>[n_1,...,n_k]</K>.
#! The simplex ring with isomorphism type <K>[n_1,...,n_k]</K> has <K>n_1+...+n_k</K> faces
#! and is constructed based on a closed geodesic with <K>k</K> faces where the i-th faces is subdivided in <K>n_i</K>
#! faces. How the subdivision is defined can be seen in the picture below.
#! The incidences between vertices and faces can also be observed there.
#!
#! As an example consider the simplex ring with isomorphism type <K>[1,2,3]</K>, where the left and right edge have to be identified:
#! <Alt Only="HTML">
#! &lt;br>&lt;img src="./images/_Wrapper_Image_SimplexString-1.svg"> &lt;/img> &lt;br>
#! </Alt>
#! <Alt Only = "LaTeX">
#! \begin{center}
#! \includegraphics{images/_Wrapper_Image_SimplexString.pdf}
#! \end{center}
#! </Alt>
#! <Alt Only = "Text">
#! Image omitted in terminal text
#! </Alt>
#! @BeginExampleSession
#! gap> ring:=SimplexRingByIsomorphismType([1,2,3]);
#! simplicial surface (6 vertices, 12 edges, and 6 faces)
#! gap> UmbrellaDescriptorOfSurface(ring);
#! [ [ 2, 1, 6 ], [ 1, 2, 3, 4 ], [ 2, 3 ], [ 1, 6, 5, 4, 3 ], [ 4, 5 ], [ 5, 6 ] ]
#! gap> IsClosedSurface(ring);
#! false
#! gap> IsOrientableSurface(ring);
#! false
#! gap> IsSimplexRing(ring);
#! true
#! @EndExampleSession
#!
#! @Returns a simplicial surface
#! @Arguments isomorphismType
DeclareOperation( "SimplexRingByIsomorphismType", [IsList] );
#! @EndGroup

#! @BeginGroup SimplexStringByIsomorphismType
#! @Description
#! This method constructs a simplex string given its isomorphism type.
#! A simplicial surface is a simplex string if it is connected and it is a face or
#! exactly two of its faces (end faces) have two boundary edges and all other
#! faces have exactly one inner and two outer edges.
#! They can be described uniquely by their isomorphism type which is a list
#! <K>[n_1,...,n_k]</K>.
#! The simplex string with isomorphism type <K>[n_1,...,n_k]</K> has <K>n_1+...+n_k</K> faces
#! and is constructed based on a strip with <K>k</K> faces where the i-th faces is subdivided in <K>n_i</K>
#! faces, as shown in <Ref Subsect="SimplexRingByIsomorphismType"/>.
#!
#! As an example consider the simplex string with isomorphism type <K>[1,2,3]</K>:
#! @BeginExampleSession
#! gap> string:=SimplexStringByIsomorphismType([1,2,3]);
#! simplicial surface (8 vertices, 13 edges, and 6 faces)
#! gap> UmbrellaDescriptorOfSurface(string);
#! [ [ 1 ], [ 1, 2 ], [ 4, 3, 2, 1 ], [ 2, 3 ], [ 3, 4, 5, 6 ], [ 4, 5 ], [ 5, 6 ],
#! [ 6 ] ]
#! gap> IsSimplexString(string);
#! true
#! @EndExampleSession
#!
#! @Returns a simplicial surface
#! @Arguments isomorphismType
DeclareOperation( "SimplexStringByIsomorphismType", [IsList] );
#! @EndGroup
DeclareOperation( "Icosahedron", [] );
Loading