Class Sphere

java.lang.Object
hoverball.math.Sphere

public final class Sphere
extends java.lang.Object
Die Klasse Sphere repräsentiert die Sphäre einer dreidimensionalen Kugel.

Eine Sphäre wird lediglich durch ihren Radius definiert. Sie ist im Gegensatz zu Matrix, Vektor und komplexer Zahl ein eher starres Objekt. Mit ihr kann nicht viel "gerechnet" werden, jedoch stellt die Klasse Sphere eine kleine Bibliothek sphärischer Operationen zu Verfügung, die den Umgang mit Matrizen, Vektoren und komplexen Zahlen sehr erleichtert.

  • Field Summary

    Fields 
    Modifier and Type Field Description
    double per
    Umfang der Sphäre
    double rad
    Radius der Sphäre
  • Constructor Summary

    Constructors 
    Constructor Description
    Sphere​(double r)
    Erzeugt ein Sphäre mit angegebenem Radius.
  • Method Summary

    Modifier and Type Method Description
    Matrix base​(Vector v)
    Erzeugt aus einem gegebenen Vektor eine Orthonormalbasis.
    Matrix base​(Vector v, double alpha)
    Erzeugt aus einem gegebenen Vektor und einem Drehwinkel eine Orthonormalbasis.
    double diff​(Vector a, Vector b)
    Berechnet den Abstand zweier Vektoren auf der Sphäre.
    boolean equals​(java.lang.Object S)
    Vergleicht mit einer Sphäre
    static Vector euler​(Matrix M)
    Berechnet den Euler-Vektor zu einer Matrix.
    static Matrix euler​(Vector v)
    Berechnet die Matrix zu einem Euler-Vektor.
    int hashCode()
    Berechnet den Hash-Code.
    java.lang.String toString()
    String-Repräsentation.
    Vector warp​(Complex c)
    Krümmt eine Ebenen-Position auf die Sphäre.
    Matrix warp​(Complex c, double alpha)
    Krümmt eine orientierte Ebenen-Position auf die Sphäre.
    Vector warp​(Matrix M)
    Krümmt eine orientierte Sphären-Position auf die Ebene.
    Complex warp​(Vector v)
    Krümmt eine Sphären-Position auf die Ebene.

    Methods inherited from class java.lang.Object

    clone, finalize, getClass, notify, notifyAll, wait, wait, wait
  • Field Details

    • rad

      public final double rad
      Radius der Sphäre
    • per

      public final double per
      Umfang der Sphäre
  • Constructor Details

    • Sphere

      public Sphere​(double r)
      Erzeugt ein Sphäre mit angegebenem Radius.
      Parameters:
      r - Radius
  • Method Details

    • hashCode

      public int hashCode()
      Berechnet den Hash-Code.
      Overrides:
      hashCode in class java.lang.Object
      Returns:
      den Hash-Code
    • toString

      public java.lang.String toString()
      String-Repräsentation.
      Overrides:
      toString in class java.lang.Object
      Returns:
      den String
    • equals

      public boolean equals​(java.lang.Object S)
      Vergleicht mit einer Sphäre
      Overrides:
      equals in class java.lang.Object
      Parameters:
      S - Sphäre
      Returns:
      die Gleichheit
    • diff

      public final double diff​(Vector a, Vector b)
      Berechnet den Abstand zweier Vektoren auf der Sphäre.

      Ist R der Sphären-Radius, und sind a, b != 0 die beiden Vektoren, so berechnet diese Funktion also:

      R * acos(< a, b > / |a||b|)

      Parameters:
      a - Vektor
      b - Vektor
      Returns:
      den Abstand
    • base

      public final Matrix base​(Vector v)
      Erzeugt aus einem gegebenen Vektor eine Orthonormalbasis.

      Ist v != 0 der gegebene Vektor und (a,b,c) die Orthonormalbasis, so gilt:

      • c = v / |v|
      • b = z x c   [ z = (0,0,1) ]
      • a = b x c
      Parameters:
      v - Vektor
      Returns:
      die Basis
    • base

      public final Matrix base​(Vector v, double alpha)
      Erzeugt aus einem gegebenen Vektor und einem Drehwinkel eine Orthonormalbasis.

      Die Orthonormalbasis (a,b,c) wird zuerst aus dem gegebenen Vektor erzeugt und anschließend für den gegebenen Drehwinkel um ihre c-Achse gedreht.

      Parameters:
      v - Vektor
      alpha - Winkel
      Returns:
      die Basis
    • warp

      public final Vector warp​(Complex c)
      Krümmt eine Ebenen-Position auf die Sphäre.
      Parameters:
      c - komplexe Zahl
      Returns:
      den Sphären-Vektor
    • warp

      public final Matrix warp​(Complex c, double alpha)
      Krümmt eine orientierte Ebenen-Position auf die Sphäre.

      Die Blickwinkel der Ebene sind so parametrisiert, dass Winkel vom Wert 0 den Blick strahlenförmig entlang der Verbindungs-Geraden von Ursprung durch Position nach außen richten.

      Parameters:
      c - komplexe Zahl
      alpha - Blickwinkel
      Returns:
      die Sphären-Matrix
    • warp

      public final Complex warp​(Vector v)
      Krümmt eine Sphären-Position auf die Ebene.
      Parameters:
      v - Sphären-Vektor
      Returns:
      die komplexe Zahl
    • warp

      public final Vector warp​(Matrix M)
      Krümmt eine orientierte Sphären-Position auf die Ebene.

      Die Blickwinkel der Ebene sind so parametrisiert, dass Winkel vom Wert 0 den Blick strahlenförmig entlang der Verbindungs-Geraden von Ursprung durch Position nach außen richten.

      Die beiden Rückgabewerte Position und Blickrichtung werden aus praktischen Gründen in ein Vector-Objekt gepackt und sollten etwa mit folgendem Programm-Code sofort wieder zerlegt werden:

      Vector v = Sphere.warp(M);         // "(c,a) = Sphere.warp(M);"
       
      Complex c = new Complex(cf.x,v.y);  // c = Position
      double a = v.z;                    // a = Blickrichtung
      
      Parameters:
      M - Sphären-Matrix
      Returns:
      die komplexe Zahl und den Blickinkel als Vector-Objekt
    • euler

      public static final Matrix euler​(Vector v)
      Berechnet die Matrix zu einem Euler-Vektor.
      Parameters:
      v - Euler-Vektor
      Returns:
      die Matrix
    • euler

      public static final Vector euler​(Matrix M)
      Berechnet den Euler-Vektor zu einer Matrix.
      Parameters:
      M - Matrix
      Returns:
      den Euler-Vektor