判断三点是否共线
假如有点 A (x1,y1) 、B (x2,y2)、C (x3,y3)
计算他们的斜率 k = (y1-y2)/(x1-x2); 但是, x1如果和 x2 相等,则 k为无穷大,所以,我们代码里面,一般用数组
k = [ y1-y2 , x1-x2 ]
令 a = y1 - y2; b = x1 - x2; 然后取绝对值,在除以他们的最大公倍数,就能够将 k 化简-> 最后,k 如果相等,就是共线,事实上这也是我们常提的一个概念,叫向量,下面给出模拟代码
function gcd(a,b){ //计算最大公倍数 if(b == 0){ return a; } var r = a % b; return gcd(b,r); } var p1 ={x:1,y:2}; var p2 = {x:2,y:10}; var a = p1.y - p2.y; var b = p1.x - p2.x; var g = gcd(Math.abs(a),Math.abs(b));//计算最大公倍数 a = a / g; b = b / g; var k = [a,b]; //向量 k //最后,可以通过计算多个点的斜率(向量) k ,判断是否共线
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?