三点共线判断方法分析
经典的计算几何方面问题,判断二维坐标系中是否三个点在一条直线上:
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
三点共线判断方法分析相关推荐
- 圆柱体的投影特点_圆柱体三面投影作图方法分析
摘要:工程制图作为一门重要的专业技术基础课,旨在培养学生的空间思维和读图.绘图的能力.结合工程制图的教学实践,指出了求圆柱截切体投影的关键是求其截交线的投影:明确了圆柱截交线的类型与投影方法:以多平面 ...
- python查看字符串编码方式_Python字符编码判断方法分析
本文实例讲述了Python字符编码判断方法.分享给大家供大家参考,具体如下: 方法一: isinstance(s, str) 用来判断是否为一般字符串 isinstance(s, unicode) 用 ...
- 【CCCC】L3-018 森森美图 (30分),计算几何+判断三点共线+bfs最短路
problem L3-018 森森美图 (30分) 森森最近想让自己的朋友圈熠熠生辉,所以他决定自己写个美化照片的软件,并起名为森森美图.众所周知,在合照中美化自己的面部而不美化合照者的面部是让自己占 ...
- 笔试面试题目:三点共线的判断
看腻了认知鸡汤,你一无所获,味同嚼蜡?看累了万字长文,你收藏了事,心事重重? 那么,我们一起,上点算法小菜,斟点程序小酒,品味一下短小的趣味算法和程序,别有一番风味. 面试题目 在本文中,我们要讨论的 ...
- php监听iframe加载完成,window_IE iframe的onload方法分析小结,判断iframe是否加载完成的完美 - phpStudy...
IE iframe的onload方法分析小结 判断iframe是否加载完成的完美方法IE 支持 iframe 的 onload 事件,不过是隐形的,需要通过 attachEvent 来注册. 第二种方 ...
- 三种引流方法案例分析
第3课课程笔记 课程主题:三种引流方法&案例分析 课程题纲: 第一节:58同城引流方法详解(图文并茂) :宠物引流的第二种方法(资料收集与分享) :第三种最高端的玩法(让客户百分百信任你) 正 ...
- java三点确定圆弧_圆弧方向判断方法和三点确定一个圆的计算方法
圆弧方向判断方法 设p1=(x1,y1) p2=(x2,y2) p3=(x3,y3) 求向量 p12=(x2-x1,y2-y1) p23=(x3-x2,y3-y2) 则当 p12与p23的叉乘(向量积 ...
- python判断一个列表是否包含另一个列表_Python判断一个list中是否包含另一个list全部元素的方法分析...
Python判断一个list中是否包含另一个list全部元素的方法分析 本文实例讲述了Python判断一个list中是否包含另一个list全部元素的方法.分享给大家供大家参考,具体如下: 你可以用fo ...
- 圆弧方向判断方法和三点确定一个圆的计算方法
圆弧方向判断方法 设p1=(x1,y1) p2=(x2,y2) p3=(x3,y3) 求向量 p12=(x2-x1,y2-y1) p23=(x3-x2,y3-y2) 则当 p12与p2 ...
- python判断平年闰年的方法_平年和闰年的三种判断方法
平年和闰年的三种判断方法: ①.普通年能被4整除且不能被100整除的为闰年.否则为平年.(如2004年就是闰年,1900年不是闰年) ②.世纪年能被400整除的是闰年.否则为平年.(如2000年是闰年 ...
最新文章
- (转)教你实现Winform窗体的四边阴影效果
- TF实现多minibatch梯度累加及反向更新
- Semaphore源码分析
- 广度优先搜索——Corn Maze S(洛谷 P1825)
- 【报告分享】二次元衍生创作行业报告.pdf(附下载链接)
- 日留存、周留存、月留存,究竟怎样才能让更多的用户留下来?
- C++ gdb core调试 崩溃日志 都是问号??
- 数字信号处理——时域采样和频域采样(matlab)
- Java中的双重检查(Double-Check)详解
- 条件运算符的嵌套使用
- 安全算法-对称加密与非对称加密
- java 写服务器向客户端发送消息,java服务器向客户端发送消息
- Peekaboo——代码规范、冲刺任务与计划
- 穿越时空的爱恋-Z80 CPU的前世今生
- 微信小程序:wx.createInnerAudioContext的使用
- 使用deno和oak创建短链应用 1.0
- 冰火两重天----评NBA2009-12-28快船和凯尔特人的比赛
- 【jmx学习】2、jmx之Html Adaptor
- 英语句子成分和词类的关系
- Day6 - 头像存储与EasyExcel
热门文章
- 芒果改进YOLOv7系列:首发改进特征融合网络BiFPN结构,融合更多有效特征
- 数据挖掘与分析应用2:大厂制作周报报表制作方法与标准格式,联动使用index和match配合sumif和sumifs函数
- 出租房安装监控摄像头的必要性
- c语言中文网va_list,深入C语言可变参数(va_arg,va_list,va_start,va_end,_INTSIZEOF)
- (真实经验)我干了5年的JAVA面试官,发现很多求职者都忽略这七大方面的问题!
- 非常实用的10款网站数据实时分析工具(强烈推荐)
- Python培训得多少钱
- 移动应用实战(移动OA)之五_会议室管理之二
- 2020年毕业水平测试计算机内容,2020年高中信息技术学业水平测试指导
- 最大化参数 火车头_火车采集器,您身边的的网页数据采集专家!