Home

Introduction Download Documentation Gallery Groups Vision Links Acknowledgments

Class Hierarchy

This page details the general internal structure of the Group Explorer program.  For those who may have happened upon this page and are not computer programmers, each section below describes a topically organized group of operations that needed to be built in order to form the whole of Group Explorer.  This list is not comprehensive, but includes all major pieces.

Components

A "component" in Delphi is a reusable (usually graphical) item with its associated functionality.  For example, in Group Explorer, each Cayley diagram is an instance of the TGLCayleyDiagram component, discussed below.

Delphi allows programmers to organize a group of units into a "package," and all the components described below I put into one package called GroupsComponents.dpk, and if one were to want to build a different application using these components (say, an interface for creating .gp files) then one could import this package and have access to all the following classes.

Class Superclass Description
TPermutation -----

(when a class lists no superclass, its superclass is TObject)

Objects of this class store an array with indices between 0 and n, for n < 20, where each entry is in the same range.

Contains routines for turning converting a permutation in Sn to and from its index in an enumeration of the n! elements of Sn.  Contains routines for composing and representing permutations.

TGroupDisplay ----- Objects of this class represent how a group is to be displayed, i.e. how the elements should be represented.  Each item on the Group | Change Representation submenu is represented internally as a TGroupDisplay object.
TGroup ----- Internal representation of a group.  Holds the n such that the group is embedded in Sn, and holds each list of generators and each TGroupDisplay object associated with the group.  Also stores miscellaneous information like group name, author, etc.

Contains routines for composing and inverting elements of the group.

TArcingInfo ----- Objects of this class record how arcs in Cayley diagrams are shaped (i.e. whether they arc, how much, and if they do arc, where the center of the circle they trace is).
TCayleyDiagram ----- Objects of this class associate elements of the group with points in space at which they should be drawn.  They also retain any information generated during layout of the group, provided that the group was laid out by Group Explorer and not by the author of the .gp file.

The TCayleyDiagram class depends on the TGroup class, because Cayley diagrams are only definable in terms of groups.

The next three classes define the building blocks needed for the TGLWireframePicture class, which simply makes a visual component associated with a wireframe.  Wireframes in the Group Explorer world are arcs and lines with or without arrowheads, accompanied by spheres (nodes) and potentially labels.  This is what underlies both Cayley diagrams and objects of symmetry.  The letters "GL" begin to appear here to indicate that OpenGL libraries are used in the implementation.
TNode3D ----- Internal representation of a visible node (sphere) in a wireframe.  Contains data on position, color, size, shape, and fill.
TLine3D ----- Internal representation of a visible line (arc) in a wireframe.  Contains data on starting and ending points, color, thickness, whether or not there is an arrowhead, and if there is one, where it is.
TGLWireframe ----- A list of TNode3D objects and a list of TLine3D objects, with routines for adding and removing them, and for rotating the whole wireframe in space.
TSymmetryObject ----- Objects of this class contain a TGLWireframe object within them, and also contain definitions for how it could be manipulated according to various symmetries (rotations) that generate a group.
TVisualGroup ----- This class unites Groups, Cayley diagrams, and objects of symmetry together.  That is, a TVisualGroup object contains one group and any number of custom Cayley diagrams and objects of symmetry.  It is created from a .gp file by the group parsing routines discussed immediately below.
GroupParsing.pas

(a file, not a class)

No classes are present in this unit.  Rather, it contains routines for reading from a file the definitions of groups, diagrams, nodes, lines, rotations, etc.  These routines make it easy to write the algorithm for loading a .gp file.

The result of loading such a file is a TVisualGroup object, and thus the TVisualGroup class contains a routine for loading such an object from a given file.  The format of .gp files is discussed on the Group Authoring page.

TRegExpr ----- This class was not written by me.  Rather, I downloaded it free from the internet.  Its copyright information is as follows.

Copyright 1999-2000 Andrey V. Sorokin, anso@mail.ru

It encapsulates regular expression utilities, and is of very great use to the GroupParsing unit, above.

My3DUnit.pas

(a file, not a class)

A collection of functions related to points in three-dimensional Euclidean space.
ColorSpectrum.pas

(a file, not a class)

A collection of functions related to the color spectrum, e.g. creating a bright color given a hue between 0 and 1, or for brightening or darkening a color, or converting among different color representations.
TGLWireframePicture TCustomControl

(a Borland class)

Each TGLWireframePicture object contains within it a TGLWireframe object that contains the data about the wireframe itself.  The TGLWireframePicture object is responsible for maintaining information about the drawing context, the viewpoint, the current state of animation, the various options one can change or toggle, etc.  It contains routines for rendering frames of the image and for adjusting its options.
MyGLUtils.pas

(a file, not a class)

A collection of miscellaneous utilities related to OpenGL.  This is an area where (I confess) the design is inefficient, in that there are routines in this unit for, e.g., drawing a disc.  It would be far faster (drawing time) to make such a thing an OpenGL display list and call it when needed.  But this is an optimization I have not yet gotten around to (see Vision and Goals).
TGLCayleyDiagramPicture TGLWireframePicture Subclass of TGLWireframePicture, this class adds the functionality for animation and labeling specific to Cayley diagrams, as well as the ability to highlight nodes by shape or color, and to draw chunks around cosets.  (Refer to the documentation on Editing Cayley Diagrams for the uses of these various functions in the program.)  This graphical component is the only thing visible in the Cayley diagram windows within Group Explorer.
TGLSymmetryObjectPicture TGLWireframePicture Subclass of TGLWireframePicture, this class adds the functionality for labeling and circling homes and labeling nodes.  This graphical component is the only thing visible in the Symmetry Object windows within Group Explorer.
TPermPicture TGraphicControl

(a Borland class)

A visual component for representing permutations.  This is the component that is visible in the Permutation View.  It stores a permutation to display, and can reset it to the identity or compose it with another.
TMultiplicationTable TDrawGrid

(a Borland class)

A visual component for representing multiplication tables.  This is the largest component that is visible in the Multiplication Table.  It has the ability to draw itself according to several color, order, and spacing parameters.  How the user can manipulate these is discussed in the Editing Multiplication Tables documentation.

Forms

A "form" in Delphi is a window that the user may eventually see.  For example, in Group Explorer, the main program has its own window, and is therefore a form, but so are all its subwindows, and any message boxes that may pop up during the course of program execution.

Class Superclass Description
TMainForm TForm

(a Borland class)

This form is the main Group Explorer window, which is first displayed when the program opens.  It handles the main menu and all of its actions, the containing of subwindows, and the closing of all other windows when the program terminates.  It has a status bar at the bottom that gives messages relevant to the current state of the application.
Here follow the four single-instance subwindows of the main Group Explorer window, the Permutation View, the History View, the Navigator, and the Multiplication Table.  Associated with the latter two are a few related forms, which are also mentioned here.
TPermutationForm TForm This is a subwindow of the main Group Explorer window, and contains one component, the TPermPicture documented above.  The main form notifies this form of the user's navigation within the group, to which this form responds by modifying the TPermPicture's contents appropriately.  This class also has only one instance created per Group Explorer session.
THistoryForm TForm This is a simple subwindow of the main Group Explorer window, documented in the User Manual here.  It consists of just one scrollable text pane, and provides routines the main program uses to notify it of the user's navigation within the group.  It responds to this by appending textual representations of that information to the end of its contents.  This class also has only one instance created per Group Explorer session.
TNavigator TForm This component is the sum of all visible controls within the Navigator subwindow of the main Group Explorer window.  It provides an interface so that the main program can tell it what generators are currently active, and when the user navigates using one, the Navigator informs the main window of this event, so that the main window can dispatch this information to all other subwindows. 
TNavigatorForm TForm This is an important subwindow of the main Group Explorer window.  It is documented here in the User Manual.  It contains simply one instance of the above documented TNavigator component.  This class also has only one instance created per Group Explorer session.
TEditNavKeysDialog TOKBottomDlg

(a Borland class)

An instance of this is created by TNavigator to allow the user to edit the assignment of keyboard shortcuts to group generators.  It is documented together with the Navigator in the User Manual, here.
TMultiplicationForm TForm The subwindow of the main Group Explorer window whose contents are a TMultiplicationTable component and some controls for manipulating it.  It provides to the main program the interface for moving an indicator around within the table indicating the user's navigation within the group. 
TMTEditDialog TForm The window that is displayed when the user clicks the "Edit table..." on the Multiplication Table window.  The workings of this window are documented here.
The Group Information window is also a single-instance window, but does not appear as a subwindow of the main application.  Rather, it appears off to the side, so that the user may close it or obscure it at will.
TGroupInfoForm TForm This form is instantiated only once, and its contents are just one scrollable text pane.  The one instance of this class is filled with information about the currently loaded group each time a new group is loaded.
There remain the two multiple-instance subwindows of the Group Explorer main window, Cayley diagrams and objects of symmetry.  Each of these has at least one associated class, also described here.
TSymmetryObjectForm TForm The form that contains a TGLSymmetryObjectPicture component.  Many copies of this may exist during a Group Explorer session, created by user commands from the Group menu.

It provides the main program an interface for applying the user's navigation to manipulate the symmetry object.  It provides the user a popup menu for changing the options by which the symmetry object is displayed.  Thus the next class is useful.

TSymmetryObjectFormOptions ----- One such object exists for each TSymmetryObjectPicture object that exists.  It is a record of all the settings on that picture, and can read/write its contents to/from such a picture or a settings (GroupExplorer.INI) file.
TCayleyDiagramForm TForm The form that contains a TGLCayleyDiagramPicture component.  Many copies of this may exist during a Group Explorer session, created by user commands from the Group menu.

It provides the main program an interface for applying the user's navigation to move around within the Cayley diagram.  It provides the user a popup menu for changing the options by which the Cayley diagram is displayed.  Thus the next class is useful.

TCayleyDiagramFormOptions ----- One such object exists for each TCayleyDiagramPicture object that exists.  It is a record of all the settings on that picture, and can read/write its contents to/from such a picture or a settings (GroupExplorer.INI) file.
TCDEditDialog TForm The window that is displayed when the user clicks "Edit diagram..." on the popup window of a Cayley diagram.  The workings of this window are documented here.

bullet

The list of contributors to the Group Explorer project can be found on the Acknowledgements page.

bullet

For more information about Group Explorer, or to give feedback, contact Nathan Carter at: ncarter@bentley.edu.