2013-04-11 77 views
0

我正在遍历一个存储Point数据类型[x,y]的向量,以便对每个x和y执行一些单独的计算....将x从向量元素2从向量元素1的x .......要做到这一点,我将这些点转换成双数据类型.....现在我需要把它们放回点数据类型.....?如何将两个双数据类型元素转换为一个Point数据类型

示例代码:

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); 

是这种转换可能的,如果这样能有人建议解决方案...?

+1

所以你要重建一个'Point'实例出来的'Pta'和'Ptb',或者要修改现有的?请显示'Point'的定义,或者至少它的构造函数原型。 – 2013-04-11 01:06:17

+1

很少有问题是'vect'应该是'Point'?此外,代码示例中有'vect =((Point)Pta,Ptb);'但稍后您会说错误发生在'vect =((double)Pta,Ptb);'这与代码示例矛盾。 – 2013-04-11 01:06:36

+0

对不起,关于最后的代码信息,我编辑它回到点的错字......是的,这是我的目的是重建点出Pta和Ptb – Tomazi 2013-04-11 01:10:00

回答

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; 
+0

您建议的解决方案的工作原理与我非常感谢的一样......我完成了所有测试,根据我的“纸张”计算,一切工作都正常:D – Tomazi 2013-04-11 01:21:34

+0

@Tomazi欢迎您。很高兴我能帮上忙。 – 2013-04-11 01:23:10

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); 
    
        } 
    

    } }

+0

为清晰起见......你有它的方式必须是Vec2 '定义为'Vector'的指针# – Kupto 2013-04-11 01:12:07

2

如果你想从你的两个数据点Point然后Point只需要一个构造函数,接受两个双打作为参数,并使用:

Point vec(Pta, Ptb) ; 
0

首先想thx每个人试图帮助我在这里每个人都会得到一个投票:P ....我设法解决这个问题使用@Jorge以色列佩纳建议....

就好像我分享最终的解决方案的代码示例:

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; 


}