package edu.stanford.rsl.conrad.geometry;
import edu.stanford.rsl.conrad.geometry.shapes.simple.PointND;
/**
* Abstract class to model n dimensional curves.
* Note that the internal dimension (cf. description by Piegl), i.e. its parametrization is always one dimensional.
* Hence, a curve can only be evaluated using a single dimension.
* That is the reason, why the abstract curve overides the evaluate PointND method.
* In it only the first dimension of the ND point is used for evaluation of the curve.
* The abstract method evaluate(double) must be implemented by any derived class that is not abstract to describe how to do the actual evaluation.
*
* @author akmaier
*
*@see AbstractShape
*@see #evaluate(double)
*/
public abstract class AbstractCurve extends AbstractShape {
/**
*
*/
private static final long serialVersionUID = 8742936166235392950L;
public AbstractCurve(){
super();
}
public AbstractCurve(AbstractCurve ac){
super(ac);
}
@Override
public PointND evaluate(PointND u) {
return evaluate(u.get(0));
}
/**
* Returns a point on the Curve at position u [0, 1];
* @param u the internal one dimensional position
* @return the curve point
*/
public abstract PointND evaluate(double u);
@Override
public int getInternalDimension() {
// Internal dimension is always one as this class models a one dimensional abstract shape.
return 1;
}
}
/*
* Copyright (C) 2010-2014 Andreas Maier
* CONRAD is developed as an Open Source project under the GNU General Public License (GPL).
*/