根据余弦定理求两个线段夹角


  /// <summary>
        /// 根据余弦定理求两个线段夹角
        /// </summary>
        /// <param name="o"></param>
        /// <param name="s"></param>
        /// <param name="e"></param>
        /// <returns></returns>
          double Angle(PointF o, PointF s, PointF e)
         {
             double cosfi = 0, fi = 0, norm = 0;
             double dsx = s.X - o.X;
             double dsy = s.Y - o.Y;
             double dex = e.X - o.X;
             double dey = e.Y - o.Y;

             cosfi = dsx * dex + dsy * dey;
             norm = (dsx * dsx + dsy * dsy) * (dex * dex + dey * dey);
             cosfi /= Math.Sqrt(norm);

             if (cosfi >= 1.0) return 0;
             if (cosfi <= -1.0) return Math.PI;
             fi = Math.Acos(cosfi);

             if (180 * fi / Math.PI < 180)    
             {
                 return 180 * fi / Math.PI;
             }
             else
             {
                 return 360 - 180 * fi / Math.PI;
             }

         }
    

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值