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); } }
public Plane(RBFSurface surf) { m_surf = surf; }
public ParaboloidConst(RBFSurface surf) { m_surf = surf; }
public Conic(RBFSurface surf) { m_surf = surf; }
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); } }
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); }