package org.jzy3d.plot3d.primitives.axes;

import java.util.List;

import org.jzy3d.maths.BoundingBox3d;
import org.jzy3d.maths.Coord3d;
import org.jzy3d.plot3d.primitives.axes.layout.IAxeLayout;
import org.jzy3d.plot3d.rendering.compat.GLES2CompatUtils;
import org.jzy3d.plot3d.rendering.view.Camera;
import org.jzy3d.plot3d.transform.space.SpaceTransformer;

import com.jogamp.opengl.GL;
import com.jogamp.opengl.glu.GLU;

/**
 * An AxeBase provide a simple 3-segment object which is configured by a
 * BoundingBox.
 * 
 * @author Martin Pernollet
 */
public class AxeBase implements IAxe {

	/** Create a simple axe centered on (0,0,0), with a dimension of 1. */
	public AxeBase() {
		setAxe(new BoundingBox3d(0, 1, 0, 1, 0, 1));
		setScale(new Coord3d(1.0f, 1.0f, 1.0f));
	}

	/** Create a simple axe centered on (box.xmin, box.ymin, box.zmin) */
	public AxeBase(BoundingBox3d box) {
		setAxe(box);
		setScale(new Coord3d(1.0f, 1.0f, 1.0f));
	}

	@Override
	public void dispose() {
	}

	/******************************************************************/

	@Override
	public void setAxe(BoundingBox3d box) {
		bbox = box;
	}

	@Override
	public void draw(GL gl, GLU glu, Camera camera) {

		if (gl.isGL2()) {
			gl.getGL2().glLoadIdentity();
			gl.getGL2().glScalef(scale.x, scale.y, scale.z);
			gl.getGL2().glLineWidth(2);

			gl.getGL2().glBegin(GL.GL_LINES);
			gl.getGL2().glColor3f(1.0f, 0.0f, 0.0f); // R
			gl.getGL2().glVertex3f(bbox.getXmin(), bbox.getYmin(),
					bbox.getZmin());
			gl.getGL2().glVertex3f(bbox.getXmax(), 0, 0);
			gl.getGL2().glColor3f(0.0f, 1.0f, 0.0f); // G
			gl.getGL2().glVertex3f(bbox.getXmin(), bbox.getYmin(),
					bbox.getZmin());
			gl.getGL2().glVertex3f(0, bbox.getYmax(), 0);
			gl.getGL2().glColor3f(0.0f, 0.0f, 1.0f); // B
			gl.getGL2().glVertex3f(bbox.getXmin(), bbox.getYmin(),
					bbox.getZmin());
			gl.getGL2().glVertex3f(0, 0, bbox.getZmax());
			gl.getGL2().glEnd();
		} else {
			GLES2CompatUtils.glLoadIdentity();
			GLES2CompatUtils.glScalef(scale.x, scale.y, scale.z);
			GLES2CompatUtils.glLineWidth(2);

			GLES2CompatUtils.glBegin(GL.GL_LINES);
			GLES2CompatUtils.glColor3f(1.0f, 0.0f, 0.0f); // R
			GLES2CompatUtils.glVertex3f(bbox.getXmin(), bbox.getYmin(),
					bbox.getZmin());
			GLES2CompatUtils.glVertex3f(bbox.getXmax(), 0, 0);
			GLES2CompatUtils.glColor3f(0.0f, 1.0f, 0.0f); // G
			GLES2CompatUtils.glVertex3f(bbox.getXmin(), bbox.getYmin(),
					bbox.getZmin());
			GLES2CompatUtils.glVertex3f(0, bbox.getYmax(), 0);
			GLES2CompatUtils.glColor3f(0.0f, 0.0f, 1.0f); // B
			GLES2CompatUtils.glVertex3f(bbox.getXmin(), bbox.getYmin(),
					bbox.getZmin());
			GLES2CompatUtils.glVertex3f(0, 0, bbox.getZmax());
			GLES2CompatUtils.glEnd();
		}
	}

	/**
	 * Set the scaling factor that are applied on this object before GL2
	 * commands.
	 */
	@Override
	public void setScale(Coord3d scale) {
		this.scale = scale;
	}

	@Override
	public BoundingBox3d getBoxBounds() {
		return bbox;
	}

	/** Get the minimum values of the bounding box for each dimension. */
	@Override
	public Coord3d getCenter() {
		return new Coord3d(bbox.getXmin(), bbox.getYmin(), bbox.getZmin());
	}

	@Override
	public IAxeLayout getLayout() {
		return layout;
	}
	

    @Override
    public SpaceTransformer getSpaceTransformer() {
        return spaceTransformer;
    }

    @Override
    public void setSpaceTransformer(SpaceTransformer spaceTransformer) {
        this.spaceTransformer = spaceTransformer;
    }

    
    @Override
    public Coord3d getScale() {
        return scale;
    }


	protected Coord3d scale;
	protected BoundingBox3d bbox;
	protected IAxeLayout layout;
	
	protected SpaceTransformer spaceTransformer;

    @Override
    public List getAnnotations() {
        // TODO Auto-generated method stub
        return null;
    }

    @Override
    public void setAnnotations(List annotations) {
        // TODO Auto-generated method stub
        
    }
}

 

Ads help maintain this website.