Record Class Bounds

java.lang.Object
java.lang.Record
de.pirckheimer_gymnasium.engine_pi.Bounds
Record Components:
x - Die x-Koordinate der unteren linken Ecke des Rechtecks.
y - Die y-Koordinate der unteren linken Ecke des Rechtecks.
width - Reelle Breite des Rechtecks.
height - Reelle Höhe des Rechtecks.

@Internal public record Bounds(double x, double y, double width, double height) extends Record
Ein nicht-grafisches Rechteck auf der Zeichenebene, das eine allgemeine Fläche beschreibt.
Author:
Michael Andonie
  • Constructor Summary

    Constructors
    Constructor
    Description
    Bounds(double x, double y, double width, double height)
    Creates an instance of a Bounds record class.
  • Method Summary

    Modifier and Type
    Method
    Description
    above(double lowerBound)
    Berechnet, ob dieses Rechteck über einer Grenze liegt und wenn nicht, dann berechnet es eines, das gerade so an der Untergrenze liegt.
    boolean
    Berechnet, ob dieses Bounds oberhalb eines zweiten ist.
    atPosition(double realX, double realY)
    Gibt ein neues Bounds mit selber Höhe und Breite, jedoch einer bestimmten, zu definierenden Position.
    Diese Position ist die der linken unteren Ecke des BoundingRechtecks.
    below(double upperBound)
    Berechnet, ob dieses Rechteck unter einer Grenze liegt, und wenn nicht, dann berechnet es eines, das gerade so an der Obergrenze liegt.
    Erstellt einen Klon von diesem Bounds.
    boolean
    Diese Methoden prüft, ob dieses Bounds-Rechteck ein zweites vollkommen enthält.
    Gemeinsame Ränder zählen AUCH als umschliessen!
    boolean
    Testet, ob ein Punkt sich in dem Bounds befindet.
    final boolean
    Indicates whether some other object is "equal to" this one.
    Berechnet den Mittelpunkt dieses Bounds-Rechtecks in der Zeichenebene.
    Gibt die exakte Position der linken unteren Ecke dieses Bounds-Rechtecks aus.
    final int
    Returns a hash code value for this object.
    double
    Gibt die reelle Höhe aus.
    in(Bounds outer)
    Sollte dieses Bounds-Rechteck nicht voll innerhalb eines bestimmten anderen, äußeren Rechtecks liegen, so wird versucht, dieses Bounds-Rechteck in das andere mit möglichst wenig Verschiebung zu bringen.
    leftOf(double border)
    Berechnet, ob dieses Rechteck links von einer bestimmten Grenze liegt, und wenn nicht, dann berechnet es eines, das gerade so an der rechten Extremgrenze liegt.
    Berechnet ein neues Bounds mit denselben Maßen wie dieses, jedoch um einen bestimmten Vector verschoben.
    Berechnet die vier Eckpunkte des umfassenden Bounds.
    rightOf(double border)
    Berechnet, ob dieses Rechteck rechts von einer bestimmten Grenze liegt, und wenn nicht, dann berechnet es eines, das gerade so an der linken Extremgrenze liegt.
    Berechnet aus diesem und einem weiteren Bounds ein neues, dass die beiden genau fasst.
    Gibt eine String-Repräsentation dieses Objektes aus.
    double
    Gibt die reelle Breite aus.
    Gleicht das eigene Zentrum mit der Mitte eines anderen Bounds ab.
    Gibt ein neues Bounds mit derselben Höhe und Breite zurück, das seinen Mittelpunkt genau im angegebenen Zentrum hat.
    double
    x()
    Gibt die reelle X-Koordinate der unteren linken Ecke aus.
    double
    y()
    Gibt die reelle Y-Koordinate der unteren linken Ecke aus.

    Methods inherited from class java.lang.Object

    finalize, getClass, notify, notifyAll, wait, wait, wait
  • Constructor Details

    • Bounds

      public Bounds(double x, double y, double width, double height)
      Creates an instance of a Bounds record class.
      Parameters:
      x - the value for the x record component
      y - the value for the y record component
      width - the value for the width record component
      height - the value for the height record component
  • Method Details

    • withCenterAtBoundsCenter

      public Bounds withCenterAtBoundsCenter(Bounds bounds)
      Gleicht das eigene Zentrum mit der Mitte eines anderen Bounds ab.
      Parameters:
      bounds - Das Bounds, an dessen Mitte auch die Mitte dieses Rechtecks angeglichen werden soll.
    • withCenterPoint

      public Bounds withCenterPoint(Vector point)
      Gibt ein neues Bounds mit derselben Höhe und Breite zurück, das seinen Mittelpunkt genau im angegebenen Zentrum hat.
      Parameters:
      point - Das Zentrum des zurückzugebenden Bounds-Rechtecks.
      Returns:
      Ein Bounds mit der gleichen Höhe und Breite wie dieses, jedoch so verschoben, dass es mit seiner Mitte im angegebenen Zentrum liegt.
    • getCenter

      public Vector getCenter()
      Berechnet den Mittelpunkt dieses Bounds-Rechtecks in der Zeichenebene.
      Returns:
      Der Punkt mit den Koordinaten, der im Zentrum des Rechtecks liegt.
    • moveBy

      public Bounds moveBy(Vector v)
      Berechnet ein neues Bounds mit denselben Maßen wie dieses, jedoch um einen bestimmten Vector verschoben.
      Parameters:
      v - Der Vector, der die Verschiebung des neuen Objektes von diesem beschreibt.
      Returns:
      Ein neues Bounds-Objekt, das dieselben Maße wie dieses hat, jedoch um die entsprechende Verschiebung verschoben ist.
    • smallestCommon

      public Bounds smallestCommon(Bounds bounds)
      Berechnet aus diesem und einem weiteren Bounds ein neues, dass die beiden genau fasst.
      Parameters:
      bounds - Das zweite Rechteck für die Berechnung
      Returns:
      Ein neues Bounds, dass die beiden Rechtecke genau umfasst.
    • above

      public Bounds above(double lowerBound)
      Berechnet, ob dieses Rechteck über einer Grenze liegt und wenn nicht, dann berechnet es eines, das gerade so an der Untergrenze liegt.
      Parameters:
      lowerBound - Die Grenze, auf der das Ergebnis maximal liegen darf.
      Returns:
      Ein Bounds derselben Höhe und Breite wie dieses, das in jedem Fall über, oder auf der Grenze liegt, wenn es passt, ist es this.
    • below

      public Bounds below(double upperBound)
      Berechnet, ob dieses Rechteck unter einer Grenze liegt, und wenn nicht, dann berechnet es eines, das gerade so an der Obergrenze liegt.
      Parameters:
      upperBound - Die Grenze, auf der das Ergebnis maximal liegen darf.
      Returns:
      Ein Bounds derselben Höhe und Breite wie dieses, das in jedem Fall unter oder auf der Grenze liegt, wenn es passt, ist es this.
    • rightOf

      public Bounds rightOf(double border)
      Berechnet, ob dieses Rechteck rechts von einer bestimmten Grenze liegt, und wenn nicht, dann berechnet es eines, das gerade so an der linken Extremgrenze liegt.
      Parameters:
      border - Der Wert, den das Ergebnisrechteck maximal links sein darf
      Returns:
      Ein Bounds derselben Höhe und Breite, das in jedem rechts jenseits oder auf der Grenze liegt.
      Wenn diese Eigenschaften bereits von diesem Objekt erfüllt werden, so wird this zurückgegeben.
    • leftOf

      public Bounds leftOf(double border)
      Berechnet, ob dieses Rechteck links von einer bestimmten Grenze liegt, und wenn nicht, dann berechnet es eines, das gerade so an der rechten Extremgrenze liegt.
      Parameters:
      border - Der Wert, den das Ergebnisrechteck maximal rechts sein darf
      Returns:
      Ein Bounds derselben Höhe und Breite, das in jedem Fall links jenseits oder auf der Grenze liegt.
      Wenn diese Eigenschaften bereits von diesem Objekt erfüllt werden, so wird this zurückgegeben.
    • atPosition

      public Bounds atPosition(double realX, double realY)
      Gibt ein neues Bounds mit selber Höhe und Breite, jedoch einer bestimmten, zu definierenden Position.
      Diese Position ist die der linken unteren Ecke des BoundingRechtecks.
      Parameters:
      realX - Die X-Koordinate der linken unteren Ecke des BoundingRechtecks
      realY - Die Y-Koordinate der linken unteren Ecke des BoundingRechtecks
      Returns:
      Ein neues Bounds mit der eingegebenen Position und derselben Breite und Höhe.
    • contains

      public boolean contains(Vector v)
      Testet, ob ein Punkt sich in dem Bounds befindet.
      Parameters:
      v - Der Punkt, der getestet werden soll
      Returns:
      true, wenn der Punkt in dem Bounds ist
    • points

      public Vector[] points()
      Berechnet die vier Eckpunkte des umfassenden Bounds.
      Returns:
      Array mit den vier Eckpunkten des umfassenden Bounds.
    • contains

      public boolean contains(Bounds inner)
      Diese Methoden prüft, ob dieses Bounds-Rechteck ein zweites vollkommen enthält.
      Gemeinsame Ränder zählen AUCH als umschliessen!
      Parameters:
      inner - Das innere Bounds-Rechteck. Es soll geprüft werden, ob dieses vollkommen von dem die Methode ausführenden Rechteck umschlossen wird.
      Returns:
      wahr, wenn das ausführende Bounds-Rechteck das als Argument übergebene Bounds voll enthält, sonst falsch.
    • above

      public boolean above(Bounds r)
      Berechnet, ob dieses Bounds oberhalb eines zweiten ist.
      Parameters:
      r - Das Rechteck, bei dem dies getestet werden soll
      Returns:
      wahr, wenn dieses Rechteck rechts von dem anderen ist, sonst falsch.
    • in

      public Bounds in(Bounds outer)
      Sollte dieses Bounds-Rechteck nicht voll innerhalb eines bestimmten anderen, äußeren Rechtecks liegen, so wird versucht, dieses Bounds-Rechteck in das andere mit möglichst wenig Verschiebung zu bringen. Diese Methode wird intern für die Beschränkung des Kamera-Bereiches genutzt.
      Achtung: Voraussetzung dafür, dass dieser Algorithmus Sinn macht ist, dass das äußere Rechteck ausreichend größer als dieses ist!
      Parameters:
      outer - Das äußere Rechteck, innerhalb dessen sich das Ergebnis-Rechteck befinden wird (sollte das äußere ausreichend groß sein).
      Returns:
      Das Ergebnis-Rechteck, das sich im äußeren Rechteck befinden wird.
    • clone

      public Bounds clone()
      Erstellt einen Klon von diesem Bounds.
      Overrides:
      clone in class Object
      Returns:
      Ein neues Bounds mit genau demselben Zustand wie dieses.
    • toString

      public String toString()
      Gibt eine String-Repräsentation dieses Objektes aus.
      Specified by:
      toString in class Record
      Returns:
      Die String-Repräsentation dieses Objektes. Hierin wird Auskunft über alle 4 ausschlaggebenden Zahlen (x, y, getWidth und getHeight gemacht).
    • x

      public double x()
      Gibt die reelle X-Koordinate der unteren linken Ecke aus.
      Returns:
      Die reelle X-Koordinate der unteren linken Ecke dieses BoundingRechtecks.
      See Also:
      • ()
      • ()
      • ()
    • y

      public double y()
      Gibt die reelle Y-Koordinate der unteren linken Ecke aus.
      Returns:
      Die reelle Y-Koordinate der unteren linken Ecke dieses Bounds-Rechtecks.
      See Also:
      • ()
      • ()
      • ()
    • width

      public double width()
      Gibt die reelle Breite aus.
      Returns:
      Die reelle Breite dieses Bounds-Rechtecks.
      See Also:
      • ()
      • ()
      • ()
    • height

      public double height()
      Gibt die reelle Höhe aus.
      Returns:
      Die reelle Höhe dieses Bounds-Rechtecks.
      See Also:
      • ()
      • ()
      • ()
    • getPosition

      public Vector getPosition()
      Gibt die exakte Position der linken unteren Ecke dieses Bounds-Rechtecks aus.
      Returns:
      die Position des Bounds-Rechtecks, beschrieben durch den Punkt der linken unteren Ecke dieses Objekts.
    • hashCode

      public final int hashCode()
      Returns a hash code value for this object. The value is derived from the hash code of each of the record components.
      Specified by:
      hashCode in class Record
      Returns:
      a hash code value for this object
    • equals

      public final boolean equals(Object o)
      Indicates whether some other object is "equal to" this one. The objects are equal if the other object is of the same class and if all the record components are equal. All components in this record class are compared with '=='.
      Specified by:
      equals in class Record
      Parameters:
      o - the object with which to compare
      Returns:
      true if this object is the same as the o argument; false otherwise.