package org.geogebra.common.kernel.kernelND;
import org.geogebra.common.kernel.PathParameter;
import org.geogebra.common.kernel.Matrix.Coords;
/**
* interface for 2D/3D arcs/sectors
*
* @author mathieu
*
*/
public interface GeoConicPartND {
/**
* Sets parameters and calculates this object's value. For type
* CONIC_PART_ARC the value is the length, for CONIC_PART_SECTOR the value
* is an area. This method should only be called by the parent algorithm
*
* @param start
* start param
* @param end
* end param
* @param positiveOrientation
* true for positive orientation
*/
public void setParameters(double start, double end,
boolean positiveOrientation);
/**
* Sector or arc
*
* @return CONIC_PART_ARC or CONIC_PART_SECTOR
*/
public int getConicPartType();
/**
* @return start parameter
*/
public double getParameterStart();
/**
* @return end parameter
*/
public double getParameterEnd();
/**
* @return parameter extent
*/
public double getParameterExtent();
/**
* @return orientation
*/
public boolean positiveOrientation();
/**
* super method
*
* @param P
* point
* @param pp
* path parameter
*/
public void superPointChanged(Coords P, PathParameter pp);
/**
*
* @return arc/sector parameters
*/
public GeoConicPartParameters getParameters();
/**
* segment end point for degenerate case
*
* @return coords of segment end point
*/
public Coords getSegmentEnd3D();
/**
* Returns arc length
*
* @return arc length
*/
public double getArcLength();
/**
* Returns the area
*
* @return area
*/
public double getArea();
/**
* set parameters in case of single point
*/
public void setParametersToSinglePoint();
/**
*
* @param i
* index of line
* @return the origin of lines in case of parallel lines
*/
public Coords getOrigin3D(int i);
}