// // File: Cnurbs.cc // $Id: Cnurbs.cpp,v 1.3 2009/02/09 20:51:06 thernis Exp $ #include "Cnurbs.h" #include #include "Cvec.h" Cnurbs::~Cnurbs() { delete3Darray(); } Cnurbs::Cnurbs(unsigned int Ncontrol0,std::vector KnotVec0,unsigned int Nbvertices0,std::vector cp0) { Ncontrol=Ncontrol0; KnotVec=KnotVec0; KnotSize=KnotVec.size(); Korder=KnotSize-Ncontrol; Nbvertices=Nbvertices0; // -- normalize Knot vector for (unsigned i=0;i Korder) { // I should throw an exception here instead std::cout << "nurbs order too big " << std::endl; return; } for (unsigned int i=0;i Cnurbs::getCurve() { return curve; } void Cnurbs::calcBasis() { for (unsigned int i=1;i= KnotVec[i-1] && t[j] < KnotVec[i+1-1]) Nik[j][i-1][0]=1; else Nik[j][i-1][0]=0; } } for (unsigned int kk=2;kk<=Korder;kk++) for (unsigned int i=1;i<=(KnotSize-kk);i++) { float kipkmki=KnotVec[i+kk-1 -1]-KnotVec[i -1]; float kipkmkip1=KnotVec[i+kk -1]-KnotVec[i+1 -1]; for (unsigned int j=0;j curve; // the points of the nurbs curve Cvec pup; float plo; for (unsigned int j=0;j