jvx.cellular

## Class PnCellOperator

- java.lang.Object
- - jv.object.PsObject
  - - jvx.project.PjWorkshop
    - - jvx.cellular.PnCellOperator

- All Implemented Interfaces:
    java.io.Serializable, java.lang.Cloneable, java.lang.Runnable, PsUpdateIf, PjWorkshopIf, PvPickListenerIf
  Direct Known Subclasses:
    PnMinesweeper

      public class PnCellOperator
      extends PjWorkshop
      implements PvPickListenerIf, java.lang.Runnable

  Implements a cellular automata on the triangles of an element set.
  See Also:
    Serialized Form
  Author:
    Ulrich Reitebuch
  Version:
    14.06.02, 3.10 revised (ur) Some tunings.
    28.12.01, 3.00 revised (kp) Full revision when incorporating the new workshop handling.
    27.06.00, 2.10 revised (ur) Marked cells output by ElementTag added. 02.05.00, 2.00 revised (kp) Class derived from PjProject in order to reuse interface methods.
    02.05.00, 1.20 revised (kp) Removed the static getDialog() method which implicitly constructed a PnCellOperator.
    02.04.00, 1.10 revised (kp) PdColor replaced with Color.
    18.09.99, 1.01 revised (kp) Added two additional method to fulfill PvPickListenerIf.
    02.08.99, 1.00 created (ur)

- - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `static int` | `CORONA`
    `static int` | `LIFE`
    `static int` | `MAJORITY`
    `static int` | `NEIGHBOUR`

    - ### Fields inherited from class jv.object.PsObject

      `HAS_BOUNDARY_PANEL, HAS_CONFIG_PANEL, HAS_INFO_PANEL, HAS_LABEL_PANEL, HAS_MATERIAL_PANEL, HAS_TEXTURE_PANEL, HAS_VECTOR_PANEL, INSPECTOR_INFO, INSPECTOR_INFO_EXT, IS_DELETED, IS_FIXED, IS_FOCUSSED, IS_PICKED, IS_SELECTED, IS_USED, NUM_TAGS`

    - ### Fields inherited from interface jv.project.PjWorkshopIf

      `MODE_BUG, MODE_STANDARD, MODE_VALIDATE`

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `PnCellOperator()` Constructor
    `PnCellOperator(PgElementSet geom)` Deprecated. use constructor prj=new PnCellOperator();prj.setGeometry(geom);prj.reset();

  - ### Method Summary

    All Methods Instance Methods Concrete Methods Deprecated Methods
    Modifier and Type | Method and Description
    --- | ---
    `int` | `cellOperator(int index)` Call the appointed operating rule for a given cell.
    `void` | `clear()` Set all elements to state "0".
    `void` | `close()` Remove pick focus and update from cell operator, reset elementSet's colors to global element color and destroy dialog window.
    `void` | `compute()` For all cells call cell operating method.
    `void` | `dragDisplay(PvPickEvent pos)` Drag a location in the display with 2d display and 3d world coordinates.
    `void` | `dragInitial(PvPickEvent pos)` Drag an arbitrary point along a geometry, point may lie inside an element.
    `void` | `dragVertex(PgGeometryIf geom, int vertexIndex, PdVector vertex)` Drag a picked vertex of a geometry.
    `void` | `evaluate()` For all elements of the ElementSet show the cell values.
    `java.awt.Color` | `getColor(int i)` Return color for a given cell state.
    `int` | `getNumLoops()` Get the number of operating loops.
    `int` | `getNumStates()` return number of possible states of a cell.
    `int` | `getState(int elemNr)` Return state number of a given element.
    `void` | `init()` Initialization
    `void` | `makeCoronaInfluence()` For all cells store all cells touching vertices of the cell itself.
    `void` | `makeInfluence()` Set list of influencing cells for all cells of the elementSet.
    `void` | `makeNeighbourInfluence()` For all cells store cell itself and all neighbour cells.
    `void` | `markElement(int elemNr)` Set an element to the next state.
    `void` | `markElement(int elemNr, int value)` Set an element to a given state.
    `void` | `markGlider(int elemNr, int dir)` Set a glider upon an elementSet with quadrilateral connectivity.
    `void` | `markVertices(PvPickEvent markBox)` Mark a set of vertices of a geometry within a given bounding box.
    `void` | `pickDisplay(PvPickEvent pos)` Get a location in the display with 2d display and 3d world coordinates.
    `void` | `pickInitial(PvPickEvent pos)` Mark picked element to be a living cell.
    `void` | `pickVertex(PgGeometryIf geom, int vertexIndex, PdVector vertex)` Get a picked vertex of a geometry.
    `void` | `releasePick()` Remove pick focus from cell operator.
    `void` | `requestPick()` Set pick focus upon cell operator.
    `void` | `reset()` Reset workshop and geometry to original state.
    `void` | `restoreColors()` Reset the ElementSet's element colors to state before calling cell operator.
    `int` | `ruleOfLife(int index)` Evaluate rule of life: Dead cells with exactly three living influencing cells are set alive, living cells with three or four living influencing cells stay alive, all other cells are dead.
    `int` | `ruleOfMajority(int index)` Every cell is set to the state of the majority state in the influence area.
    `void` | `run()` Do cell operating until `m_numLoops` are done or until a call of stop().
    `void` | `selectGeometry(PgGeometryIf geom)` This workshop is informed when the currently active geometry changes in the display.
    `void` | `setColor(int i, java.awt.Color aColor)` Define color for a cell state.
    `void` | `setColors()` Set colors of all elements of the elementSet according to their states.
    `void` | `setCurrLoop(int currLoop)` Set number of current operating loop.
    `void` | `setElementTags()` Set tag for all elements of the elementSet according to their states.
    `void` | `setGeometry(PgElementSet geom)` Assign a geometry on which this workshop operates.
    `void` | `setInfluence(int inf)` Choose an influence area.
    `void` | `setInfluence(java.lang.String aString)` Deprecated. use setInfluence(int)
    `void` | `setNumLoops(int numLoops)` Set the number of operating loops.
    `void` | `setNumStates(int anInt)` Define number of possible states of a cell.
    `void` | `setOutputType(int aType)` Appoint the way of viewing element states.
    `void` | `setRule(int aRule)` Select an operating rule.
    `void` | `setRule(java.lang.String aString)` Deprecated. use setRule(int)
    `void` | `start()` Start cell operator in separate thread.
    `void` | `stop()` Stop cell operator in separate thread.
    `void` | `unmarkVertices(PvPickEvent markBox)` Unmark a set of vertices of a geometry within a given bounding box.
    `boolean` | `update(java.lang.Object event)` Update the class whenever a child has changed.

    - ### Methods inherited from class jvx.project.PjWorkshop

      `cancel, getDisplay, getDisplays, getGeometry, getMode, getSavedGeometry, getViewer, isModal, isStandalone, ok, removeGeometry, setDisplay, setDisplays, setGeometry, setModal, setMode, setStandalone, setViewer`

    - ### Methods inherited from class jv.object.PsObject

      `addInspector, addUpdateListener, assureInspector, clearTag, clone, clone, clone, copy, getFather, getInfoPanel, getInspector, getName, getNumObjects, getSymbol, hasInspector, hasTag, hasUpdateListener, instanceOf, instanceOf, newInspector, newInspector, removeInspector, removeInspector, removeUpdateListener, setName, setParent, setSymbol, setTag, toString, updatePanels`

    - ### Methods inherited from class java.lang.Object

      `equals, getClass, hashCode, notify, notifyAll, wait, wait, wait`

    - ### Methods inherited from interface jv.project.PvPickListenerIf

      `getName`

    - ### Methods inherited from interface jv.object.PsUpdateIf

      `getFather, getName, setParent`

- - ### Field Detail

    - #### LIFE

          public static final int LIFE

      See Also:
        Constant Field Values

    - #### MAJORITY

          public static final int MAJORITY

      See Also:
        Constant Field Values

    - #### NEIGHBOUR

          public static final int NEIGHBOUR

      See Also:
        Constant Field Values

    - #### CORONA

          public static final int CORONA

      See Also:
        Constant Field Values

  - ### Constructor Detail

    - #### PnCellOperator

          public PnCellOperator()

      Constructor

    - #### PnCellOperator

          public PnCellOperator(PgElementSet geom)

      Deprecated. use constructor prj=new PnCellOperator();prj.setGeometry(geom);prj.reset();
      Constructor.

  - ### Method Detail

    - #### init

          public void init()

      Initialization
      Overrides:
        `init` in class `PjWorkshop`

    - #### reset

          public void reset()

      Reset workshop and geometry to original state.
      Overrides:
        `reset` in class `PjWorkshop`

    - #### update

          public boolean update(java.lang.Object event)

      Update the class whenever a child has changed. Method is usually invoked from the children.
      Specified by:
        `update` in interface `PsUpdateIf`
      Overrides:
        `update` in class `PjWorkshop`
      Parameters:
        `event` - sender of this update.
      Returns:
        true if update was correctly handled by superclass.
      See Also:
        `PsObject.setParent(PsUpdateIf)`, `PsObject.getFather()`, `PsObject.addUpdateListener(PsUpdateIf)`

    - #### setGeometry

          public void setGeometry(PgElementSet geom)

      Assign a geometry on which this workshop operates.

    - #### close

          public void close()

      Remove pick focus and update from cell operator, reset elementSet's colors to global element color and destroy dialog window.
      Overrides:
        `close` in class `PjWorkshop`

    - #### requestPick

          public void requestPick()

      Set pick focus upon cell operator.
      Version:
        06.07.02, 1.10 revised (kp) Avoid NullPointerException when geometry has no displays yet.

    - #### releasePick

          public void releasePick()

      Remove pick focus from cell operator.
      Version:
        06.07.02, 1.10 revised (kp) Avoid NullPointerException when geometry has no displays yet.

    - #### pickInitial

          public void pickInitial(PvPickEvent pos)

      Mark picked element to be a living cell.
      Specified by:
        `pickInitial` in interface `PvPickListenerIf`
      Parameters:
        `pos` - Pick event issued by the display
      See Also:
        `PvPickListenerIf`

    - #### selectGeometry

          public void selectGeometry(PgGeometryIf geom)

      This workshop is informed when the currently active geometry changes in the display. This method is automatically invoked from a display if this workshop is registered as pick listener.

      This method does nothing and must be overwritten.

      Specified by:
        `selectGeometry` in interface `PvPickListenerIf`
      Parameters:
        `geom` - Now selected geometry of display.

    - #### pickDisplay

          public void pickDisplay(PvPickEvent pos)

      Get a location in the display with 2d display and 3d world coordinates. Point may be independent of any geometry.

      This method does nothing and must be overwritten.

      Specified by:
        `pickDisplay` in interface `PvPickListenerIf`
      Parameters:
        `pos` - Pick event issued by the display
      See Also:
        `PvPickListenerIf`

    - #### dragDisplay

          public void dragDisplay(PvPickEvent pos)

      Drag a location in the display with 2d display and 3d world coordinates. Point may be independent of any geometry.

      This method invokes `pickDisplay(PvPickEvent)`.

      Specified by:
        `dragDisplay` in interface `PvPickListenerIf`
      Parameters:
        `pos` - Pick event issued by the display
      See Also:
        `PvPickListenerIf`

    - #### dragInitial

          public void dragInitial(PvPickEvent pos)

      Drag an arbitrary point along a geometry, point may lie inside an element.

      This method invokes `pickInitial(PvPickEvent)` and should be overwritten.

      Specified by:
        `dragInitial` in interface `PvPickListenerIf`
      Parameters:
        `pos` - Pick event issued by the display
      See Also:
        `PvPickListenerIf`

    - #### pickVertex

          public void pickVertex(PgGeometryIf geom,
                                 int vertexIndex,
                                 PdVector vertex)

      Get a picked vertex of a geometry.

      This method does nothing and must be overwritten.

      Specified by:
        `pickVertex` in interface `PvPickListenerIf`
      Parameters:
        `geom` - Picked geometry on which vertex lies
        `vertexIndex` - Index of vertex in vertex array of geometry
        `vertex` - 3d coordinates of vertex position
      See Also:
        `PvPickListenerIf`

    - #### dragVertex

          public void dragVertex(PgGeometryIf geom,
                                 int vertexIndex,
                                 PdVector vertex)

      Drag a picked vertex of a geometry.

      This method invokes `pickVertex(PgGeometryIf,int,PdVector)` and should be overwritten.

      Specified by:
        `dragVertex` in interface `PvPickListenerIf`
      Parameters:
        `geom` - Picked geometry on which vertex lies
        `vertexIndex` - Index of vertex in vertex array of geometry
        `vertex` - 3d coordinates of vertex position

    - #### markVertices

          public void markVertices(PvPickEvent markBox)

      Mark a set of vertices of a geometry within a given bounding box.
      Specified by:
        `markVertices` in interface `PvPickListenerIf`
      Parameters:
        `markBox` - contains four coplanar points on the bounding prism, and direction of prism.

    - #### unmarkVertices

          public void unmarkVertices(PvPickEvent markBox)

      Unmark a set of vertices of a geometry within a given bounding box.
      Specified by:
        `unmarkVertices` in interface `PvPickListenerIf`
      Parameters:
        `markBox` - contains four coplanar points on the bounding prism, and direction of prism.

    - #### setNumStates

          public void setNumStates(int anInt)

      Define number of possible states of a cell.

    - #### getNumStates

          public int getNumStates()

      return number of possible states of a cell.

    - #### setRule

          public void setRule(int aRule)

      Select an operating rule.
      Since:
        JavaView 2.34
      Version:
        28.08.02, 1.00 created (kp)

    - #### setRule

          public void setRule(java.lang.String aString)

      Deprecated. use setRule(int)
      Choose an operating rule.

    - #### setInfluence

          public void setInfluence(int inf)

      Choose an influence area.
      Since:
        JavaView 2.34
      Version:
        28.08.02, 1.00 created (kp)

    - #### setInfluence

          public void setInfluence(java.lang.String aString)

      Deprecated. use setInfluence(int)
      Choose an influence area.

    - #### getColor

          public java.awt.Color getColor(int i)

      Return color for a given cell state.

    - #### setColor

          public void setColor(int i,
                               java.awt.Color aColor)

      Define color for a cell state.

    - #### getNumLoops

          public int getNumLoops()

      Get the number of operating loops.
      Since:
        JavaView 2.48.007
      Version:
        25.12.02, 1.00 created (kp)

    - #### setNumLoops

          public void setNumLoops(int numLoops)

      Set the number of operating loops.

    - #### setCurrLoop

          public void setCurrLoop(int currLoop)

      Set number of current operating loop.

    - #### markElement

          public void markElement(int elemNr)

      Set an element to the next state.

    - #### markElement

          public void markElement(int elemNr,
                                  int value)

      Set an element to a given state.

    - #### markGlider

          public void markGlider(int elemNr,
                                 int dir)

      Set a glider upon an elementSet with quadrilateral connectivity.

    - #### clear

          public void clear()

      Set all elements to state "0".

    - #### getState

          public int getState(int elemNr)

      Return state number of a given element.

    - #### makeInfluence

          public void makeInfluence()

      Set list of influencing cells for all cells of the elementSet.

    - #### makeNeighbourInfluence

          public void makeNeighbourInfluence()

      For all cells store cell itself and all neighbour cells.

    - #### makeCoronaInfluence

          public void makeCoronaInfluence()

      For all cells store all cells touching vertices of the cell itself.

    - #### compute

          public void compute()

      For all cells call cell operating method.

    - #### evaluate

          public void evaluate()

      For all elements of the ElementSet show the cell values.

    - #### setOutputType

          public void setOutputType(int aType)

      Appoint the way of viewing element states.

    - #### setColors

          public void setColors()

      Set colors of all elements of the elementSet according to their states.

    - #### restoreColors

          public void restoreColors()

      Reset the ElementSet's element colors to state before calling cell operator.

    - #### setElementTags

          public void setElementTags()

      Set tag for all elements of the elementSet according to their states.

    - #### cellOperator

          public int cellOperator(int index)

      Call the appointed operating rule for a given cell.

    - #### ruleOfLife

          public int ruleOfLife(int index)

      Evaluate rule of life: Dead cells with exactly three living influencing cells are set alive, living cells with three or four living influencing cells stay alive, all other cells are dead.

    - #### ruleOfMajority

          public int ruleOfMajority(int index)

      Every cell is set to the state of the majority state in the influence area.

    - #### start

          public void start()

      Start cell operator in separate thread.

    - #### stop

          public void stop()

      Stop cell operator in separate thread.

    - #### run

          public void run()

      Do cell operating until `m_numLoops` are done or until a call of stop().
      Specified by:
        `run` in interface `java.lang.Runnable`

"

The software JavaView? is copyright protected. All Rights Reserved.
"