|
Roblet®- Bibliothek 2.3 (10Jan10) |
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Object org.roblet.math.Robiant
Diese Klasse bietet Funktionen zur Arbeit mit Winkel-Werten in Roboter-Radiant an. Robiant ist eine Kurzform von Roboter-Radiant.
Winkelangaben in Roboter-Radiant (Robiant) erfolgen mittels
ganzahliger Werte unter Ausnutzung des ganzen Wertebereiches
des Java™-Typs int
.
Jedem int-Wert ist dabei genau ein Robiant zugeordnet und
umgekehrt.
Zu jedem Winkel gehört genau ein Robiant.
Zu jedem Robiant gehören unendlich viele Winkel
(... = -270 Grad = 90 Grad = 450 Grad = ...).
Zur Vorbeugung von Mißverständnissen:
Winkel-Werte werden nicht in Form von Instanzen dieser Klasse
gespeichert, sondern in Variablen des Typs int
,
und diese Klasse dient nur der Konvertierung und Bearbeitung.
int
erfolgt derart, daß
0 Grad = 0 Radiant = 0x00000000 Robiantsind. Weiterhin ist
90 Grad = PI/2 Radiant = 0x40000000 Robiant.(Grad- und Radiant-Werte in double oder float; PI = java.lang.Math.PI; 0x... kennzeichnet die hexadezimale Darstellung eines int).
Hier sind weiter Werte aufgelistet:
Grad | Radiant | Robiant | Zu beachten |
-270 | -3*PI/2 | 0x40000000 | |
-180 | -PI | 0x80000000 | |
-90 | -PI/2 | 0xC0000000 | |
-45 | -PI/4 | 0xE0000000 | |
0 | 0 | 0x00000000 | |
22,5 | PI/8 | 0x10000000 | |
30 | PI/6 | 0x15555555 | Rundung |
45 | PI/4 | 0x20000000 | |
60 | PI/3 | 0x2AAAAAAA | Rundung |
90 | PI/2 | 0x40000000 | |
120 | 2*PI/3 | 0x55555555 | Rundung |
150 | 5*PI/6 | 0x6AAAAAAA | Rundung |
180 | PI | 0x80000000 | |
270 | 3*PI/2 | 0xC0000000 | |
360 | 2*PI | 0x00000000 | |
450 | 5*PI/2 | 0x40000000 | |
4500 | 25*PI | 0x80000000 |
Diese Rundung wird nur dann wichtig, wenn man Werte direkt vergleicht. Dann ergibt sich, daß wegen der Rundung z.B.
gilt!Robiant. rr2dd (Robiant. dd2rr (150)) != 150
int
hat folgende Vorteile:
int
-Wert ist einem Winkel-Wert zugeordnet
- es gibt keine Lücken.
Daher kann das Addieren von Winkel-Werten einfach über
das Addieren von int
-Werten realisiert werden
- eine nachfolgende Korrektur auf einen Wertebereich entfällt
entsprechend der Konstruktion der Robiant-Werte.
int
gerechnet wird.
float
ergibt sich bei gleichem Speicherbedarf
eine höhere Auflösung.
Die Speicherung in int
hat mindestens folgende
Randerscheinungen:
Von/aus Robiant in/nach |
double-Grad |
float-Grad |
double-Radiant |
float-Radiant |
1. Gruppe:
atan2(int,int)
- Argus-Tangens mit Quadrantenberücksichtigung
cos(int)
- Cosinus eines Roboter-Radiant
sin(int)
- Sinus eines Roboter-Radiant
rcos(int,int)
- Cosinus eines Roboter-Radiant unter Einbeziehung
eines Radius (Amplitude)
rsin(int,int)
- Sinus eines Roboter-Radiant unter Einbeziehung
eines Radius (Amplitude)
Constructor Summary | |
Robiant()
|
Method Summary | |
static int |
atan2(int y,
int x)
Berechnung des Argus-Tangens mit Quadrantenberücksichtigung. |
static double |
cos(int rr)
Berechnung des Cosinus eines Roboter-Radiant. |
static int |
dd2rr(double grad)
double-degree-to-robot-radiant - Konvertiert double-Grad nach Roboter-Radiant. |
static int |
dr2rr(double rad)
double-radiant-to-robot-radiant - Konvertiert double-Radiant nach Roboter-Radiant. |
static int |
fd2rr(float grad)
float-degree-to-robot-radiant - Konvertiert float-Grad nach Roboter-Radiant. |
static int |
fr2rr(float rad)
float-radiant-to-robot-radiant - Konvertiert float-Radiant nach Roboter-Radiant. |
static int |
rcos(int r,
int rr)
Berechnung des Cosinus eines Roboter-Radiant unter Einbeziehung eines Radius (Amplitude). |
static double |
rr2dd(int rr)
robot-radiant-to-double-degree - Konvertiert Roboter-Radiant nach double-Grad. |
static double |
rr2dr(int rr)
robot-radiant-to-double-radiant - Konvertiert Roboter-Radiant nach double-Radiant. |
static float |
rr2fd(int rr)
robot-radiant-to-float-degree - Konvertiert Roboter-Radiant nach float-Grad. |
static float |
rr2fr(int rr)
robot-radiant-to-float-radiant - Konvertiert Roboter-Radiant nach float-Radiant. |
static int |
rsin(int r,
int rr)
Berechnung des Sinus eines Roboter-Radiant unter Einbeziehung eines Radius (Amplitude). |
static double |
sin(int rr)
Berechnung des Sinus eines Roboter-Radiant. |
Methods inherited from class java.lang.Object |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Constructor Detail |
public Robiant()
Method Detail |
public static int dd2rr(double grad)
Achtung: Aus Gründen des Durchsatzes erfolgt keine Prüfung der übergebenen Werte auf einen sinnvollen Inhalt. Die übergebenen Werte müssen also im angegebenen Wertebereich liegen.
Die Berechnung erfolgt in der Form:
(int) ((grad / -180.0) * 0x80000000)
grad
- Zu konvertierender Wert in Grad.
Er muß im Wertebereich
-180 Grad <= grad < 180 Grad liegen.
rr2dd(int)
public static double rr2dd(int rr)
Die Berechnung erfolgt in der Form:
(rr / ((double) 0x80000000)) * -180.0
rr
- Zu konvertierender Wert in Roboter-Radiant.
dd2rr(double)
public static int fd2rr(float grad)
Achtung: Aus Gründen des Durchsatzes erfolgt keine Prüfung der übergebenen Werte auf einen sinnvollen Inhalt. Die übergebenen Werte müssen also im angegebenen Wertebereich liegen.
Die Berechnung erfolgt in der Form:
(int) ((grad / -180f) * 0x80000000)
grad
- Zu konvertierender Wert in Grad.
Er muß im Wertebereich
-180 Grad <= grad < 180 Grad liegen.
rr2fd(int)
public static float rr2fd(int rr)
Die Berechnung erfolgt in der Form:
(rr / ((float) 0x80000000)) * -180f
rr
- Zu konvertierender Wert in Roboter-Radiant.
fd2rr(float)
public static int dr2rr(double rad)
Achtung: Aus Gründen des Durchsatzes erfolgt keine Prüfung der übergebenen Werte auf einen sinnvollen Inhalt. Die übergebenen Werte müssen also im angegebenen Wertebereich liegen.
Die Berechnung erfolgt in der Form:
(int) ((rad / -Math.PI) * 0x80000000)
rad
- Zu konvertierender Wert in Radiant.
Er muß im Wertebereich
-PI Radiant <= rad < PI Radiant liegen.
rr2dr(int)
public static double rr2dr(int rr)
Die Berechnung erfolgt in der Form:
(rr / ((double) 0x80000000)) * -Math.PI
rr
- Zu konvertierender Wert in Roboter-Radiant.
dr2rr(double)
public static int fr2rr(float rad)
Achtung: Aus Gründen des Durchsatzes erfolgt keine Prüfung der übergebenen Werte auf einen sinnvollen Inhalt. Die übergebenen Werte müssen also im angegebenen Wertebereich liegen.
Die Berechnung erfolgt in der Form:
(int) ((rad / -Math.PI) * 0x80000000)
rad
- Zu konvertierender Wert in Radiant.
Er muß im Wertebereich
-PI Radiant <= rad < PI Radiant liegen.
rr2fr(int)
public static float rr2fr(int rr)
Die Berechnung erfolgt in der Form:
(float) ((rr / ((float) 0x80000000)) * -Math.PI)
rr
- Zu konvertierender Wert in Roboter-Radiant.
fr2rr(float)
public static int atan2(int y, int x)
y
- y-Wert für die Berechnungx
- x-Wert für die Berechnung
atan2
der Parametercos(int)
,
sin(int)
public static double cos(int rr)
rr
- Roboter-Radiant-Wert für die Cosinus-Berechnung
atan2(int,int)
,
sin(int)
public static double sin(int rr)
rr
- Roboter-Radiant-Wert für die Sinus-Berechnung
atan2(int,int)
,
cos(int)
public static int rcos(int r, int rr)
r
- Radius-Wert, mit dem der Cosinus abschließend
multipliziert wirdrr
- Roboter-Radiant-Wert für die Cosinus-Berechnung
rsin(int,int)
,
cos(int)
public static int rsin(int r, int rr)
r
- Radius-Wert, mit dem der Sinus abschließend
multipliziert wirdrr
- Roboter-Radiant-Wert für die Sinus-Berechnung
rcos(int,int)
,
sin(int)
|
Roblet®-Bibliothek 2.3 (10Jan10) | |||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |