你好,我是一个相对较新的程序员与C++。我有一个问题,我的代码
我有一个点2d类,它有两个x和y。
我正在尝试下面的嵌套循环:
Point2D Dec(float t)
{
Point2D Temp;
vector<Point2D>Bcopy=H->B;
for(int p=0;p<Bcopy.size()-1;p++){
for(int l=p;l<Bcopy.size();l++){
Temp=(1-t)*Bcopy.at[p][l-1]+t*Bcopy.at[p+1][l-1];
}
}
return Temp;
}
所以本质上还有另一个类,它有一个向量,点为2d,B,H,是指向它的指针,这些是存储鼠标交互等的点,然后画出它们,所以我只是创建了一个拷贝,然后做了上面的嵌套循环,然后我也用这些点来画它们。
我不断收到以下两个错误:
std::vector<Point2D,std::allocator<-Ty>>::at':function call missing argument list;use'&std::vector<Point2D,std::allocator<_Ty>>:at' to create a pointer to member
以及
下标需要数组或指针。
这两个错误都是针对行的
Temp=(1-t)*Bcopy.at[p][l-1]+t*Bcopy.at[p+1][l-1]
在法典中
我已经尝试了许多不同的事情,我要么不断得到更多的错误或只是这两个。我试图谷歌和理解的错误,但不能真的。任何帮助将不胜感激
谢谢
- 编辑 * 经过多次尝试
我做了以下工作:
vector<2D>NewBcopy;
double Rx=0 ,Ry=0;
for(int p=0;p<Bcopy.size()-1;p++){
for(int l=p;l<Bcopy.size();l++){
if(l==p)
{Newcopy.at(l)=Bcopy.at(l);
}
else
{Rx=(1-t)*Bcopy.at(p).x+t*Bcopy.at(p+1).x;
Ry=(1-t)*Bcopy.at(p).y+t*Bcopy.at(p+1]).y:
}
Temp.x=Rx;
Temp.y=Ry;
}
}
return Temp;
}
2条答案
按热度按时间zrfyljdw1#
你可以通过添加一些函数来扩展表示二维点的类,这些函数在点和标量之间执行数学运算。一个最小的例子如下:
在此之后,实现像De Castleljau这样的算法就容易多了。下面是一个可能的(未优化的)实现:
我用这个简单的程序测试了它:
其给出以下结果:
y4ekin9u2#
你应该在学习复杂的算法之前先学习C++。你的(不工作的)代码应该看起来更像这样。