Swift 计算三角形角度、两条边夹角

本文介绍了一个用于计算平面上任意三点间角度的Swift函数。该函数适用于iOS开发环境,能够处理特殊点位情况,并返回准确的角度值。

    /// 计算三点之间的角度
    ///
    /// - Parameters:
    ///   - p1: 点1
    ///   - p2: 点2(也是角度所在点)
    ///   - p3: 点3
    /// - Returns: 角度(180度制)
    func getAnglesWithThreePoints(p1:CGPoint,p2:CGPoint,p3:CGPoint) -> Double {
        //排除特殊情况,三个点一条线
        if (p1.x == p2.x && p2.x == p3.x) || ( p1.y == p2.x && p2.x == p3.x){
            return 0
        }
        
        let a = fabs(p1.x - p2.x)
        let b = fabs(p1.y - p2.y)
        let c = fabs(p3.x - p2.x)
        let d = fabs(p3.y - p2.y)
        
        if (a < 1.0 && b < 1.0) || (c < 1.0 && d < 1.0){
            return 0
        }
        let e = a*c+b*d
        let f = sqrt(a*a+b*b)
        let g = sqrt(c*c+d*d)
        let r = Double(acos(e/(f*g)))
        return r        //弧度值
        
//        return (180*r/Double.pi)      //角度值

    }

 

P2位置就是要计算的角度。 

 

ps:这个坐标点是基于iOS上的,左上角为原点,所以直接获取点即可。

 

转载于:https://www.cnblogs.com/yajunLi/p/9204799.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值