经典的计算几何方面问题,判断二维坐标系中是否三个点在一条直线上:

A (ax,ay) ,B(bx,by),C(cx,cy)

1. 斜率解法

判断  (ay-by)/(ax-bx) == (cy-by)/(cx-bx)

缺点:当 ax == bx 或 cx==bx 时需要特殊判断,注意使用 gcd 化简分子分母比较,不要使用浮点结果比较,可能会有差别

2.周长判断解法


排序周长 AC > AB >BC

判断 AC == AB+BC

缺点:由于 sqrt  开方运算,导致结果不准确,不稳定,在三角形接近扁平时,结果误差。

3.最优解法:面积判断

判断 area(ABC) ==0

area(ABC) = 1/2 * ( AC X BC )  = 1/2 *((ax-cx)*(by-cy)-(bx-cx)*(ay-cy))

判断 (ax-cx)*(by-cy) == (bx-cx)*(ay-cy) 即可。

AC X BC   为两矢量的叉积

ps: 叉积定义:

由推论1,2 以及

x X y  = z  ,  y X y = 0 , 得

原文地址:http://yiminghe.iteye.com/blog/568666

三点共线判断方法分析相关推荐

  1. 圆柱体的投影特点_圆柱体三面投影作图方法分析

    摘要:工程制图作为一门重要的专业技术基础课,旨在培养学生的空间思维和读图.绘图的能力.结合工程制图的教学实践,指出了求圆柱截切体投影的关键是求其截交线的投影:明确了圆柱截交线的类型与投影方法:以多平面 ...

  2. python查看字符串编码方式_Python字符编码判断方法分析

    本文实例讲述了Python字符编码判断方法.分享给大家供大家参考,具体如下: 方法一: isinstance(s, str) 用来判断是否为一般字符串 isinstance(s, unicode) 用 ...

  3. 【CCCC】L3-018 森森美图 (30分),计算几何+判断三点共线+bfs最短路

    problem L3-018 森森美图 (30分) 森森最近想让自己的朋友圈熠熠生辉,所以他决定自己写个美化照片的软件,并起名为森森美图.众所周知,在合照中美化自己的面部而不美化合照者的面部是让自己占 ...

  4. 笔试面试题目:三点共线的判断

    看腻了认知鸡汤,你一无所获,味同嚼蜡?看累了万字长文,你收藏了事,心事重重? 那么,我们一起,上点算法小菜,斟点程序小酒,品味一下短小的趣味算法和程序,别有一番风味. 面试题目 在本文中,我们要讨论的 ...

  5. php监听iframe加载完成,window_IE iframe的onload方法分析小结,判断iframe是否加载完成的完美 - phpStudy...

    IE iframe的onload方法分析小结 判断iframe是否加载完成的完美方法IE 支持 iframe 的 onload 事件,不过是隐形的,需要通过 attachEvent 来注册. 第二种方 ...

  6. 三种引流方法案例分析

    第3课课程笔记 课程主题:三种引流方法&案例分析 课程题纲: 第一节:58同城引流方法详解(图文并茂) :宠物引流的第二种方法(资料收集与分享) :第三种最高端的玩法(让客户百分百信任你) 正 ...

  7. java三点确定圆弧_圆弧方向判断方法和三点确定一个圆的计算方法

    圆弧方向判断方法 设p1=(x1,y1) p2=(x2,y2) p3=(x3,y3) 求向量 p12=(x2-x1,y2-y1) p23=(x3-x2,y3-y2) 则当 p12与p23的叉乘(向量积 ...

  8. python判断一个列表是否包含另一个列表_Python判断一个list中是否包含另一个list全部元素的方法分析...

    Python判断一个list中是否包含另一个list全部元素的方法分析 本文实例讲述了Python判断一个list中是否包含另一个list全部元素的方法.分享给大家供大家参考,具体如下: 你可以用fo ...

  9. 圆弧方向判断方法和三点确定一个圆的计算方法

    圆弧方向判断方法 设p1=(x1,y1)   p2=(x2,y2)  p3=(x3,y3)   求向量 p12=(x2-x1,y2-y1) p23=(x3-x2,y3-y2)    则当 p12与p2 ...

  10. python判断平年闰年的方法_平年和闰年的三种判断方法

    平年和闰年的三种判断方法: ①.普通年能被4整除且不能被100整除的为闰年.否则为平年.(如2004年就是闰年,1900年不是闰年) ②.世纪年能被400整除的是闰年.否则为平年.(如2000年是闰年 ...

最新文章

  1. (转)教你实现Winform窗体的四边阴影效果
  2. TF实现多minibatch梯度累加及反向更新
  3. Semaphore源码分析
  4. 广度优先搜索——Corn Maze S(洛谷 P1825)
  5. 【报告分享】二次元衍生创作行业报告.pdf(附下载链接)
  6. 日留存、周留存、月留存,究竟怎样才能让更多的用户留下来?
  7. C++ gdb core调试 崩溃日志 都是问号??
  8. 数字信号处理——时域采样和频域采样(matlab)
  9. Java中的双重检查(Double-Check)详解
  10. 条件运算符的嵌套使用
  11. 安全算法-对称加密与非对称加密
  12. java 写服务器向客户端发送消息,java服务器向客户端发送消息
  13. Peekaboo——代码规范、冲刺任务与计划
  14. 穿越时空的爱恋-Z80 CPU的前世今生
  15. 微信小程序:wx.createInnerAudioContext的使用
  16. 使用deno和oak创建短链应用 1.0
  17. 冰火两重天----评NBA2009-12-28快船和凯尔特人的比赛
  18. 【jmx学习】2、jmx之Html Adaptor
  19. 英语句子成分和词类的关系
  20. Day6 - 头像存储与EasyExcel

热门文章

  1. 芒果改进YOLOv7系列:首发改进特征融合网络BiFPN结构,融合更多有效特征
  2. 数据挖掘与分析应用2:大厂制作周报报表制作方法与标准格式,联动使用index和match配合sumif和sumifs函数
  3. 出租房安装监控摄像头的必要性
  4. c语言中文网va_list,深入C语言可变参数(va_arg,va_list,va_start,va_end,_INTSIZEOF)
  5. (真实经验)我干了5年的JAVA面试官,发现很多求职者都忽略这七大方面的问题!
  6. 非常实用的10款网站数据实时分析工具(强烈推荐)
  7. Python培训得多少钱
  8. 移动应用实战(移动OA)之五_会议室管理之二
  9. 2020年毕业水平测试计算机内容,2020年高中信息技术学业水平测试指导
  10. 最大化参数 火车头_火车采集器,您身边的的网页数据采集专家!