Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/159.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C+中的B样条+; 我试图编写一个程序来生成C++中的曲线,绘制一个B样条曲线。这就是我的代码的样子 void drawBSplineCurve(vector<point> poly) { int n, d; cout << "Enter degree of curve: "; cin >> d; n = poly.size(); vector<double> uVec; int i; for(i=0;i<n+d;i++) { uVec.push_back(((double)i)/(n+d-1)); } double x, y, basis, u; for(u=0;u<=1;u+=0.0001) { x = 0; y = 0; for(i=0;i<poly.size();i++) { basis = blend(uVec, u, i, d); x += basis*poly[i].x; y += basis*poly[i].y; } putpixel(roundOff(x), roundOff(y), YELLOW); } } double blend(vector<double> &uVec, double u, int k, int d) { if(d==1) { if(uVec[k]<=u && u<uVec[k+1]) return 1; return 0; } double b; b = ((u-uVec[k])/(uVec[k+d-1]-uVec[k])*blend(uVec, u, k, d-1)) + ((uVec[k+d]-u)/(uVec[k+d]-uVec[k+1])*blend(uVec, u, k+1, d-1)); return b; } void drawBSplineCurve(矢量多边形) { int n,d; cout>d; n=多边形大小(); 载体uVec; int i; 对于(i=0;i_C++_Graphics_Bspline_Bgi - Fatal编程技术网 d; n=多边形大小(); 载体uVec; int i; 对于(i=0;i,c++,graphics,bspline,bgi,C++,Graphics,Bspline,Bgi" /> d; n=多边形大小(); 载体uVec; int i; 对于(i=0;i,c++,graphics,bspline,bgi,C++,Graphics,Bspline,Bgi" />

C+中的B样条+; 我试图编写一个程序来生成C++中的曲线,绘制一个B样条曲线。这就是我的代码的样子 void drawBSplineCurve(vector<point> poly) { int n, d; cout << "Enter degree of curve: "; cin >> d; n = poly.size(); vector<double> uVec; int i; for(i=0;i<n+d;i++) { uVec.push_back(((double)i)/(n+d-1)); } double x, y, basis, u; for(u=0;u<=1;u+=0.0001) { x = 0; y = 0; for(i=0;i<poly.size();i++) { basis = blend(uVec, u, i, d); x += basis*poly[i].x; y += basis*poly[i].y; } putpixel(roundOff(x), roundOff(y), YELLOW); } } double blend(vector<double> &uVec, double u, int k, int d) { if(d==1) { if(uVec[k]<=u && u<uVec[k+1]) return 1; return 0; } double b; b = ((u-uVec[k])/(uVec[k+d-1]-uVec[k])*blend(uVec, u, k, d-1)) + ((uVec[k+d]-u)/(uVec[k+d]-uVec[k+1])*blend(uVec, u, k+1, d-1)); return b; } void drawBSplineCurve(矢量多边形) { int n,d; cout>d; n=多边形大小(); 载体uVec; int i; 对于(i=0;i

C+中的B样条+; 我试图编写一个程序来生成C++中的曲线,绘制一个B样条曲线。这就是我的代码的样子 void drawBSplineCurve(vector<point> poly) { int n, d; cout << "Enter degree of curve: "; cin >> d; n = poly.size(); vector<double> uVec; int i; for(i=0;i<n+d;i++) { uVec.push_back(((double)i)/(n+d-1)); } double x, y, basis, u; for(u=0;u<=1;u+=0.0001) { x = 0; y = 0; for(i=0;i<poly.size();i++) { basis = blend(uVec, u, i, d); x += basis*poly[i].x; y += basis*poly[i].y; } putpixel(roundOff(x), roundOff(y), YELLOW); } } double blend(vector<double> &uVec, double u, int k, int d) { if(d==1) { if(uVec[k]<=u && u<uVec[k+1]) return 1; return 0; } double b; b = ((u-uVec[k])/(uVec[k+d-1]-uVec[k])*blend(uVec, u, k, d-1)) + ((uVec[k+d]-u)/(uVec[k+d]-uVec[k+1])*blend(uVec, u, k+1, d-1)); return b; } void drawBSplineCurve(矢量多边形) { int n,d; cout>d; n=多边形大小(); 载体uVec; int i; 对于(i=0;i,c++,graphics,bspline,bgi,C++,Graphics,Bspline,Bgi,因此,在投入了比我应该投入的更多的时间之后,我终于在我的教科书中找到了我错过的一行答案。显然,该曲线仅定义为u介于uVec[d-1]和uVec[n]之间的值因此,在投入了比我应该投入的更多的时间之后,我终于在我的教科书中找到了我错过的一行答案。显然,该曲线仅定义为uVec[d-1]和uVec[n]之间的u值 这意味着函数“混合”中存在错误 Conditinon(uVec[k]你使用哪个图形库?这是旧的graphics.h。遗憾的是,大学里教我们使用这个。我认为你的uVec是错误的。它的开头和结尾

因此,在投入了比我应该投入的更多的时间之后,我终于在我的教科书中找到了我错过的一行答案。显然,该曲线仅定义为
u
介于
uVec[d-1]
uVec[n]之间的值

因此,在投入了比我应该投入的更多的时间之后,我终于在我的教科书中找到了我错过的一行答案。显然,该曲线仅定义为uVec[d-1]和uVec[n]之间的u值

这意味着函数“混合”中存在错误
Conditinon(uVec[k]你使用哪个图形库?这是旧的
graphics.h
。遗憾的是,大学里教我们使用这个。我认为你的
uVec
是错误的。它的开头和结尾不应该有重复的值吗?此外,在
blend()中要小心被零除
@NicoSchertler为什么我的
uVec
应该有重复的值?而且,如果我没有处理异常,被零除不会导致我的程序崩溃吗?@naman1901-太棒了!当然不是花费的时间-而是你能够自我回答的事实。学习方法的更好形式之一,bravvo!