lisp 计算三点的夹角_平面三点计算夹角

纯数学问题,今天正好有人询问到,搜索复习几何知识,留此记录。

平面给定三点,计算夹角有三种方法:

1 使用向量计算

关于向量a和b,向量夹角余弦公式 a*b = |a||b|cosTheta 所以 夹角 = acos(a*b) / (|a|*|b|)

两向量的数量积 = a.x*b.x + a.y*b.y

向量的模 = sqrt(x*x+y*y)

在二维下,计算量是最小的一种方法了(节约了sqrt计算),只需要一次acos

例,三个点A(1,1), B(2,1), C(2,2)

AB=(B.x-A.x, B.y-A.y)=(1,0)

AC=(C.x-A.x, C.y-A.y)=(1,1)

cosA = (AB*AC)/(|AB|*|AC|)=1/√2=√2/2, 则夹角BAC=45度

2 余弦定理

cosA = (AB*AB + AC*AC - BC*BC ) / 2*AB*AC

例,三个点A(1,1), B(2,1), C(2,2)

cosA = (1+2-1)/2*1*√2=1/√2=√2/2, 则夹角A=45度

3 单独计算AB和AC的角度

分别求出直线AB, AC的斜率,得到对应的角度,两线角度之差即为夹角,考虑到夹角的方向,顺时钟夹角定为正

AB的角度:atan2(AB.y, AB.x)

AC的角度:atan2(AC.y, AC.x)

计算AB和AC的差

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值