using System; namespace Science.Mathematics.VectorCalculus { public class TangentPlaneOfGraph { private Function.ToLastType func; public TangentPlaneOfGraph(Function.ToLastType f, Point p) { func = f; pp = p; } public void Compute() { double[] at = {pp.Coordinate[0], pp.Coordinate[1]}; Function.ToLastType fv = new Function.ToLastType(ff); PartialDerivative obj = new PartialDerivative(fv, at); obj.WithRespectTo = 0; obj.Compute(); cx = obj.Result; obj.WithRespectTo = 1; obj.Compute(); cy = obj.Result; c = -cx * at[0] - cy * at[1] + func(at[0],at[1]); } private Point pp; public Point At { set { pp = value; } } private double cx, cy, c; public double CoefficientOfX { get { return cx; } } public double CoefficientOfY { get { return cy; } } public double Constant { get { return c; } } private double ff(double[] xv) { double x = xv[0]; double y = xv[1]; return func(x, y); } } }