discgrp(5gv)
π discgrp β the discrete group file format π
okay bestie, listen up, this is discgrp(5gv), one of the Geometry Project Programs pages, and it's literally the blueprint for how discrete geometric group files work. it's a file format page, so no cap, it's giving "here's how to write these files so the software doesn't ghost you." let's get into it π«Ά
β¨ NAME β¨
discrete group file formats
πΈ SYNOPSIS πΈ
an ascii file representation of a discrete geometric group. that's it, that's the whole vibe π
π¦ SUMMARY π¦
this file format applies to a wide variety of groups you'll run into in topology and geometry, so it's highkey flexible. at the very beginning of the file you put the string DISCGRP, because it's matching the energy of all the other OOGL file formats (go peek at oogl(5) if you want the lore). after that, the rest of the file is just a series of parenthesized expressions. simple as.
the format is built on an expandable set of key markers and values. a typical entry looks like this:
(group borromean )
where the parentheses enclose the expression. the string group is called the key marker, and the rest of the text is the value β in this case a character string that's the name of the group. the key markers we currently recognize (and their values) are:
groupβ a name for this group. iconic, honestly.commentβ an arbitrary comment. maximum length 256 bytes and it must be enclosed in double quotes, no exceptions bestie.attributeβ one of several keyword identifiers, including:euclideanβ is a euclidean grouphyperbolicβ is a hyperbolic groupsphericalβ is a spherical grouptransposedβ the matrices are transposedfiniteβ this is a finite group
modelβ in the case thathyperbolicis an attribute, and the dimension is three, this keyword sets the model that is expected for reading subsequent isometries, i.e. it expects elements ofSL(2,C)if the model isupperhalfspaceorconformalball, andO(3,1,R)if it isprojective.projectiveβ defaultupperhalfspaceconformalballβ [not currently implemented]
displayβ these values set characteristics of the the display of the discrete group. (yes, "the the", we don't make the rules π)centercamβ keeps the camera centered in central dirichlet domain.zcullβ removes tiles which lie behind the camera.showcamβ ifcentercamis set, displayscamgeom, if provided (see below).
dimnβ the dimension of the space.ngensβ number of generators.gensβ list of generators.nelsβ number of group elements.elsβ list of group elements.wafileβ word acceptor file (in DEAGL format version 2.2)camgeomβ an OOGL-format geometry description to represent the observer.geomβ an OOGL-format geometry description. will replace the default Dirichlet domain computation.
string-matching of key markers and attribute values is case-insensitive, so don't stress about your caps lock β¨
currently all matrices must be 4x4 real matrices. hence the only valid dimensions are 2, 3, or 4. the typical case is dimension 3, where there are projective models for hyperbolic, euclidean, and spherical geometry. dimension 2 groups should leave the z-coordinate unchanged.
matrices are considered transposed if they are considered to act on column vectors as in: M.v = v'. this is the usual mathematical convention convention. so if you use this convention you must mark your matrices as being transposed. don't forget, or things get weird π
group elements are specified by an optional character string followed by a list of 16 real numbers. for the case of generators, the character string represents the name of that generator. its main use is with the automatic group software: the name used here should match that of the generator in the word acceptor file. it should, for example, be a single character for the software to work reliably. for composite elements, the string is the word in the generators which describes this group element. iykyk π§
OOGL libraries expect discrete group files to use the .dgp suffix.
a file which describes the group of the three dimensional torus follows:
DISCGRP
(group 3torus )
(comment " This is a test of the new discrete group library. " )
(attribute Euclidean )
(display centercam )
(enumdepth 3 ) # look at all words of length 3 or less in generators
(enumdist 10.0 ) # and which don't move the origin more than 10.0
(dimn 3 )
(ngens 3 )
(gens
a
1 0 0 0
0 1 0 0
0 0 1 0
1 0 -0.1 1
b
1 0 0 0
0 1 0 0
0 0 1 0
0.1 1 0 1
c
1 0 0 0
0 1 0 0
0 0 1 0
0 0.2 1 1
)
(cpoint 0.000000 0.000000 0.000000 1.000000 )
(camgeom
{ = OFF
5 2 5
0 0 0
-0.1 0 0.5
0.1 0 0.5
0 -0.1 0.5
0 0.1 0.5
3 0 1 2 200 200 0 .8
3 0 3 4 0 200 200 .8
}
)
π FILES π
example group files are to be found in the OOGL release in ${GEOM}/data/groups, where e.g., GEOM = /u/gcg/ngrap. see also discgrp(3) and automata(1). go look, they're right there π
π AUTHORS π
Charlie Gunn. (the main character who wrote this, we stan π)
π BUGS π
for dimension 2, the code should read and write 3 x 3 matrices. (it doesn't yet. we said what we said π)
okay that's the whole page bestie, go forth and write your discrete group files with confidence β¨π no cap, you got this. sending you main character energy and good matrix vibes π¦π
this has been discgrp(5gv) from the Geometry Project Programs, dated 92/08/26. mwah, slay, periodt π
π¦ where this page comes from
- debian bookworm: geomview 1.9.5-4+b1
- debian trixie: geomview 1.9.5-5
- fedora 43: geomview 1.9.5-33.20190630git1d6759e.fc43 Β· LGPL-2.0-or-later AND GPL-2.0-or-later
- fedora 44: geomview 1.9.5-35.20190630git1d6759e.fc44 Β· LGPL-2.0-or-later AND GPL-2.0-or-later
- ubuntu jammy: geomview 1.9.5-3build1
- ubuntu noble: geomview 1.9.5-4.1build2
- ubuntu questing: geomview 1.9.5-6
- ubuntu resolute: geomview 1.9.5-6build1
- ubuntu stonking: geomview 1.9.5-6build1
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms