package org.geogebra.common.geogebra3D.euclidian3D.draw;
import org.geogebra.common.geogebra3D.euclidian3D.EuclidianView3D;
import org.geogebra.common.geogebra3D.euclidian3D.openGL.Renderer;
import org.geogebra.common.geogebra3D.euclidian3D.openGL.Textures;
import org.geogebra.common.geogebra3D.kernel3D.geos.GeoPlane3D;
import org.geogebra.common.kernel.Matrix.Coords;
/**
* Class for drawing 3D constant planes.
*
* @author matthieu
*
*/
public class DrawPlaneConstant3D extends DrawPlane3D {
private DrawAxis3D xAxis, yAxis;
/**
* Common constructor
*
* @param a_view3D
* view
* @param a_plane3D
* plane
* @param xAxis
* x axis
* @param yAxis
* y axis
*/
public DrawPlaneConstant3D(EuclidianView3D a_view3D, GeoPlane3D a_plane3D,
DrawAxis3D xAxis, DrawAxis3D yAxis) {
super(a_view3D, a_plane3D);
this.xAxis = xAxis;
this.yAxis = yAxis;
}
@Override
protected boolean updateForItSelf() {
double[] xMinMax = xAxis.getDrawMinMax();
double[] yMinMax = yAxis.getDrawMinMax();
GeoPlane3D geo = (GeoPlane3D) getGeoElement();
geo.setGridCorners(xMinMax[0], yMinMax[0], xMinMax[1], yMinMax[1]);
geo.setGridDistances(getView3D().getGridDistances(0),
getView3D().getGridDistances(1));
if (getView3D().getShowPlane() || getView3D().getShowGrid()) {
super.updateGeometry();
}
return true;
}
@Override
protected void updateForView() {
// follow the view
}
@Override
protected void setMinMax() {
// follow axes values
}
@Override
protected boolean isGridVisible() {
return ((GeoPlane3D) getGeoElement()).isGridVisible();
}
@Override
protected int getGridThickness() {
return 1;
}
@Override
public void drawGeometry(Renderer renderer) {
drawPlate(renderer);
}
@Override
protected void setLineTextureHidden(Renderer renderer) {
renderer.setDashTexture(Textures.DASH_SHORT);
}
@Override
public void drawOutline(Renderer renderer) {
// no outline
}
@Override
protected void updateBounds(double xmin, double xmax, double ymin,
double ymax) {
// no bounds update
}
@Override
public void enlargeBounds(Coords min, Coords max) {
// no bounds update
}
}