Пример #1
0
 public static IRBFPolynomial CreatePoly(RBF.PolyTypes type, RBFSurface surf)
 {
     switch (type)
     {
         case PolyTypes.Plane:
             return new RBFPolynomials.Plane(surf);
         case PolyTypes.Paraboloid:
             return new RBFPolynomials.Paraboloid(surf);
         case PolyTypes.ParaboloidC:
             return new RBFPolynomials.ParaboloidConst(surf);
         case PolyTypes.Conic:
             return new RBFPolynomials.Conic(surf);
         default :
             return new RBFPolynomials.Plane(surf);
     }
 }
Пример #2
0
 public Plane(RBFSurface surf)
 {
     m_surf = surf;
 }
Пример #3
0
 public ParaboloidConst(RBFSurface surf)
 {
     m_surf = surf;
 }
Пример #4
0
 public Conic(RBFSurface surf)
 {
     m_surf = surf;
 }
Пример #5
0
 private RBFNetwork2(uint nDim, IBasisFunction basis, PolyTypes poly)
 {
     m_rbfs = new RBFSurface[nDim];
     for (uint i = 0; i < nDim; i++)
     {
         m_rbfs[i] = new RBFSurface(null, basis, poly, 0);
     }
 }
Пример #6
0
        double Fit(ISurface cof)
        {
            if( cof == null )
            {
                m_rbfs = null;
                return -1;
            }
            int i, j, k;
            int ROWS =15, COLS =15;

            List<double[]>[] uvxs = new List<double[]>[3];
            for(i =0; i<3;i++ )
                uvxs[i] = new List<double[]>(ROWS*COLS);

            Vect2 uv = new Vect2();
            Vect3 xyz = new Vect3();
            for(i =0; i<ROWS;i++ )
            {
                uv[0] = BLAS.interpolant(i, ROWS);
                for( j=0; j<COLS; j++ )
                {
                    uv[1] = BLAS.interpolant(j, COLS);
                    cof.xVal(uv, ref xyz);
                    for( k =0; k<3;k++ )
                        uvxs[k].Add(new double[]{ uv[0], uv[1], xyz[k]});
                }
            }
            for (i = 0; i < 3; i++)
                m_rbfs[i] = new RBFSurface(uvxs[i]);

            return m_error = CheckError(cof);
        }