protected virtual double GetLength(int index, double tInSegment0, double tInSegment1) { Contract.Assert(tInSegment0 <= tInSegment1); RombergIntegrator iintegral = new RombergIntegrator(); return(iintegral.integrate(IntegralMaxEval, new DelegateUnivariateFunction(t => this.GetSpeed(index, t)), tInSegment0, tInSegment1)); }
public virtual double GetLength(double t0, double t1) { Contract.Assert(t0 <= t1); if (t0 < this.TMin) { t0 = this.TMin; } if (t1 > this.TMax) { t1 = this.TMax; } RombergIntegrator iintegral = new RombergIntegrator(); return(iintegral.integrate(IntegralMaxEval, new DelegateUnivariateFunction(this.GetSpeed), t0, t1)); }
public static double Integrate(Func <double, double> f, double t0, double t1, Type type, int maxEval) { UnivariateIntegrator iintegral; switch (type) { case Type.RombergIntegrator: { iintegral = new RombergIntegrator(); break; } default: { throw new IndexOutOfRangeException(); } } double v = iintegral.Integrate(maxEval, new DelegateUnivariateFunction(f), t0, t1); return(v); }