package org.geogebra.common.kernel.geos;
import org.apache.commons.math3.analysis.UnivariateFunction;
import org.geogebra.common.kernel.kernelND.GeoCurveCartesianND;
/**
* T = sqrt(a'(t)^2+b'(t)^2)
*/
public class LengthCurve implements UnivariateFunction {
private GeoCurveCartesianND c1;
private double f1eval[] = new double[] { 0, 0, 0 };
/**
* Curve length function for numeric estimation of curve length
*
* @param c1
* derivative of measured curve
*/
public LengthCurve(GeoCurveCartesianND c1) {
this.c1 = c1;
}
@Override
public double value(double t) {
c1.evaluateCurve(t, f1eval);
return (Math.sqrt(f1eval[0] * f1eval[0] + f1eval[1] * f1eval[1]
+ f1eval[2] * f1eval[2]));
}
}