void v_coef(SBasis2d f, unsigned deg, SBasis &a, SBasis &b) { a = SBasis(); b = SBasis(); for (unsigned u=0; u<f.us; u++){ a.push_back(Linear(f.index(deg,u)[0], f.index(deg,u)[1])); b.push_back(Linear(f.index(deg,u)[2], f.index(deg,u)[3])); } }
//see a sb2d as an sb of u with coef in sbasis of v. void u_coef(SBasis2d f, unsigned deg, SBasis &a, SBasis &b) { a = SBasis(); b = SBasis(); for (unsigned v=0; v<f.vs; v++){ a.push_back(Linear(f.index(deg,v)[0], f.index(deg,v)[2])); b.push_back(Linear(f.index(deg,v)[1], f.index(deg,v)[3])); } }
SBasis extract_u(SBasis2d const &a, double u) { SBasis sb; double s = u*(1-u); for(unsigned vi = 0; vi < a.vs; vi++) { double sk = 1; Linear bo(0,0); for(unsigned ui = 0; ui < a.us; ui++) { bo += (extract_u(a.index(ui, vi), u))*sk; sk *= s; } sb.push_back(bo); } return sb; }