package org.geogebra.common.geogebra3D.kernel3D.commands; import org.geogebra.common.geogebra3D.kernel3D.geos.GeoQuadric3D; import org.geogebra.common.geogebra3D.kernel3D.geos.GeoQuadric3DPart; import org.geogebra.common.kernel.Kernel; import org.geogebra.common.kernel.arithmetic.Command; import org.geogebra.common.kernel.commands.CmdMidpoint; import org.geogebra.common.kernel.geos.GeoElement; import org.geogebra.common.kernel.kernelND.GeoConicND; import org.geogebra.common.kernel.kernelND.GeoPointND; import org.geogebra.common.kernel.kernelND.GeoQuadricND; import org.geogebra.common.kernel.kernelND.GeoSegmentND; import org.geogebra.common.main.MyError; /** * Midpoint command * */ public class CmdMidpoint3D extends CmdMidpoint { /** * @param kernel * Kernel */ public CmdMidpoint3D(Kernel kernel) { super(kernel); } @Override protected GeoElement[] process1(Command c, GeoElement arg) throws MyError { if ((arg instanceof GeoQuadric3D) && !(arg instanceof GeoQuadric3DPart)) { GeoElement[] ret = { (GeoElement) kernelA.getManager3D() .CenterQuadric(c.getLabel(), (GeoQuadricND) arg) }; return ret; } return super.process1(c, arg); } @Override protected GeoElement[] segment(String label, GeoSegmentND segment) { if (segment.isGeoElement3D()) { GeoElement[] ret = { (GeoElement) kernelA.getManager3D() .Midpoint(label, segment) }; return ret; } return super.segment(label, segment); } @Override protected GeoElement[] conic(String label, GeoConicND conic) { if (conic.isGeoElement3D()) { GeoElement[] ret = { (GeoElement) kernelA.getManager3D().Center(label, conic) }; return ret; } return super.conic(label, conic); } @Override protected GeoElement[] twoPoints(String label, GeoPointND p1, GeoPointND p2) { if (p1.isGeoElement3D() || p2.isGeoElement3D()) { GeoElement[] ret = { (GeoElement) kernelA.getManager3D() .Midpoint(label, p1, p2) }; return ret; } return super.twoPoints(label, p1, p2); } }