查看: 177|回复: 4|关注: 0

[已答复] 怎么求向量A到B的角度?

[复制链接]

新手

16 麦片

财富积分


050


11

主题

39

帖子

1

最佳答案
发表于 2020-7-28 22:18:19 | 显示全部楼层 |阅读模式
如图,我是想求两个向量的矢量和,但是不能直接叠加,因为得到的总是锐角那一面的结果
想要求A和B叠加的结果,想通过角度判断,不知道怎么实现,或许有更好的方法??
向量都是A=[x1 y1]; B=[x2 y2]这种形式的,直接A+B不行啊
想通过角度判断,或许有更好的方法,不用角度也能出结果的?
未标题-1.jpg
回复主题 已获打赏: 0 积分

举报

论坛优秀回答者

中级

858 麦片

财富积分


5001500


53

主题

1717

帖子

154

最佳答案
  • 关注者: 47
发表于 2020-7-29 08:45:31 | 显示全部楼层
就角度可以借助余弦定理,不过感觉直接加就可以呢?你这不都是向量吗
回复此楼 已获打赏: 0 积分

举报

MATLAB 基础讨论
版块优秀回答者

中级

681 麦片

财富积分


5001500


26

主题

362

帖子

78

最佳答案
  • 关注者: 11
发表于 2020-7-29 09:15:58 | 显示全部楼层
叉积了解下,请仔细看下cross的帮助文件,也请仔细看下我回复的代码。
  1. A=[0,1];
  2. B=[1,0];
  3. C1=A+B;
  4. C2=-C1;


  5. %用叉积判断选择C1还是C2
  6. temp1=cross([A,0],[B,0]);
  7. temp2=cross([A,0],[C1,0]);
  8. temp3=cross([A,0],[C2,0]);

  9. %根据temp中第三列的正负来判断结果C是C1还是C2
  10. if temp1(3)<0  %AB顺时针情况,即向量A和向量B夹角小于180度
  11.     C=C1;
  12. else      %AB逆时针针情况,即向量A和向量B夹角大于于180度
  13.     C=C2;
  14. end

  15. % C就是所需要的结果
  16. %可以用A=[0,1];B=[-1,0];验证一下。
复制代码
回复此楼 已获打赏: 0 积分

举报

新手

16 麦片

财富积分


050


11

主题

39

帖子

1

最佳答案
 楼主| 发表于 2020-7-29 11:51:36 | 显示全部楼层
本帖最后由 wjk199511140034 于 2020-7-29 12:18 编辑
15631202458 发表于 2020-7-29 09:15
叉积了解下,请仔细看下cross的帮助文件,也请仔细看下我回复的代码。

你的意思我看懂了,计算出C和-C,然后对比AC,A-C的夹角。有点麻烦哈,我用了另一个方法
atan2返回向量与x轴正向夹角,范围是-pi~pi
an-bn得到的是B到A的转角,虽然这个角度绝对值是小于180的,但是他是带符号的
正值是顺时针,负值时逆时针
  1. A=[1 -1];B=[-1 -1];
  2. an=atan2d(A(2),A(1));
  3. bn=atan2d(B(2),B(1));
  4. %an-bn is bn->an angle(+: clockwise,-: counter-clockwise)
  5. alpha=an-bn;
  6. if alpha<0;alpha=alpha+360;end
  7. if alpha<180
  8.     C(i,:)=A+B;
  9. else
  10.     C(i,:)=-A-B;
  11. end
复制代码

复制代码

回复此楼 已获打赏: 0 积分

举报

MATLAB 基础讨论
版块优秀回答者

中级

681 麦片

财富积分


5001500


26

主题

362

帖子

78

最佳答案
  • 关注者: 11
发表于 2020-7-29 12:37:08 | 显示全部楼层
wjk199511140034 发表于 2020-7-29 11:51
你的意思我看懂了,计算出C和-C,然后对比AC,A-C的夹角。有点麻烦哈,我用了另一个方法
atan2返回向量与x ...

问题得到解决就好,条条大路通罗马。不过在判断顺时针旋转还是逆时针旋转,叉积还是很好用的。
回复此楼 已获打赏: 0 积分

举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐上一条 /4 下一条

快速回复 返回顶部 返回列表