我正在使用一组点,我的目标是将4个向量相加并计算起点和终点之间的结果,
由于我已经准备好代码来执行上面的部分,这部分似乎工作正常,但我不确定。
无论如何,我发布此问题的真正原因是与合成方向和角度有关。
我发现很难理解找到合成角度和方向的概念以及明智的编程。
考虑这种情况......图片
第1个添加矢量“Head 2 Tail”
从我学到的关于向量加法的知识是减去x2 - x1,y2 -y1这将使我错过错位差并对A-E中的所有点进行相同的计算
为了得到结果,我将所有点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 - 一个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值我怎样才能得到方向和角度....?
答案 0 :(得分:2)
它是矢量的简单总和。
(x, y) = (x1, y1) + (x2, y2) + ... = (x1+x2+..., y1+y2+...)
当你有最终的矢量时,通过使用
找到它的角度tan(angle) = y/x
答案 1 :(得分: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;
因此,您将拥有单位方向向量和向量的角度。