示例#1
0
        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);
        }
示例#2
0
        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;
        }