0

我正在处理一组点,我的目标是将 4 个向量加在一起并计算起点和终点之间的结果,

由于我已经准备好执行上述部分的代码,这似乎工作正常,但我不确定。

无论如何,我发布这个问题的真正原因是与由此产生的方向和角度有关。

我发现很难理解寻找结果角度和方向以及编程明智的概念。

考虑这种情况....图片

在此处输入图像描述

第一次添加向量“头 2 尾”

根据我对向量加法的了解,减去 x2 - x1, y2 -y1 这将使我发现错位差异并对 AE 中的所有点进行相同的计算

为了得到结果,我将所有点 x 平方根为 2 的幂,并将所有 y 位置添加到 2 的幂。

这种意识形态似乎运作良好......

但这里的问题是我如何获得结果的角度和方向......?

我用来计算结果的代码:

 double Pta; 
    double Ptb;
    Point  vect;
    float R1, R2;
    float resultant;

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

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

            vect_add.push_back(Point(vect.x,vect.y));


                for(vector<Point>::iterator iter_v = vect_add.begin(); iter_v - vect_add.begin() + 4 < vect_add.size(); iter_v+=4)
                {

                        R1 = iter_v->x + (iter_v +1)->x + (iter_v +2)->x + (iter_v +3)->x;
                        R2 = iter_v->y + (iter_v +1)->y + (iter_v +2)->y + (iter_v +3)->y;

                        resultant = sqrt(pow(R1,2) + pow(R2,2));

                }   

        }

考虑一下这个......

好的,让我们考虑点 A[2,4]、B[4,8]、C[10,12],为了添加这个向量,我添加向量/点,我减去点 B x4 - A x2 和点 B y8 - A y4 和点 C x10 - B x4 和点 C y12 - B y8 这将给我点之间的位移....现在要获得结果,我将所有点 X 和 Y 的 x 的 2+4+10 = 16 y 的 4+ 8+12 = 24,接下来我将平方根 16 ^2 + 24^2 = 28.84。因此,基于这些计算,其中结果不是数字,x 和 y 值如何获得方向和角度....?

4

2 回答 2

2

它是向量的简单求和。

(x, y) = (x1, y1) + (x2, y2) + ... = (x1+x2+..., y1+y2+...)

当你有最终的向量时,它的角度是通过使用找到的

tan(angle) = y/x
于 2013-04-12T00:50:44.997 回答
1

两个向量之间的夹角一般定义为:

Angle = arccos( DotProduct(v1, v2) / ( Length(v1) * Length(v2) ) );

方向只是两个向量的减法:

Direction = v2 - v1;

通常,您必须对其进行归一化以获得单位向量:

Len = SquareRoot( direction.x * direction.x + direction.y * direction.y );
Direction.x /= Len;
Direction.y /= Len;

因此,您将拥有一个单位方向矢量和矢量的角度。

于 2013-04-12T00:56:23.623 回答