package org.jzy3d.plot3d.primitives.selectable;
import java.util.List;
import org.jzy3d.colors.Color;
import org.jzy3d.maths.Coord3d;
import org.jzy3d.maths.Polygon2d;
import org.jzy3d.plot3d.builder.concrete.SphereScatterGenerator;
import org.jzy3d.plot3d.primitives.Sphere;
import org.jzy3d.plot3d.rendering.compat.GLES2CompatUtils;
import org.jzy3d.plot3d.rendering.view.Camera;
import com.jogamp.opengl.GL;
import com.jogamp.opengl.glu.GLU;
public class SelectableSphere extends Sphere implements Selectable {
public SelectableSphere() {
this(Coord3d.ORIGIN, 10f, 15, Color.BLACK);
}
public SelectableSphere(Coord3d position, float radius, int slicing,
Color color) {
super(position, radius, slicing, color);
buildAnchors();
}
@Override
public void draw(GL gl, GLU glu, Camera cam) {
super.draw(gl, glu, cam);
if (gl.isGL2()) {
gl.getGL2().glBegin(GL.GL_POINTS);
gl.getGL2().glColor4f(Color.RED.r, Color.RED.g, Color.RED.b,
Color.RED.a);
for (Coord3d a : anchors)
gl.getGL2().glVertex3f(a.x, a.y, a.z);
gl.getGL2().glEnd();
} else {
GLES2CompatUtils.glBegin(GL.GL_POINTS);
GLES2CompatUtils.glColor4f(Color.RED.r, Color.RED.g, Color.RED.b,
Color.RED.a);
for (Coord3d a : anchors)
GLES2CompatUtils.glVertex3f(a.x, a.y, a.z);
GLES2CompatUtils.glEnd();
}
}
@Override
public void project(GL gl, GLU glu, Camera cam) {
projection = cam.modelToScreen(gl, glu, anchors);
}
public List getProjection() {
return projection;
}
@Override
public void setPosition(Coord3d position) {
super.setPosition(position);
buildAnchors();
}
@Override
public void setVolume(float radius) {
super.setVolume(radius);
buildAnchors();
}
protected void buildAnchors() {
anchors = buildAnchors(position, radius);
}
protected List buildAnchors(Coord3d position, float radius) {
return SphereScatterGenerator.generate(position, radius, PRECISION,
false);
}
@Override
public Polygon2d getHull2d() {
throw new RuntimeException("not implemented");
}
@Override
public List getLastProjection() {
throw new RuntimeException("not implemented");
}
/*********************************************/
public void setHighlighted(boolean value) {
isHighlighted = value;
}
public boolean isHighlighted() {
return isHighlighted;
}
public void resetHighlighting() {
this.isHighlighted = false;
}
protected List anchors;
protected int PRECISION = 10;
protected boolean isHighlighted = false;
protected List projection;
}
Ads help maintain this website.