## cds.astro Class Coocube

```java.lang.Object
cds.astro.Coo
cds.astro.Coocube
```
All Implemented Interfaces:
java.io.Serializable, java.lang.Cloneable

`public class Coocubeextends Coo`

The routines provided in this module define a "coordinate" as a face number (between 1 and 6), and two (X,Y) values in the range [-1,1[ representing the projection of a direction onto a cube. The face numbers, and the axis orientations, are:

``` 1 = +z X=+y Y=-x  (North Pole)
2 = +y X=-z Y=-x  (azimuth +90)
3 = +x X=+y Y=+z  (azimuth 0)
4 = -x X=-z Y=-y  (azimuth 180)
5 = -y X=+x Y=+z  (azimuth -90)
6 = -z X=+x Y=-y  (South Pole)
+---------+
|    ^    |
|    |x   |
|<---+    |
|    1    |
+---------+---------+---------+---------+
|    ^    |    ^    |         |         |
|    |    |    |    |         |         |
|   5+--->|  3 +--->|   2+--->|   4+--->|
|      x  |      x  |   x|    |   x|    |
|         |         |    v    |    v    |
+---------+---------+---------+---------+
|    ^    |
|    |x   |
|<---+    |
|    6    |
+---------+

```
These coordinates can be used to address accurately a point with 2 floating-point numbers associated to a 3-bit face number

Serialized Form

Field Summary
` byte` `face`
The face number in range 1 to 6 -- zero for undefined.
` double` `X`
The position on the face, a number between -1 and 1.
` double` `Y`
The position on the face, a number between -1 and 1.

Fields inherited from class cds.astro.Coo
`decimals, ed, lat, lon, Umatrix3, x, y, z`

Constructor Summary
`Coocube()`
Define the default undefined Coocube
`Coocube(Coo coo)`
Define the Coocube from a Coordinate
```Coocube(int face, double X, double Y)```
Define the Coocube from its components

Method Summary
` java.lang.StringBuffer` ```edit(java.lang.StringBuffer buf, int ndec)```
Edit the Coocube value as f:±X±Y
`static int` `face(double[] u)`
Compute the face number from the unit vector
` void` `set(Coo coo)`
Compute the Coocube coordinates
` void` `set(double[] u)`
Compute the Coocube coordinates from the Direction Cosines
` void` ```set(int face, double X, double Y)```
Compute the Coocube from its (XY) components
`static int` ```setUvec(int face, double X, double Y, double[] u)```
Transformation (face + Projections) --> unit vector
`static int` ```setXY(double[] u, double[] XY)```
Compute the (face, X, Y)
` java.lang.String` `toString()`
Default Edition of the Coocube values

Methods inherited from class cds.astro.Coo
`add, add, angle, clone, copyAngles, copyUvector, dist2, dist2, dist2, distance, distance, distc, dotprod, dotprod, dotprod, dump, editCoo, equals, eulerMatrix, getLat, getLon, localMatrix, localMatrix, localMatrix, moveMatrix, norm2, normalize, normalize, parse, parsing, perpendicular, posAngle, rotate_1, rotate, rotateVector_1, rotateVector, set, set, set, set, setDecimals, setUvec, sub, sub, toString, toString, toString, vecprod, vecprod, vecprod`

Methods inherited from class java.lang.Object
`finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait`

Field Detail

### face

`public byte face`
The face number in range 1 to 6 -- zero for undefined.

### X

`public double X`
The position on the face, a number between -1 and 1.

### Y

`public double Y`
The position on the face, a number between -1 and 1.

Constructor Detail

### Coocube

`public Coocube()`
Define the default undefined Coocube

### Coocube

`public Coocube(Coo coo)`
Define the Coocube from a Coordinate

### Coocube

```public Coocube(int face,
double X,
double Y)```
Define the Coocube from its components

Parameters:
`face` - the face number between 1 and 6 face is set to 0 in case of error.
`X` - x position on the face
`Y` - y position on the face
Method Detail

### face

`public static final int face(double[] u)`
Compute the face number from the unit vector

Parameters:
`u` - unit vector (vector of 3 direction cosines)
Returns:
the face number in range 1..6 (0 if error)

### setXY

```public static final int setXY(double[] u,
double[] XY)```
Compute the (face, X, Y)

Parameters:
`u` - the Direction Cosines
`XY` - the (X,Y) components
Returns:
the face number in range 1..6 (0 if error)

### setUvec

```public static final int setUvec(int face,
double X,
double Y,
double[] u)```
Transformation (face + Projections) --> unit vector

Parameters:
`face` - the face number (1 to 6)
`X` - X value of the projection on the face n
`Y` - Y value of the projection on the face n
`u` - the unit vector (modified)
Returns:
the face number

### set

`public final void set(double[] u)`
Compute the Coocube coordinates from the Direction Cosines

Parameters:
`u` - the Direction Cosines

### set

`public final void set(Coo coo)`
Compute the Coocube coordinates

Overrides:
`set` in class `Coo`
Parameters:
`coo` - coordinates of a point

### set

```public final void set(int face,
double X,
double Y)```
Compute the Coocube from its (XY) components

Parameters:
`face` - the face number between 1 and 6 face is set to 0 in case of error.
`X` - x position on the face
`Y` - y position on the face

### edit

```public java.lang.StringBuffer edit(java.lang.StringBuffer buf,
int ndec)```
Edit the Coocube value as f:±X±Y

Overrides:
`edit` in class `Coo`
Parameters:
`buf` - buffer for the edition
`ndec` - number of decimals for edition (a value of 6 corresponds to an accuracy of 0.3arcsec)
Returns:
the face number in range 1..6 (0 if error)

### toString

`public java.lang.String toString()`
Default Edition of the Coocube values

Overrides:
`toString` in class `Coo`
Returns:
the string equivalent of the Coocube the angles in degrees.