package org.jzy3d.maths;
public class RotationMatrix {
public RotationMatrix(float a, Coord3d c) {
this.a = a;
this.x = c.x;
this.y = c.y;
this.z = c.z;
}
// TODO normalize x, y, z
public RotationMatrix(float a, float x, float y, float z) {
this.a = a;
this.x = x;
this.y = y;
this.z = z;
}
protected void prepare(){
c = (float)Math.cos(a);
s = (float)Math.sin(a);
}
public Coord3d rotate(Coord3d c){
Coord3d out = c.clone();
return rotateSelf(c);
}
/**
* glRotate produces a rotation of angle degrees around the
vector (x,y,z). The current matrix (see glMatrixMode) is
multiplied by a rotation matrix with the product replacing
the current matrix, as if glMultMatrix were called with the
following matrix as its argument:
( xx(1-c)+c xy(1-c)-zs xz(1-c)+ys 0 )
| |
| yx(1-c)+zs yy(1-c)+c yz(1-c)-xs 0 |
| xz(1-c)-ys yz(1-c)+xs zz(1-c)+c 0 |
| |
( 0 0 0 1 )
Where c = cos(angle), s = sine(angle), and ||( x,y,z )|| = 1
(if not, the GL will normalize this vector).
* @param c
* @return
*/
public Coord3d rotateSelf(Coord3d c){
return c;
}
//protected float
protected float a = 0;
protected float x = 0;
protected float y = 0;
protected float z = 0;
protected float c = 0;
protected float s = 0;
}
Ads help maintain this website.