美文网首页
简单数学工具备用

简单数学工具备用

作者: AnnieAri | 来源:发表于2017-09-05 11:18 被阅读0次
/// 计算3个点之间的角度
///
/// - Parameters:
///   - p1: 一端
///   - p2: 另一端
///   - p0: 中间点
/// - Returns: 角度 单位:°(度)
public func computeAngle(_ p1: CGPoint,_ p2: CGPoint,_ p0: CGPoint) -> CGFloat{
    let dx1 = p1.x - p0.x;
    let dy1 = p1.y - p0.y;
    let dx2 = p2.x - p0.x;
    let dy2 = p2.y - p0.y;
    let cos_angle = (dx1*dx2 + dy1*dy2)/sqrt((dx1*dx1 + dy1*dy1)*(dx2*dx2 + dy2*dy2) + 1e-10)
    return acos(cos_angle) * 180.0 / CGFloat.pi
    
}

/// 一般式 直线方程  Ax + By + C = 0
public typealias LinearEquation = (CGFloat,CGFloat,CGFloat)

/// 计算直线方程 一般式 Ax + By + C = 0
///
/// - Parameters:
///   - p1: 第一个点
///   - p2: 第二个点
/// - Returns: 一般式方程
public func computeLinearEquation(_ p1: CGPoint,_ p2: CGPoint) -> LinearEquation {
    return (p2.y-p1.y,p1.x-p2.x,p1.y*p2.x-p1.x*p2.y)
}


/// 两线的交点
///
/// - Parameters:
///   - line1: 第一条一般式直线方程
///   - line2: 第二条一般式直线方程
/// - Returns: 交点
public func compute2lineIntersection(_ line1: LinearEquation, _ line2: LinearEquation) -> CGPoint?{
    //斜率不存在
    if line1.1 == 0 && line2.1 == 0 {
        return nil
    }
    //斜率相等
    if line1.0 / line1.1 == line2.0 / line2.1 {
        return nil
    }
    
    //有交点
    let x = (line1.1*line2.2 - line2.1*line1.2)/(line1.0*line2.1 - line2.0*line1.1)
    let y = (line2.2*line1.0 - line1.2*line2.0)/(line2.0*line1.1 - line1.0*line2.1)
    return CGPoint(x: x, y: y)    
}

相关文章

  • 简单数学工具备用

  • 《 认知红利》读书笔记

    保罗·洛克哈特在《一个数学家的叹息》中说:数学的本质是表达的艺术。 数学应该是一个思考工具、表达工具,而不是简单的...

  • 工具备用使用

    从互联网到移动互联网,广告主的衡量指标也在不断改变。以往,效果广告主和品牌广告主对广告的衡量指标有一定差异,比如前...

  • SNC书籍--1

    先简单的谈谈 这门数学工具的一个发展过程 最先1991年 一个人提出了 网络演算的概念 依据的数学工具 最...

  • 铅笔芯是怎么被塞进木头里的?用了这么多年后总算明白了

    铅笔,作为我们最早接触的书写工具,它随时可擦,携带方便,小学的时候笔盒里总是放着好几只备用,以防数学题做不出来,一...

  • 【思维导图双证班】 第八次作业

    思维导图与数学 认识思维导图、数学式思维模式 一、认识思维导图 (1)发散性思维的自然表达 (2)思维工具:简单、...

  • 思维导图与语文

    思维导图可以与学科结合起来,应用到语文数学英语等各门,在学习的过程中,很多人认为工具非常简单,确实工具本身很简单,...

  • 读《王元-华罗庚》

    2020-02-05 研究 华罗庚的数学《直接法》,即用简单的初等数学工具及单刀直入的方法来处理数学中的一些重要问...

  • 有用的工具站(收藏备用)

    技能训练 && 资料查找 一个图书分享网站,经史子集,汗牛充栋 练习键准的网站 极速云跟打平台 中文排版指南 南京...

  • 数学单元整理 日期 1222 罗红卫 SWSZ608

    今天学了数学单元复习整理,体会到思维导图是把简单的学习提升到系统的学习,的工具。数学这门学科他有很多知识点。...

网友评论

      本文标题:简单数学工具备用

      本文链接:https://www.haomeiwen.com/subject/rhdujxtx.html