using System; namespace Science.Mathematics.VectorCalculus { public class LineIntegral { private Path c; private double res; private VectorField F; public LineIntegral(Function.ToLastType function, Path path) { VectorField vf = new VectorField(function); F = vf; c = path; } public LineIntegral(VectorField vectorField, Path path) { F = vectorField; c = path; } public void Compute() { Function.ToLastType func = new Function.ToLastType(ff); IntegrationMidpoint obj = new IntegrationMidpoint(func, c.ParameterFrom, c.ParameterTo); obj.Compute(); res = obj.Result; } private double ff(double t) { Velocity v = new Velocity(c, t); v.Compute(); Point p = new Point(v.Dimension); for(int i = 0; i < v.Dimension; i++) p[i] = c.Map(t)[i]; F.FindComponents(p); Vector vp = v; Vector fp = F; return vp* fp; } public double Result { get { return res; } } } }