package org.geogebra.common.kernel.kernelND; import org.geogebra.common.kernel.MyPoint; import org.geogebra.common.kernel.Matrix.Coords; import org.geogebra.common.kernel.geos.ChangeableCoordParent; import org.geogebra.common.kernel.geos.FromMeta; import org.geogebra.common.kernel.geos.GeoElement; import org.geogebra.common.kernel.geos.GeoNumberValue; import org.geogebra.common.kernel.geos.LimitedPath; /** * Simple interface used to join GeoSegment and GeoSegment3D * * @author ggb3D * */ public interface GeoSegmentND extends GeoLineND, LimitedPath, GeoNumberValue, FromMeta { /** * Sets start point and end point with inhom coords * * @param start * start point * @param end * end point */ public void setTwoPointsInhomCoords(Coords start, Coords end); /** @return length of the segment */ double getLength(); /** * @return start point */ public GeoElement getStartPointAsGeoElement(); /** * @return end point */ public GeoElement getEndPointAsGeoElement(); /** * return the x-coordinate of the point on the segment according to the * parameter value * * @param parameter * the parameter * @return the x-coordinate of the point */ public double getPointX(double parameter); /** * return the y-coordinate of the point on the segment according to the * parameter value * * @param parameter * the parameter * @return the y-coordinate of the point */ public double getPointY(double parameter); /** * modify the input points * * @param P * new first point * @param Q * new second point */ public void modifyInputPoints(GeoPointND P, GeoPointND Q); /** * set the segment throught the two points * * @param locusPoint * first point * @param locusPoint2 * second point */ public void setCoords(MyPoint locusPoint, MyPoint locusPoint2); /** * * @return copy with free Input Points */ GeoElement copyFreeSegment(); /** * used for GeoSegment3D * * @param ccp * changeable coord parent */ public void setChangeableCoordParentIfNull(ChangeableCoordParent ccp); }