public class DiscreteGroup extends Object
de.jtem.discretegroup
package.
It is a class which serves primarily to represent discrete groups which
are:
This class may also be used if the generators are not available, to simply store and manipulate a list of matrices. Operations requiring generators will in this case simply be skipped over.
The discrete group may be a finite or infinite group. In the latter case,
it may have an optional instance of DiscreteGroupConstraint
which is used
to determine how to enumerate a finite list of group elements from the generators.
Furthermore, the group may have an instance of FiniteStateAutomaton
which
complements the role of the constraint by accelerating the solution of the word
problem, that is, figuring out whether a particular word in the generators is equivalent
to a word which has already been processed.
Group elements, including the generators, are represented by instances of
DiscreteGroupElement
.
There is an optional matrix changeOfBasis which is intended to produce the conjugated group, but it hasn't been implemented systematically.
You can also use this class to provide a standard fundamental domain getDefaultFundamentalRegion()
for the group, an instance of Geometry
.
This class also includes
a center point for the group. This is used in various calculations,
such as dirichlet domain calculations, see DirichletDomain
.
*
The primary method of interest which is not a getter or setter is update()
.
This will calculate the element list anew from the constraint, so should be called
whenever the constraint or the generators change. You may also prefer to use the
static method DiscreteGroupUtility.generateElements(DiscreteGroup, DiscreteGroupConstraint)
by hand and keep track of the element list on your own.
For examples see the classes in de.jtem.discretegroup.tutorial
.
Modifier and Type | Field and Description |
---|---|
protected double[] |
centerPoint |
protected boolean |
changed |
protected de.jreality.math.Matrix |
changeOfBasis |
protected DiscreteGroupColorPicker |
colorPicker |
protected static boolean |
debug |
protected int |
dimension |
protected DiscreteGroupElement[] |
elementList |
protected FiniteStateAutomaton |
fsa |
protected de.jreality.scene.Geometry |
fundamentalRegion |
protected de.jreality.scene.SceneGraphComponent |
generatorRepresentations |
protected DiscreteGroupElement[] |
generators |
protected HashMap<String,DiscreteGroupElement> |
genTable |
protected boolean |
hasGenerators |
protected boolean |
isFinite |
protected boolean |
isFree |
protected DiscreteGroupElement[] |
masterList |
protected int |
maxDirDomOrbitSize |
protected int |
metric |
protected String |
name |
protected DiscreteGroupConstraint |
theConstraint |
Constructor and Description |
---|
DiscreteGroup() |
protected double[] centerPoint
protected transient boolean changed
protected de.jreality.math.Matrix changeOfBasis
protected DiscreteGroupColorPicker colorPicker
protected static transient boolean debug
protected int dimension
protected DiscreteGroupElement[] elementList
protected FiniteStateAutomaton fsa
protected de.jreality.scene.Geometry fundamentalRegion
protected de.jreality.scene.SceneGraphComponent generatorRepresentations
protected DiscreteGroupElement[] generators
protected transient HashMap<String,DiscreteGroupElement> genTable
protected boolean hasGenerators
protected boolean isFinite
protected boolean isFree
protected DiscreteGroupElement[] masterList
protected int maxDirDomOrbitSize
protected int metric
protected String name
protected DiscreteGroupConstraint theConstraint
protected void buildGeneratorHashTable()
public void calculateGenerators()
public void generateElements()
public double[] getCenterPoint()
public de.jreality.math.Matrix getChangeOfBasis()
public DiscreteGroupColorPicker getColorPicker()
public DiscreteGroupConstraint getConstraint()
public de.jreality.scene.Geometry getDefaultFundamentalRegion()
public int getDimension()
public DiscreteGroupElement[] getElementList()
public FiniteStateAutomaton getFsa()
public DiscreteGroupElement getGeneratorInverse(DiscreteGroupElement dge)
public de.jreality.scene.SceneGraphComponent getGeneratorRepresentations()
public DiscreteGroupElement[] getGenerators()
public int getMaxDirDomOrbitSize()
public int getMetric()
public String getName()
public boolean hasChanged()
protected void init()
public boolean isChanged()
public boolean isDebug()
public boolean isFinite()
public boolean isFree()
public void setCenterPoint(double[] ds)
public void setChanged(boolean changed)
public void setChangeOfBasis(double[] m)
public void setChangeOfBasis(de.jreality.math.Matrix transform)
public void setColorPicker(DiscreteGroupColorPicker picker)
public void setConstraint(DiscreteGroupConstraint constraint)
public void setDebug(boolean b)
public void setDefaultFundamentalDomain(de.jreality.scene.Geometry g)
public void setDimension(int i)
public void setElementList(DiscreteGroupElement[] elementList)
public void setFinite(boolean b)
public void setFree(boolean isFree)
public void setFsa(FiniteStateAutomaton automaton)
public void setGeneratorRepresentations(de.jreality.scene.SceneGraphComponent gr)
public void setGenerators(DiscreteGroupElement[] transforms)
public void setHasChanged(boolean b)
public void setMaxDirDomOrbitSize(int maxDirDomOrbitSize)
public void setMetric(int i)
public void setName(String string)
public void update()