package org.geogebra.common.geogebra3D.kernel3D.algos; import org.geogebra.common.geogebra3D.kernel3D.geos.GeoConic3D; import org.geogebra.common.geogebra3D.kernel3D.geos.GeoPolygon3D; import org.geogebra.common.kernel.Construction; import org.geogebra.common.kernel.Matrix.CoordSys; import org.geogebra.common.kernel.algos.AlgoConicFivePoints; import org.geogebra.common.kernel.geos.GeoElement; import org.geogebra.common.kernel.geos.GeoPoint; import org.geogebra.common.kernel.kernelND.GeoConicND; import org.geogebra.common.kernel.kernelND.GeoPointND; public class AlgoConicFivePoints3D extends AlgoConicFivePoints { private GeoPointND[] inputP; public AlgoConicFivePoints3D(Construction cons, String label, GeoPointND[] P) { super(cons, label, P); } @Override protected void setInputPoints() { input = new GeoElement[5]; for (int i = 0; i < 5; i++) { input[i] = (GeoElement) inputP[i]; } } @Override protected GeoPoint[] createPoints2D(GeoPointND[] inputP) { this.inputP = inputP; GeoPoint[] ret = new GeoPoint[5]; for (int i = 0; i < 5; i++) { ret[i] = new GeoPoint(cons); } return ret; } @Override protected GeoConicND newGeoConic(Construction cons) { GeoConic3D ret = new GeoConic3D(cons); ret.setCoordSys(new CoordSys(2)); return ret; } private double[] tmpCoords; @Override protected void initCoords() { tmpCoords = new double[4]; } @Override public final void compute() { CoordSys cs = conic.getCoordSys(); if (GeoPolygon3D.updateCoordSys(cs, inputP, P, tmpCoords)) { conic.setDefined(); super.compute(); } else { conic.setUndefined(); } } }