package org.geogebra.common.geogebra3D.kernel3D.algos; import org.geogebra.common.geogebra3D.kernel3D.geos.GeoPlane3D; import org.geogebra.common.kernel.Construction; import org.geogebra.common.kernel.StringTemplate; import org.geogebra.common.kernel.Matrix.CoordSys; import org.geogebra.common.kernel.commands.Commands; import org.geogebra.common.kernel.geos.GeoElement; import org.geogebra.common.kernel.kernelND.GeoCoordSys2D; /** * Create a plane containing a 2D coord sys * * @author ggb3D * */ public class AlgoPlaneCS2D extends AlgoElement3D { /** the 2D coord sys created */ protected GeoCoordSys2D cs; /** polygon */ private GeoCoordSys2D csInput; /** * @param c * construction * @param csInput * contained polygon / conic */ public AlgoPlaneCS2D(Construction c, GeoCoordSys2D csInput) { super(c); this.csInput = csInput; cs = new GeoPlane3D(c); // set input and output setInputOutput(new GeoElement[] { (GeoElement) csInput }, new GeoElement[] { (GeoElement) cs }); } @Override public void compute() { CoordSys coordsys = cs.getCoordSys(); if (!((GeoElement) csInput).isDefined()) { coordsys.setUndefined(); return; } // copy the coord sys coordsys.set(csInput.getCoordSys()); // recalc equation vector (not existing for polygons, ...) if (coordsys.isDefined()) { coordsys.makeEquationVector(); } } /** * return the cs * * @return the cs */ public GeoCoordSys2D getCoordSys() { return cs; } @Override public Commands getClassName() { return Commands.Plane; } @Override final public String toString(StringTemplate tpl) { return getLoc().getPlain("PlaneContainingA", ((GeoElement) csInput).getLabel(tpl)); } }