Ejemplo n.º 1
0
        //static public void GetFittingMesh(ISurface s, double vMid, out List<Vect2> uv, out List<Vect3> xyz)
        //{
        //    FixedPoint[] fits = new FixedPoint[2];
        //    fits[0] = new FixedPoint(0, vMid);
        //    fits[1] = new FixedPoint(1, vMid);
        //    SurfaceCurve midcur = new SurfaceCurve("MidCur", s, fits);
        //}
        public static void xRad(ISurface s, Vect2 uv, ref Vect3 xyz, ref double k)
        {
            Vect3 dxu = new Vect3(), dxv = new Vect3(), ddxu = new Vect3(), ddxv = new Vect3(), dduv = new Vect3(), xnor = new Vect3();
            s.xCvt(uv, ref xyz, ref dxu, ref dxv, ref ddxu, ref ddxv, ref dduv);
            s.xNor(uv, ref xyz, ref xnor);

            //calculate first fundamental form
            double E = dxu.Norm;
            double F = dxu.Dot(dxv);
            double G = dxv.Norm;
            //double E = BLAS.dot(dxu, dxu);
            //double F = BLAS.dot(dxu, dxv);
            //double G = BLAS.dot(dxv, dxv);
            double detI = E * G - F * F;
            //calculate second fundamental form
            double e = xnor.Dot(ddxu);
            double f = xnor.Dot(dduv);
            double g = xnor.Dot(ddxv);
            //double e = BLAS.dot(ddxu, xnor);
            //double f = BLAS.dot(dduv, xnor);
            //double g = BLAS.dot(ddxv, xnor);
            double detII = e * g - f * f;

            k = detII / detI;
        }