计算向量的角度

我们知道余弦定理 cos(α) = A·B/(|A|·|B|),反过来也可以求得A,B向量得夹角

α = arccos(A·B/(|A|·|B|))。

但是,由于余弦函数是一个0~Π之间的偶函数,当夹角大于Π时,计算得到的角度仍然为正值,不是正确的夹角,此时可以用以下方法:

向量Vector是一个Point1指向Point2向量,先计算出该向量的X分量与Y分量

double radian = 0;
double deltaX = Point2.X - Point1.X;//X分量
double deltaY = Point2.Y - Point1.Y;//Y分量
double length= Math.Sqrt(deltaX * deltaX + deltaY * deltaY);//该向量的长度

然后利用反三角函数计算夹角,此时需要注意角度的旋转方向

if(deltaY >0)
        radian = Math.Acos((deltaX) / length);//计算与单位向量(1,0)的夹角

else

        radian = -Math.Acos((deltaX) / length);//当角度超过180时则需要取反

但是这个方法很麻烦,还需要分条件判断,这时候注意到角度的正负与Y值相关,可以简化为

radian = (deltaY / Math.Abs(deltaY)) *Math.Acos((deltaX) / length);

  • 14
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值