jrobots.utils
Class Angle

java.lang.Object
  extended by jrobots.utils.Angle
All Implemented Interfaces:
java.io.Serializable, java.lang.Cloneable

public class Angle
extends java.lang.Object
implements java.io.Serializable, java.lang.Cloneable

Diese Klasse repräsentiert einen Winkel. Der Winkel kann im Gradmaß- (0..360) oder Bogenmaß-System (0..2*Pi) angegeben werden. 0 Grad ist rechts, 90 Grad zeigt nach unten, etc. Der Winkel steigt im Uhrzeigersinn.

Der Winkel kann nur im Konstruktor festgelegt werden. Danach ist das Objekt unveränderlich. Jede Rechenoperation erzeugt also ein neues Objekt.

See Also:
Serialized Form

Field Summary
 double angle
           
 
Constructor Summary
Angle()
          Erzeugt einen Winkel, der auf 0 Grad steht.
Angle(double value, java.lang.String units)
          Erzeugt einen Winkel mit dem übergebenen Wert.
 
Method Summary
 Angle add(Angle a)
          Rotiert den aktuellen Winkel um a im Uhrzeigersinn.
 Angle angularDistance(Angle a)
          Berechnet die Winkeldistanz des gegebenen Winkels (a) minus diesen Winkels (this) auf der Kreisbahn.
 Angle clone()
           
static double coneAngle(Angle d1, Angle d2)
          calculates the not commutative cone angle between d1 and d2
 Angle getNegative()
          Liefert eine negierte Kopie des Winkelobjekts zurück.
 Angle getNextQuadrant()
          Liefert den Winkel um 90° im Uhrzeigersinn versetzt (+90°) und normalisiert zurück.
 Angle getOpposite()
          Liefert den normalisierten entgegengesetzen Winkel zurück.
 Angle getPreviousQuadrant()
          Liefert den Winkel um 90° gegen Uhrzeigersinn versetzt (-90°) und normalisiert zurück.
 double getValueAsDegrees()
          Liefert den Wert des Winkels im Gradmaß zurück.
 double getValueAsRadians()
          Liefert den Wert des Winkels im Bogenmaß zurück.
Tipp: die Math-Klasse verwendet das Bogenmaß
 boolean isPositive()
          Gibt Auskunft darüber, welches Vorzeichen der Winkel hat.
 Angle mult(double factor)
          Multipliziert den Wert des aktuellen Winkels mit dem übergebenen Faktor.
 Angle normalize()
          Falls der Winkel kleiner als 0 Grad oder größer als 360 Grad ist, bildet ihn diese Funktion wieder ab auf 0..360 Grad.
(Kann als Sicherung gg.
 Angle sub(Angle a)
          Rotiert den aktuellen Winkel um a gegen den Uhrzeigersinn.
 java.lang.String toString()
          Liefert einen String der Form "Angle:1.23°" (ohne Anführungszeichen) zurück.
 
Methods inherited from class java.lang.Object
equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

angle

public final double angle
Constructor Detail

Angle

public Angle()
Erzeugt einen Winkel, der auf 0 Grad steht.


Angle

public Angle(double value,
             java.lang.String units)
Erzeugt einen Winkel mit dem übergebenen Wert. Der Wert kann im Grad- oder Bogenmaß angegeben werden.
Beispiele:
new Angle(3.14, "Radians")
new Angle(180, "Degrees")
Anmerkung: es reicht, wenn der erste Buchstabe ein "r" oder "d" ist.

Parameters:
value - Wert des zu erstellenden Winkels
units - Gibt an, ob der erste Parameter im Bogen- oder Gradmaß zu interpretieren ist.
Method Detail

normalize

public Angle normalize()
Falls der Winkel kleiner als 0 Grad oder größer als 360 Grad ist, bildet ihn diese Funktion wieder ab auf 0..360 Grad.
(Kann als Sicherung gg. Überlauf benutzt werden)

Returns:
normalisierte Kopie

getValueAsDegrees

public double getValueAsDegrees()
Liefert den Wert des Winkels im Gradmaß zurück.

Returns:
Wert des Winkels als double

getValueAsRadians

public double getValueAsRadians()
Liefert den Wert des Winkels im Bogenmaß zurück.
Tipp: die Math-Klasse verwendet das Bogenmaß

Returns:
Wert des Winkels als double

add

public Angle add(Angle a)
Rotiert den aktuellen Winkel um a im Uhrzeigersinn.

Parameters:
a - zu addierender Winkel
Returns:
neuer, rotierter Winkel

sub

public Angle sub(Angle a)
Rotiert den aktuellen Winkel um a gegen den Uhrzeigersinn.

Parameters:
a - zu subtrahierender Winkel
Returns:
neuer, rotierter Winkel

mult

public Angle mult(double factor)
Multipliziert den Wert des aktuellen Winkels mit dem übergebenen Faktor.

Parameters:
factor - Faktor
Returns:
neuer, skalierter Winkel

getNegative

public Angle getNegative()
Liefert eine negierte Kopie des Winkelobjekts zurück.
Vorsicht: Zeigt nicht zwangsläufig in die entgegengesetzte Richtung.

Returns:
negierte Kopie

getOpposite

public Angle getOpposite()
Liefert den normalisierten entgegengesetzen Winkel zurück.

Returns:
negierte Kopie

getNextQuadrant

public Angle getNextQuadrant()
Liefert den Winkel um 90° im Uhrzeigersinn versetzt (+90°) und normalisiert zurück.

Returns:
negierte Kopie

getPreviousQuadrant

public Angle getPreviousQuadrant()
Liefert den Winkel um 90° gegen Uhrzeigersinn versetzt (-90°) und normalisiert zurück.

Returns:
negierte Kopie

isPositive

public boolean isPositive()
Gibt Auskunft darüber, welches Vorzeichen der Winkel hat.

Returns:
true, falls Winkel > 0 ist
false, falls Winkel <= 0 ist

angularDistance

public Angle angularDistance(Angle a)
Berechnet die Winkeldistanz des gegebenen Winkels (a) minus diesen Winkels (this) auf der Kreisbahn.
So kann herausgefunden werden, in welcher Drehrichtung sich der Winkel a befindet.
Beide Winkel werden dazu normalisiert.

Parameters:
a -
Returns:
nicht normalisierten Winkel
positives Vorzeichen bedeutet im Uhrzeigersinn
negatives Vorzeichen bedeutet gegen Uhrzeigersinn

coneAngle

public static final double coneAngle(Angle d1,
                                     Angle d2)
calculates the not commutative cone angle between d1 and d2

The cone is assumed to emanate from d1 in the direction where d2 lies closest. A clockwise direction results in a positive angle, a anticlockwise direction in a negative angle. Opposite directions result in the Angle Pi.

Note: calculation will normalize both angles.

This method is a gift from the 2SEPS project.

Parameters:
d1 -
d2 -
Returns:
angle of the cone spanned by the two given directions in ]-Pi; Pi];

toString

public java.lang.String toString()
Liefert einen String der Form "Angle:1.23°" (ohne Anführungszeichen) zurück. Die Zahl ist im Gradmaß zu interpretieren.

Overrides:
toString in class java.lang.Object
Returns:
String

clone

public Angle clone()
Overrides:
clone in class java.lang.Object