package org.geogebra.common.geogebra3D.kernel3D.algos;
import org.geogebra.common.geogebra3D.kernel3D.geos.GeoPoint3D;
import org.geogebra.common.geogebra3D.kernel3D.geos.GeoPolygon3D;
import org.geogebra.common.kernel.Construction;
import org.geogebra.common.kernel.algos.AlgoVertexPolygon;
import org.geogebra.common.kernel.geos.GeoElement;
import org.geogebra.common.kernel.geos.GeoNumberValue;
import org.geogebra.common.kernel.geos.GeoPoly;
import org.geogebra.common.kernel.kernelND.GeoPointND;
/**
* Vertices of a 3D polygon
*
* @author mathieu
*
*/
public class AlgoVertexPolygon3D extends AlgoVertexPolygon {
/**
*
* @param cons
* construction
* @param labels
* output labels
* @param p
* polygon
*/
public AlgoVertexPolygon3D(Construction cons, String[] labels, GeoPoly p) {
super(cons, labels, p);
}
/**
* @param cons
* construction
* @param p
* polygon
*/
public AlgoVertexPolygon3D(Construction cons, GeoPoly p) {
super(cons, p);
}
/**
*
* @param cons
* construction
* @param label
* output label
* @param p
* polygon
* @param v
* vertex index
*/
public AlgoVertexPolygon3D(Construction cons, String label, GeoPoly p,
GeoNumberValue v) {
super(cons, label, p, v);
}
@Override
public GeoPointND newGeoPoint(Construction cons1) {
return new GeoPoint3D(cons1);
}
@Override
protected void setPoint(GeoPointND point, int i) {
((GeoPoint3D) point).setCoords(((GeoPolygon3D) p).getPoint3D(i));
}
@Override
protected OutputHandler<GeoElement> createOutputPoints() {
return new OutputHandler<GeoElement>(new elementFactory<GeoElement>() {
@Override
public GeoPoint3D newElement() {
GeoPoint3D pt = new GeoPoint3D(cons);
pt.setCoords(0, 0, 0, 1);
pt.setParentAlgorithm(AlgoVertexPolygon3D.this);
return pt;
}
});
}
}