package org.jzy3d.plot3d.transform;
import org.jzy3d.maths.Coord3d;
import org.jzy3d.plot3d.rendering.compat.GLES2CompatUtils;
import com.jogamp.opengl.GL;
/**
* Rotate is a {@link Transformer} that stores the angle and rotate values
* required to perform the effective OpenGL rotation in the ModelView matrix.
*
* @author Martin Pernollet
*/
public class Rotate implements Transformer {
/**
* Initialize a Rotation.
*
* @param angle
* @param rotate
*/
public Rotate(float angle, Coord3d rotate) {
this.angle = angle;
this.rotate = rotate;
}
public Rotate(double angle, Coord3d rotate) {
this.angle = (float) angle;
this.rotate = rotate;
}
@Override
public void execute(GL gl) {
if (gl.isGL2()) {
gl.getGL2().glRotatef(angle, rotate.x, rotate.y, rotate.z);
} else {
GLES2CompatUtils.glRotatef(angle, rotate.x, rotate.y, rotate.z);
}
}
@Override
public Coord3d compute(Coord3d input) {
return input.rotate(angle, rotate);
}
@Override
public String toString() {
return "(Rotate)a=" + angle + " " + rotate;
}
public float getAngle() {
return angle;
}
public void setAngle(float angle) {
this.angle = angle;
}
public Coord3d getRotate() {
return rotate;
}
public void setRotate(Coord3d rotate) {
this.rotate = rotate;
}
private float angle;
private Coord3d rotate;
}
Ads help maintain this website.