0

我正在迭代一个存储点数据类型 [x,y] 的向量,以便对每个 x 和 y 进行一些单独的计算……从向量元素 1 中的 x 中减去向量元素 2 中的 x…… .为此,我将这些点转换为双数据类型.....现在我需要将它们放回点数据类型.....?

示例代码:

double  Pta;
    double  Ptb;
    double vect;

    double PtResult;
    for(vector<Point>::iterator iter_a = Left_Arm_xy.begin()+1; iter_a != Left_Arm_xy.end(); ++iter_a)
    {


        if(center.y <= 240)
        {
            Pta = iter_a->x - (iter_a -1)->x;
            Ptb = iter_a->y - (iter_a -1)->y;

            vect = ((Point)Pta, Ptb);

        }

编译器在代码的最后一行显示:“错误:没有运算符“= 匹配这些操作数”

vect = ((Point)Pta, Ptb);

如果可以的话,这种转换是否可能有人可以提出解决方案......?

4

4 回答 4

2

如果你想Point从你的两个数据点中创建一个,那么Point只需要一个构造函数,它将两个双精度作为参数并使用它:

 Point vec(Pta, Ptb) ;
于 2013-04-11T01:11:53.880 回答
1
  1. 将 vect 设为 2 向量,请参见以下更改:

    double  x;
    double  y;
    Vec2   vect;
    Vec2   PtResult; // not used?
    
    for
    (
        vector<Point>::iterator iter_a = Left_Arm_xy.begin()+1;
        iter_a != Left_Arm_xy.end();
        ++iter_a
    )
    {
    
    
        if(center.y <= 240)
        {
            x = iter_a->x - (iter_a -1)->x;
            y = iter_a->y - (iter_a -1)->y;
    
            vect = new vect(x, y);
    
        }
    

    } }

于 2013-04-11T01:09:33.873 回答
1

如果Point只是一个包含xy成员的简单结构,您可以执行以下操作:

Point vect;
vect.x = Pta;
vect.y = Ptb;

或者更简单地说:

Point vect;
vect.x = iter_a->x - (iter_a -1)->x;
vect.y = iter_a->y - (iter_a -1)->y;
于 2013-04-11T01:11:19.573 回答
0

首先想感谢所有在这里尝试帮助我的人,每个人都会投票:P ....我设法使用@Jorge Israel Pena 的建议解决了这个特殊问题....

尽管我分享了最终的解决方案代码示例:

double Pta; 
double Ptb;
Point  vect;
int i = 0;
for(vector<Point>::iterator iter_a = Left_Arm_xy.begin()+1; iter_a != Left_Arm_xy.end(); ++iter_a, i++)
{


if(center.y <= 240)
{

    vect.x = Pta = iter_a->x - (iter_a -1)->x;
    vect.y = iter_a->y - (iter_a -1)->y;


    cout<<"Calculation No. : "<<i<<" ""Center Points: "" "<<*iter_a<<" ""Vector Addition Tail to Head: "" "<<vect<<endl;


}
于 2013-04-11T01:25:00.593 回答