public Form1.Vertex CalculateVertex(double x, double y) { Form1.Vertex resault = new Form1.Vertex(); double r = Math.Sqrt(x * x + y * y); double z = Sinc(r); double delta = 1e-6; float f = (float)F(x, y, z); double dfdx = -(F(x + delta, y, z) - f) / delta; double dfdy = -(F(x, y + delta, z) - f) / delta; double dfdz = 1; double invLen = 1 / Math.Sqrt(dfdx * dfdx + dfdy * dfdy + dfdz * dfdz); resault.x = (float)x; resault.y = (float)y; resault.z = (float)z; resault.nx = (float)(dfdx * invLen); resault.ny = (float)(dfdy * invLen); resault.nz = (float)(dfdz * invLen); return(resault); }
public Form1.Vertex CalculateVertex(double x, double y) { Form1.Vertex resault = new Form1.Vertex(); //double r = Math.Sqrt(x * x + y * y); double z = HyperbolPar(x,y); double delta = 1e-6; float f = (float)F(x, y, z); double dfdx = -(F(x + delta, y, z) - f) / delta; double dfdy = -(F(x, y + delta, z) - f) / delta; double dfdz = 1; double invLen = 1 / Math.Sqrt(dfdx * dfdx + dfdy * dfdy + dfdz * dfdz); resault.x = (float)x; resault.y = (float)y; resault.z = (float)z; resault.nx = (float)(dfdx * invLen); resault.ny = (float)(dfdy * invLen); resault.nz = (float)(dfdz * invLen); return resault; }