package org.geogebra.common.kernel.kernelND;
import org.geogebra.common.kernel.Locateable;
import org.geogebra.common.kernel.Matrix.Coords;
import org.geogebra.common.kernel.arithmetic.VectorNDValue;
/**
* Simple common interface for GeoVector and GeoVector3D
*
* @author ggb3D
*
*/
public interface GeoVectorND
extends GeoDirectionND, Locateable, CoordStyle, VectorNDValue {
/**
* @param c
* coordinates as array
*/
public void setCoords(double[] c);
/**
* @return the coords of the vector in 2D
*/
public Coords getCoordsInD2();
/**
* @return the coords of the vector in 3D
*/
public Coords getCoordsInD3();
/**
* UPdates start point
*/
void updateStartPointPosition();
/**
* @return true if all coords are finite
*/
boolean isFinite();
/**
* @param coords
* array to store inhomogeneous coords
*/
void getInhomCoords(double[] coords);
/**
* @return inhomogeneous coords
*/
double[] getInhomCoords();
/**
* @return true if tracing
*/
public boolean getTrace();
/**
*
* @param x
* x-coord
* @param y
* y-coord
* @param z
* z-coord
*/
public void setCoords(double x, double y, double z);
/**
* @param x
* x-coord
* @param y
* y-coord
* @param z
* z-coord
* @param w
* inhomogenous w for 3D vectors
*/
public void setCoords(double x, double y, double z, double w);
}