package org.geogebra.common.geogebra3D.kernel3D.algos; import java.util.TreeMap; import org.geogebra.common.geogebra3D.kernel3D.geos.GeoPlane3D; import org.geogebra.common.kernel.Construction; import org.geogebra.common.kernel.Matrix.CoordMatrixUtil; import org.geogebra.common.kernel.Matrix.Coords; import org.geogebra.common.kernel.commands.Commands; import org.geogebra.common.kernel.geos.GeoElement; import org.geogebra.common.kernel.geos.GeoPolygon; import org.geogebra.common.kernel.kernelND.HasSegments; public class AlgoIntersectPlanePolygon extends AlgoIntersectLinePolygon3D { private GeoPlane3D plane; public AlgoIntersectPlanePolygon(Construction c, String[] labels, GeoPlane3D plane, GeoPolygon p) { super(c, labels, plane, p); } @Override protected void setFirstInput(GeoElement geo) { this.plane = (GeoPlane3D) geo; } @Override protected GeoElement getFirstInput() { return plane; } @Override protected void setIntersectionLine() { Coords[] intersection = CoordMatrixUtil.intersectPlanes( plane.getCoordSys().getMatrixOrthonormal(), ((GeoPolygon) p).getCoordSys().getMatrixOrthonormal()); o1 = intersection[0]; d1 = intersection[1]; } @Override protected void intersectionsCoords(HasSegments p, TreeMap<Double, Coords> newCoords) { // intersection line is contained in polygon plane by definition intersectionsCoordsContained(p, newCoords); } @Override protected boolean checkParameter(double t1) { return true; } @Override public Commands getClassName() { return Commands.Intersect; } }