Enum Direction8

java.lang.Object
java.lang.Enum<Direction8>
eu.pedu.lib20s.geom.Direction8
All Implemented Interfaces:
java.io.Serializable, java.lang.Comparable<Direction8>, java.lang.constant.Constable

public enum Direction8
extends java.lang.Enum<Direction8>
Třída Direction8 slouží jako výčtový typ pro 8 hlavních a vedlejších světových stran spolu se směrem NOWHERE pro situace, kdy není možno určit směr.
  • Nested Class Summary

    Nested classes/interfaces inherited from class java.lang.Enum

    java.lang.Enum.EnumDesc<E extends java.lang.Enum<E>>
  • Enum Constant Summary

    Enum Constants 
    Enum Constant Description
    EAST
    Východ = doprava.
    NORTH
    Sever = nahoru.
    NORTH_EAST
    Severovýchod = doprava nahoru.
    NORTH_WEST
    Severozápad = doleva nahoru.
    NOWHERE
    Žádný = nikam.
    SOUTH
    Jih = dolu.
    SOUTH_EAST
    Jihovýchod = doprava dolu.
    SOUTH_WEST
    Jihozápad = doleva nahoru.
    WEST
    Západ = doleva.
  • Field Summary

    Fields 
    Modifier and Type Field Description
    static int NUM_DIRS
    Celkový počet definovaných směrů.
  • Method Summary

    Modifier and Type Method Description
    Direction8 aboutTurn()
    Vrátí směr otočený o 180°.
    static java.util.List<Direction8> cardinals()
    Vrátí neměnný seznam se čtyřmi hlavními světovými stranami.
    int dx()
    Vrátí změnu vodorovné souřadnice při přesunu na sousední pole v daném směru.
    int dy()
    Vrátí změnu svislé souřadnice při přesunu na sousední pole v daném směru.
    static Direction8 get​(int index)
    Vrátí směr se zadaným indexem.
    static Direction8 get​(java.lang.String name)
    Vrátí směr se zadaným názvem nebo zkratkou.
    java.lang.String getShortcut()
    Vrátí zkratku názvu daného směru.
    Direction8 halfLeft()
    Vrátí směr otočený o 45° vlevo.
    Direction8 halfRight()
    Vrátí směr otočený o 45° vpravo.
    boolean isCardinal()
    Vrátí informaci o tom, je-li daný směr jedním ze 4 hlavních směrů, tj. jedná-li se o jeden ze směrů EAST, NORTH, WEST, SOUTH.
    Direction8 leftTurn()
    Vrátí směr otočený o 90° vlevo.
    Position nextPosition​(Position position)
    Vrátí pozici sousedního políčka v daném směru.
    Position nextPosition​(Position position, int distance)
    Vrátí pozici políčka vzdáleného v daném směru o zadanou vzdálenost.
    int nextX​(int x)
    Obdrží x-vou souřadnici políčka a vrátí x-vou souřadnici sousedního políčka v daném směru.
    double nextX​(int x, int distance)
    Obdrží x-vou souřadnici políčka a vrátí x-vou souřadnici políčka vzdáleného v daném směru o zadanou vzdálenost.
    int nextY​(int y)
    Obdrží y-vou souřadnici políčka a vrátí y-vou souřadnici sousedního políčka v daném směru.
    double nextY​(int y, int distance)
    Obdrží x-vou souřadnici políčka a vrátí x-vou souřadnici políčka vzdáleného v daném směru o zadanou vzdálenost.
    int ordinal4()
    Vrátí index daného hlavního směru v rámci hlavních směrů.
    int ordinalDistanceTo​(Direction8 direction)
    Vrátí rozdíl pořadových čísel zadaných směrů, který po přičtení k pořadovému číslu daného směru dá pořadové číslo zadaného parametru.
    static boolean prohibitNowhere​(boolean prohibit)
    Nastaví, zda budou povoleny operace se směrem NOWHERE.
    Direction8 rightTurn()
    Vrátí směr otočený o 90° vpravo.
    Direction8 turnBy​(int eighths)
    Vrátí směr otočený o zadaný počet osminek (45°) vlevo.
    Area turnInArea​(Area ref, Area inner)
    Přepočítá rozměry zadané oblasti orientované na východ a umístěné v referenční oblasti na nové rozměry po otočení do tohoto směru.
    Area turnInArea​(Area ref, Area inner, Direction8 fromDirection)
    Přepočítá relativní pozici a absolutní rozměry zadané oblasti a umístěné v referenční čtvercové oblasti orientované zadaným směrem na absolutní rozměry po otočení referenční oblasti do tohoto směru.
    Area turnInAreaTo​(Direction8 toDirection, Area ref, Area inner)
    Přepočítá relativní pozici a absolutní rozměry zadané oblasti a umístěné v referenční čtvercové oblasti orientované na východ na absolutní rozměry po otočení referenční oblasti do tohoto směru.
    void turnTo4​(ITurnable4 turnable)
    Zadaný otočný objekt natočený do některého hlavního směru otočí do svého směru, který musí být také hlavním směrem, tj. jedním ze směrů EAST, NORTH, WEST, SOUTH.
    void turnTo8​(ITurnable8 turnable)
    Zadaný otočný objekt natočený do některého směru otočí do svého směru.
    static Direction8 valueOf​(java.lang.String name)
    Returns the enum constant of this type with the specified name.
    static Direction8[] values()
    Returns an array containing the constants of this enum type, in the order they are declared.
    static Direction8[] values4()
    Vrátí vektor se čtyřmi hlavními světovými stranami.

    Methods inherited from class java.lang.Enum

    clone, compareTo, describeConstable, equals, finalize, getDeclaringClass, hashCode, name, ordinal, toString, valueOf

    Methods inherited from class java.lang.Object

    getClass, notify, notifyAll, wait, wait, wait
  • Enum Constant Details

  • Field Details

    • NUM_DIRS

      public static final int NUM_DIRS
      Celkový počet definovaných směrů.
  • Method Details

    • values

      public static Direction8[] values()
      Returns an array containing the constants of this enum type, in the order they are declared.
      Returns:
      an array containing the constants of this enum type, in the order they are declared
    • valueOf

      public static Direction8 valueOf​(java.lang.String name)
      Returns the enum constant of this type with the specified name. The string must match exactly an identifier used to declare an enum constant in this type. (Extraneous whitespace characters are not permitted.)
      Parameters:
      name - the name of the enum constant to be returned.
      Returns:
      the enum constant with the specified name
      Throws:
      java.lang.IllegalArgumentException - if this enum type has no constant with the specified name
      java.lang.NullPointerException - if the argument is null
    • get

      public static Direction8 get​(java.lang.String name)
      Vrátí směr se zadaným názvem nebo zkratkou. Bohužel není možno pojmenovat tuto metodu valueOf(), protože takto nazvanou metodu definuje překladač v této třídě takže ji není možno přebít vlastní verzí.
      Parameters:
      name - Název požadovaného směru nebo jeho zkratka; při zadávání nezáleží na velikosti písmen
      Returns:
      Požadovaný směr
      Throws:
      java.lang.IllegalArgumentException - Neexistuje-li směr se zadaným názvem nebo zkratkou
    • get

      public static Direction8 get​(int index)
      Vrátí směr se zadaným indexem. Směry mají indexy přiřazené postupně podle výskytu směru při otáčení proti směru hodinových ručiček. EAST má index 0, NORTH_EAST 1 a tak dále až po SOUTH_EAST s indexem 7. Za index je však možno dosadit jakékoliv celé číslo, které se přepočte jako počet otoček o 45°. Směr NOWHERE je při tomto přepočtu přeskakován.
      Parameters:
      index - Index požadovaného směru
      Returns:
      Požadovaný směr
    • cardinals

      public static java.util.List<Direction8> cardinals()
      Vrátí neměnný seznam se čtyřmi hlavními světovými stranami.
      Returns:
      Požadovaný seznam
    • values4

      public static Direction8[] values4()
      Vrátí vektor se čtyřmi hlavními světovými stranami.
      Returns:
      Požadovaný vektor
    • prohibitNowhere

      public static boolean prohibitNowhere​(boolean prohibit)
      Nastaví, zda budou povoleny operace se směrem NOWHERE. Nejsou-li operace povoleny, vyhazují metody při použití tohoto směru výjimku IllegalStateException. Jsou-li operace povoleny, pak objekt natočený do směru NOWHERE zůstává v tomto "směru" po jakémkoliv otočení a při jakémkoliv přesunu zůstává na místě.
      Parameters:
      prohibit - true mají-li se operace zakázat, false mají-li se povolit
      Returns:
      Původní nastavení tohoto příznaku
    • getShortcut

      public java.lang.String getShortcut()
      Vrátí zkratku názvu daného směru.
      Returns:
      Požadovaná zkratka
    • isCardinal

      public boolean isCardinal()
      Vrátí informaci o tom, je-li daný směr jedním ze 4 hlavních směrů, tj. jedná-li se o jeden ze směrů EAST, NORTH, WEST, SOUTH.
      Returns:
      Jedná-li se o hlavní směr, vrátí true, jinak vrátí false
    • ordinal4

      public int ordinal4()
      Vrátí index daného hlavního směru v rámci hlavních směrů.
      Returns:
      Požadovaný index
    • nextPosition

      public Position nextPosition​(Position position)
      Vrátí pozici sousedního políčka v daném směru.
      Parameters:
      position - Pozice stávajícího políčka
      Returns:
      Pozice sousedního políčka v daném směru
    • nextPosition

      public Position nextPosition​(Position position, int distance)
      Vrátí pozici políčka vzdáleného v daném směru o zadanou vzdálenost.
      Parameters:
      position - Pozice stávajícího políčka
      distance - Vzdálenost hledané pozice
      Returns:
      Pozice políčka vzdáleného v daném směru o zadanou vzdálenost
    • nextX

      public int nextX​(int x)
      Obdrží x-vou souřadnici políčka a vrátí x-vou souřadnici sousedního políčka v daném směru.
      Parameters:
      x - Obdržená x-ová souřadnice
      Returns:
      x-ová souřadnice políčka po přesunu o jedno pole v daném směru
    • nextX

      public double nextX​(int x, int distance)
      Obdrží x-vou souřadnici políčka a vrátí x-vou souřadnici políčka vzdáleného v daném směru o zadanou vzdálenost.
      Parameters:
      x - Obdržená x-ová souřadnice
      distance - Vzdálenost políčka v daném směru
      Returns:
      x-ová souřadnice vzdáleného políčka
    • nextY

      public int nextY​(int y)
      Obdrží y-vou souřadnici políčka a vrátí y-vou souřadnici sousedního políčka v daném směru.
      Parameters:
      y - Obdržená y-ová souřadnice
      Returns:
      y-ová souřadnice sousedního políčka v daném směru
    • nextY

      public double nextY​(int y, int distance)
      Obdrží x-vou souřadnici políčka a vrátí x-vou souřadnici políčka vzdáleného v daném směru o zadanou vzdálenost.
      Parameters:
      y - Obdržená y-ová souřadnice
      distance - Vzdálenost políčka v daném směru
      Returns:
      y-ová souřadnice vzdáleného políčka
    • dx

      public int dx()
      Vrátí změnu vodorovné souřadnice při přesunu na sousední pole v daném směru.
      Returns:
      Změna x-ové souřadnice při přesunu o jedno pole v daném směru
    • dy

      public int dy()
      Vrátí změnu svislé souřadnice při přesunu na sousední pole v daném směru.
      Returns:
      Změna y-ové souřadnice při přesunu o jedno pole v daném směru
    • leftTurn

      public Direction8 leftTurn()
      Vrátí směr otočený o 90° vlevo.
      Returns:
      Směr objektu po vyplnění příkazu vlevo v bok
    • rightTurn

      public Direction8 rightTurn()
      Vrátí směr otočený o 90° vpravo.
      Returns:
      Směr objektu po vyplnění příkazu vpravo v bok
    • aboutTurn

      public Direction8 aboutTurn()
      Vrátí směr otočený o 180°.
      Returns:
      Směr objektu po vyplnění příkazu čelem vzad.
    • halfLeft

      public Direction8 halfLeft()
      Vrátí směr otočený o 45° vlevo.
      Returns:
      Směr objektu po vyplnění příkazu nalevo vpříč.
    • halfRight

      public Direction8 halfRight()
      Vrátí směr otočený o 45° vpravo.
      Returns:
      Směr objektu po vyplnění příkazu napravo vpříč.
    • ordinalDistanceTo

      public int ordinalDistanceTo​(Direction8 direction)
      Vrátí rozdíl pořadových čísel zadaných směrů, který po přičtení k pořadovému číslu daného směru dá pořadové číslo zadaného parametru.
      Parameters:
      direction - Směr, vůči němuž číslo daného směru přepočítáváme
      Returns:
      Rozdíl pořadových čísel zadaných směrů.
    • turnInArea

      public Area turnInArea​(Area ref, Area inner)
      Přepočítá rozměry zadané oblasti orientované na východ a umístěné v referenční oblasti na nové rozměry po otočení do tohoto směru.
      Parameters:
      ref - Referenční oblast, v níž je otáčená oblast umístěna a vůči níž jsou udávány výchozí souřadnice. V této otočené oblasti má být oblast umístěna po otočení. Přitom se předpokládá, že souřadnice referenční oblasti se otočením nezmění. V tomto ohledu je ideální referenční oblast čtvercová.
      inner - Oblast, jejíž rozměry přepočítáváme a jejíž souřadnice jsou RELATIVNÍ vůči referenční oblasti
      Returns:
      Oblast s novými parametry reprezentujícími původní oblast ¨ po otočení do zadaného směru; její souřadnice jsou udávány jako absolutní
    • turnInArea

      public Area turnInArea​(Area ref, Area inner, Direction8 fromDirection)
      Přepočítá relativní pozici a absolutní rozměry zadané oblasti a umístěné v referenční čtvercové oblasti orientované zadaným směrem na absolutní rozměry po otočení referenční oblasti do tohoto směru.
      Parameters:
      ref - Referenční oblast, v níž je otáčená oblast umístěna a vůči níž jsou udávány výchozí relativní souřadnice. V této otočené oblasti má být oblast umístěna po otočení. Přitom se předpokládá, že souřadnice referenční oblasti se otočením nezmění.
      inner - Oblast, jejíž rozměry přepočítáváme a jejíž souřadnice jsou RELATIVNÍ vůči referenční oblasti
      fromDirection - Směr, do nějž je objekt natočen nyní
      Returns:
      Oblast s novými parametry reprezentujícími původní oblast ¨ po otočení referenční oblasti do zadaného směru; nové souřadnice jsou udávány jako absolutní
    • turnInAreaTo

      public Area turnInAreaTo​(Direction8 toDirection, Area ref, Area inner)
      Přepočítá relativní pozici a absolutní rozměry zadané oblasti a umístěné v referenční čtvercové oblasti orientované na východ na absolutní rozměry po otočení referenční oblasti do tohoto směru.
      Parameters:
      toDirection - Směr, do nějž se má objekt natočit
      ref - Referenční oblast, v níž je otáčená oblast umístěna a vůči níž jsou udávány výchozí relativní souřadnice. V této otočené oblasti má být oblast umístěna po otočení. Přitom se předpokládá, že souřadnice referenční oblasti se otočením nezmění.
      inner - Oblast, jejíž rozměry přepočítáváme a jejíž souřadnice jsou RELATIVNÍ vůči referenční oblasti
      Returns:
      Oblast s novými parametry reprezentujícími původní oblast ¨ po otočení referenční oblasti do zadaného směru; nové souřadnice jsou udávány jako absolutní
    • turnTo4

      public void turnTo4​(ITurnable4 turnable)
      Zadaný otočný objekt natočený do některého hlavního směru otočí do svého směru, který musí být také hlavním směrem, tj. jedním ze směrů EAST, NORTH, WEST, SOUTH.
      Parameters:
      turnable - Otáčený objekt
      Throws:
      java.lang.IllegalStateException - Není-li zadaný objekt otočen do některé ze čtyř hlavních světových stran nebo jej nechceme otočit do některé ze čtyř hlavních světových stran
    • turnTo8

      public void turnTo8​(ITurnable8 turnable)
      Zadaný otočný objekt natočený do některého směru otočí do svého směru.
      Parameters:
      turnable - Otáčený objekt
    • turnBy

      public Direction8 turnBy​(int eighths)
      Vrátí směr otočený o zadaný počet osminek (45°) vlevo.
      Parameters:
      eighths - Počet osminek, o něž se má směr otočit, přičemž záporný počet označuje otočku vpravo
      Returns:
      Směr objektu po vyplnění příkazu