Class Euclidean

java.lang.Object
All Implemented Interfaces:
java.lang.Cloneable

public class Euclidean
extends RuleFamily
Implements euclidean cellular automaton which has an infinite neighbourhood with weights that drop off with f(r) where r is the euclidean / manhattan distance TODO (Fix freaking floating-point summation)
  • Constructor Details

    • Euclidean

      public Euclidean()
    • Euclidean

      public Euclidean​(java.lang.String rulestring)
  • Method Details

    • fromRulestring

      protected void fromRulestring​(java.lang.String rulestring)
      Description copied from class: RuleFamily
      Loads the rule's parameters from a rulestring
      Specified by:
      fromRulestring in class RuleFamily
      Parameters:
      rulestring - The rulestring of the rule (eg. B3/S23, R2,C2,S5-9,B7-8,NM)
    • canonise

      public java.lang.String canonise​(java.lang.String rulestring)
      Description copied from class: RuleFamily
      Canonises the inputted rulestring with the currently loaded parameters. This method should be called whenever the parameters of a rule are updated.
      Specified by:
      canonise in class RuleFamily
      Parameters:
      rulestring - The rulestring to canonised
      Returns:
      Canonised rulestring
    • getRegex

      public java.lang.String[] getRegex()
      Description copied from class: RuleFamily
      The regexes that will match a valid rulestring
      Specified by:
      getRegex in class RuleFamily
      Returns:
      An array of regexes that will match a valid rulestring
    • getDescription

      public java.lang.String getDescription()
      Description copied from class: RuleFamily
      Returns a plain text description of the rule family to be displayed in the Rule Dialog
      Specified by:
      getDescription in class RuleFamily
      Returns:
      Description of the rule family
    • clone

      public java.lang.Object clone()
      Description copied from class: RuleFamily
      Clones the object
      Specified by:
      clone in class RuleFamily
      Returns:
      A deepcopy of the object
    • getNeighbourhood

      public Coordinate[] getNeighbourhood​(int generation)
      Description copied from class: Rule
      This method returns the neighbourhood of a given cell at a certain generation
      Specified by:
      getNeighbourhood in class Rule
      Parameters:
      generation - The generation of the simulation
      Returns:
      A list of Coordinates that represent the neighbourhood
    • transitionFunc

      public int transitionFunc​(int[] neighbours, int cellState, int generations, Coordinate coordinate)
      Description copied from class: Rule
      This method represents the transition function of the rule
      Specified by:
      transitionFunc in class Rule
      Parameters:
      neighbours - The cell's neighbours in the order of the neighbourhood provided
      cellState - The current state of the cell
      generations - The current generation of the simulation
      coordinate - The coordinate of the cell
      Returns:
      The state of the cell in the next generation
    • step

      public void step​(Grid grid, java.util.ArrayList<java.util.Set<Coordinate>> cellsChanged, int generation, java.util.function.Function<Coordinate,​java.lang.Boolean> step) throws java.lang.IllegalArgumentException
      Description copied from class: Rule
      Steps the grid provided forward one generation
      Overrides:
      step in class Rule
      Parameters:
      grid - The grid that will be stepped forward one generation
      cellsChanged - An array of sets that contains the cells the changed in the previous generations. The first entry will contains the cells that changed in the previous generation and the next entry will contain the cells that changed the previous previous generation and so on. It should be the same length as the alternating period of the rule
      generation - The current generation of the simulation
      step - A function that returns whether the cell at that coordinate should be stepped forward.
      Throws:
      java.lang.IllegalArgumentException - Thrown if the length of cellsChanged is not the same as the alternating period