code: private void refine( double betas[] ) {
  		for( int i = 0; i < numControl; i++ ) {
  			double x=0,y=0,z=0;
  
  			for( int j = 0; j < numControl; j++ ) {
  				Point3D_F64 p = nullPts[j].get(i);
  				x += betas[j]*p.x;
  				y += betas[j]*p.y;
  				z += betas[j]*p.z;
  			}
  
  			tempPts0.get(i).set(x,y,z);
  		}
  
  		double adj = matchScale(tempPts0,controlWorldPts);
  		adj = adjustBetaSign(adj,tempPts0);
  
  		for( int i = 0; i < 4; i++ ) {
  			betas[i] *= adj;
  		}
  	}
docs: Given the set of betas it computes a new set of control points and adjust sthe scale
  using the {@llin #matchScale} function.