首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何检测两个线段相交的位置?

要检测两个线段相交的位置,可以使用以下方法:

  1. 线段的交点检测:

给定两条线段的起点和终点,可以使用以下公式计算它们的交点:

代码语言:txt
复制
P = (x1, y1)
Q = (x2, y2)
R = (x3, y3)
S = (x4, y4)

P = (x1, y1)
Q = (x2, y2)
R = (x3, y3)
S = (x4, y4)

// 计算交点
x = ((x1*y2 - y1*x2)*(x3 - x4) - (x1 - x2)*(x3*y4 - y3*x4)) / ((x1 - x2)*(y3 - y4) - (y1 - y2)*(x3 - x4))
y = ((x1*y2 - y1*x2)*(y3 - y4) - (y1 - y2)*(x3*y4 - y3*x4)) / ((x1 - x2)*(y3 - y4) - (y1 - y2)*(x3 - x4))
  1. 判断交点是否在线段上:

计算交点的t值,如果t值在0到1之间,则交点在第一条线段上;如果t值在0到1之间,则交点在第二条线段上。

代码语言:txt
复制
t1 = ((x - x1) * (x2 - x1) + (y - y1) * (y2 - y1)) / ((x2 - x1)^2 + (y2 - y1)^2)
t2 = ((x - x3) * (x4 - x3) + (y - y3) * (y4 - y3)) / ((x4 - x3)^2 + (y4 - y3)^2)
  1. 判断两条线段是否相交:

如果交点同时在两条线段上,则两条线段相交。

代码语言:txt
复制
if (t1 >= 0 && t1 <= 1 && t2 >= 0 && t2 <= 1) {
    // 两条线段相交
} else {
    // 两条线段不相交
}

通过以上方法,可以检测两个线段是否相交,以及它们的交点位置。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

两个单链表相交问题

两个单链表相交一系列问题 【 题目】 在本题中, 单链表可能有环, 也可能无环。 给定两个单链表头节点 head1和head2, 这两个链表可能相交, 也可能 不相交。...请实现一个函数, 如果两个链表相交, 请返回相交第一个节点; 如果不相交, 返回null 即可。...要求: 如果链表1长度为N, 链表2长度为M, 时间复杂度请达到 O(N+M), 额外空间复杂度请达到O(1) image.png public static class Node { public...= null) { return bothLoop(head1, loop1, head2, loop2); } return null; } //寻找第一个入环节点 如果有则返回...= n2) { n1 = n1.next; n2 = n2.next; } return n1; } //没有环情况下,起初让指针移动到距离相交节点等距位置

55020

【算法】两个单链表相交,返回相交第一个节点

给定两个 单链表头节点head1和head2,这两个链表可能相交,也可能不相交。 请实现一个函数,如果两个链表相交,请返回相交第一个节点; 如果不相交,返回null即可。...,无环情况 2.1、1个链表有环,1个链表无环 结论:永远不可能相交 2.2、两个链表都无环 若相交,那么必然如图所示: ?...若遍历到结尾都不相等,则两个链表没有相交节点。...两个有环链表相遇情况1 如图所示,第一个相交结点必然不是环结点,而是入环前节点。那么我们可以抹去成环部分,就可以转为两个无环链表相交问题了。 情况2 ?...null; } /// 处理两个链表无环情况 /// 先把两个链表中,较长链表走到跟较短链表一样长 /// 最后两个链表一起走,第一相遇节点,就是第一个相交节点 public

96110

CGAL 计算两个凸多边形相交面积

我正在使用 CGAL 计算两个凸多边形相交面积。在对 this 接受答案中发布了执行此操作简短演示代码。问题。...但是,当我修改该代码以使用我感兴趣多边形时,CGAL 从 CGAL::intersection() 例程深处抛出运行时异常。...这是一个简短示例代码,它是从上面链接 SO 问题中复制粘贴,除了它使用我自己多边形并打印一些关于每个多边形诊断信息以表明它们是凸面的并使用 CCW 绕组订单。...最佳答案 我可以重现此错误(在带有 clang++ MacOS 上使用 CGAL 4.9)。据我了解,这种类型未捕获异常不应该发生,换句话说,您发现了 CGAL 中错误。...显然,是否满足这个前提条件是调用者问题,另一个 CGAL 例程。换句话说,您输入没有任何问题。问题出在 CGAL 实现上,或者更准确地说,是它处理所用数字表示不精确方式。

33640

Visionpro从小白到大佬,第一章了解工具名称和用途

借助 VisionPro,用户可以访问功能较强图案匹配、斑点、卡尺、线位置、图像过滤、OCR 和 OCV 视觉工具库,以及一维条码和二维码读取,以执行各种功能,如检测、识别和测量。...CogIntersectCircleCircleTool 功能:检测两圆是否相交 CogIntersectLineCircleTool 功能:检测线与圆是否相交 CogIntersectLineEllipseTool...功能:检测线与椭圆是否相交 CogIntersectLineLineTool 功能:检测线与线是否相交 CogIntersectSegmentCircleTool 功能:检测线段与是否相交...CogIntersectSegmentEllipseTool 功能:检测线段与椭圆是否相交 CogIntersectSegmentLineTool 功能:检测线段与线是否相交 CogIntersectSegmentSegmentTool...功能:检测线段线段是否相交 8、 Geometry - Measurement ?

10.1K54

如何使用CGAL轻松检索两条相交多边形相交线

如何使用CGAL轻松检索两条相交多边形相交线(从第一个交点到最后一个交点)。看到图像澄清,绿线是我想要。...使用CGAL获取多边形相交线 Two intersecting polygons with intersection line 目前我使用下面的算法,在那里我得到交集多边形,然后发现这是两个多边形边界点...有人可以告诉我这是否是正确方法,或者指出如何更好地做到这一点。 来源 2017-08-02 D.J. Klomp A 回答 2 将两个多边形线段插入到2D排列中。然后找到具有度4顶点。...= arr.end_vertices(); ++it) { if (4 == it->degree()) ... } 可以避开“段”名单建设,而是直接将多边形细分成使用迭代器适配器安排...(这是纯粹通用编程,与CGAL无关。)

29440

基于相交线立体平面SLAM

相交线提取平面特征 本节主要介绍平面特征计算方法。我们首先从两幅立体图像中提取线段。通过匹配直线段及其端点,计算直线端点和方向向量三维位置。然后我们检查它们位置,找出相交线。...B 线段检测和计算 立体相机帧由左图像和右图像组成。使用线段检测器(LSD)从两幅立体图像中提取线段,并用LBD描述子进行匹配。在一帧立体图像中,直线匹配具有足够精确性和鲁棒性。...如图2(a)所示,以不同颜色绘制线段,并且在Il和Ir中匹配线段是相同颜色。对于左图像Il中每一个匹配线段,假设它们在立体帧中位置不变,在右图像Ir中找到其端点对应点。...线方向n_l也由其两个端点(pe−ps)定义 ? C 线段计算 在计算平面特征之前,需要检查直线之间关系。在三维空间几何中,相交线或平行线位于同一平面上。...从前两个条件中,实际上找到了那些紧密线段用线方向向量叉乘来计算平面法向量。 ? 利用平面法向量n_pi和四个端点p_k(k=1,2,3,4),计算四个不同平面系数d_k: ?

1.1K31

通用汽车最新提出:3-D车道线检测新方法

摘要:本文提出了一种基于相机新型DNN方法,用于带不确定性估计3D车道线检测。该方法基于半局部BEV(鸟瞰视角)网格表示形式,其将车道线分解为简单车道线段。...输出所有网格参数化3-D曲线表示,然后处理形成整个3-D车道曲线以及检测不确定性估计。 ? 假设通过每个网格车道线段很简单,用低维参数模型表示。...最终BEV特征图是生成局部车道线段车道线预测头输入、将这些线段聚类到整个车道全局嵌入、以及依赖于局部网格和整个车道曲线车道点位置不确定性。 ? 网络输入是单目图像。...与以前方法【1】相似,投影可确保BEV特征图中每个像素对应于预定义道路位置,与摄像机内参数和外部姿态无关。 假设通过每个网格车道线可以拟合为一个线段。...将网格相交车道线投影到道路平面后,用GT车道线点把网格相交车道线段近似为直线,可计算出偏移量和角度,即GT回归目标。 ? 以下是预测模型训练损失函数: ? 其中 ? ? ?

1.3K30

几何算法:判断两条线段是否相交

如何判断两条线段(注意不是直线)是否有交点? 传统几何算法局限 上过一点学西瓜哥我,只用高中学过知识,还是可以解这个问题。...一条线段两个点,可以列出一个两点式(x - x1) / (x2 - x1) = (y - y1) / (y2 - y1)),两条线段两个两点式,这样就是 二元一次方程组 了 ,就能求出两条直线交点。...然后判断这个点是否在其中一条线段上。如果在,说明两线段相交,否则不相交。 看起来不错,但这里要考虑直线垂直或水平于坐标轴特殊情况,还有两条直线平行导致没有唯一解情况,除数不能为 0 情况。...我们可以换另一个角度去解,即判断线段 1 两个端点是否在线段 2 两边,然后再反过来比线段 2 两点是否线段 1 两边。 这里我们可以利用上面 叉乘正负代表旋转方向特性。...以上图为例, AB 向量到 AD 向量位置需要逆时针旋转,AB 向量到 AC 向量则需要顺时针,代表 C 和 D 在 AB 两侧,对应就是两个叉乘相乘为负数。

48430

Ray-AABB交叉检测算法

位置等相关信息来计算是否发生碰撞。...Slab英文翻译是“平板”,本文是指两个平行平面/直线之间空间。在2D空间中slab可以理解为平行于坐标轴两条直线间区域,3D空间中为平行于xy平面(或者yz面,xz面)两个平面之间区域。...----   性质一和性质二比较容易理解,如果射线和3个slab相交线段没有重合,那么这些线段就不可能同时存在于3个slab中,也就不可能在AABB盒子中。   ...在上述性质基础上,确定射线与AABB是否交叉需要三步骤: 如何确定候选面:只要将平面方程带入射线Ray方程,求出这两个平面的t值,然后t值较小那个自然先与射线交叉,那么就表示它是一个候选面。...由于AABBslab平面都分别和两个坐标轴平行,它面的法线总是有两个分量是0,而另外一个分量总是为1,所以我们一致使用某个轴分量为1法线。

4.8K70

图形编辑器开发:基于相交策略选中图形

因为上面实现,只做了大 AABB 包围盒相交检测,没有做小 OBB 包围盒相交检测。 对于发生旋转图形,selection 如果和包裹图形空白区域相交了,图形也被选中。...OBB 相交检测 我们来实现更精准 OBB 相交检测。 为此西瓜哥我调研(其实是瞎想)了几个方案,并研究了算法实现。...方案 1:线段相交判断 直接一点,判断 selection 边和图形边是否有相交。...当发现投影产生两条线段没有相交,那找到了那条那条分割两图形直线,证明两个凸多边形不相交。 否则继续,如果都没找到,说明相交。 下图是以一个图形蓝边法向量作为分离轴,进行投影示意图。...---- 相关阅读, 几何算法:判断两条线段是否相交 图形编辑器开发:颜色 hex 标准化 图形编辑器开发:一些会用到简单几何算法 几何算法:矩形碰撞和包含检测算法 在容器内显示图片五种方案

15730

SOLD2:自监督有遮挡检测和描述线段

摘要 与检测和描述特征点特征相比,检测和匹配线段是更具有挑战任务,然而,对于多视图任务,线特征是对点特征补充,线段特征即使在纹理较差区域也经常出现,在此介绍第一个在单个深度网络中联合检测和描述线段方法...,采用了自监督训练方法,该方法不需要任何带标注线段,可以推广到任何数据集,该检测器提供了图像中线段可重复和精确定位,利用描述子学习最新进展,本文提出线描述子具有高度可区分性,同时对视点变化和遮挡保持鲁棒性...主要贡献 在 sold2中,作者联合学习了线段检测与描述,受LCNN 和Super-Point启发,文章引入了一个可以在没有任何标签图像数据集上进行训练自监督网络,在合成数据集上进行预训练后,将...总结来说,其所作出贡献有以下三点: (1)提出了首个用于联合线段检测和描述子深度网络; (2)自监督线段检测方法,使其能在任一真实图像数据集上进行训练; (3)线匹配对遮挡具有一定鲁棒性,在图像匹配任务上实现了...与其他方法进行对比线段检测效果: 总结 sold2作为首个用于图像中线段联合检测与描述深度学习方法,采用自监督训练方案,可以推广应用于绝大多数图像数据集,同时,受益于深层特征描述子识别能力, 能够处理在被遮挡和定位不佳线端点等线段描述中常见问题

99630

粗略物体碰撞预测及检测

碰撞检测问题也是游戏开发中经常遇到问题,一个游戏场景中可能存在很多物体,它们之间大多属于较远位置或者相对无关状态,那么一个物体碰撞运算没必要遍历这些物体,我们可以使用一个包围一个或多个物体多边形来讨论碰撞问题...尽管非常精确碰撞检测算法可以精确地表示和解决碰撞问题,但是在路径规划初期对碰撞只需要有一个初步估计,比如是否会发生碰撞,碰撞大概程度如何,以免把大量精力浪费在碰撞检测问题上,从而降低了在其他方面的注意力...AABB检测方法采用一个描述用立方体或者球形体包裹住3D物体对象整体(或者主要部分),我们可以根据包装盒距离、位置等信息来计算是否发生碰撞。...可以利用矩阵变化加快新AABB计算速度,具体可以参考适合新手3d碰撞检测 AABB静态检测   AABB静态检测比较简单,检测两个静止包装盒是否相交,它是一种布尔测试,测试结果只有相交或者不相交...在一维坐标轴中,两线段A和B相交条件是: 线段A在坐标轴上最大值Amax不小于线段B在坐标轴上最小值Bmin; 线段B坐标轴上最大值Bmax

1.8K60

位置和方向世界,计算几何基本问题

缘起 本文从最基本线段相交问题出发,从解析几何进入计算几何,介绍点积和叉积这个最基本计算几何工具,引入计算几何这个关于位置和方向大航海世界~ 分析 本文要讲清楚两个基本问题是: 如何判断线段相交...进一步地,如果存在唯一交点,试求出相交交点坐标 判断线段相交 考虑以下基本问题: 判断平面上两条线段是否相交 输入:4个点,分别表示第一条线段两个端点和第二条线段两个端点....输出:Yes/No 线段相交,分为两种 规范相交,即两条线段交点恰有一个,而且该交点不是线段任何一个端点. 例如 ? 非规范相交,也就是不是"规范相交"相交....类似的,C、D跨立在直线 AB 两侧充要条件是 上面两个不等式被形象称为跨立实验(cross test) 跨立实验能帮助我们知道两条线段是否规范相交,那么非规范相交怎么处理呢?...如果相交的话,则按照 顺序去验证光线是否和垂直线段 相交. 假设 是第一个使得光线和 不相交 , 则这说明光线不是和 通往 上管道部分相交,就是和下管道部分相交.

86810

霍夫变换

若参数空间中对应各个间断点曲线或者曲面能够相交,就能找到参数空间极大值以及对应参数;若参数空间中对应各个间断点曲线或者曲面不能相交,则说明间断点不符合某已知曲线。...它首先选取该形状中任意点(a,b)为参考点,然后从该任意形状图形边缘每一点上,计算其切线方向Φ和到参考点(a,b)位置偏移适量r,以及r与x轴夹角α。...返回值: ·peaks是一个Q×2矩阵,每行两个元素分别是某一峰值点在hough矩阵中行、列索引,Q为找到峰值点数目。...默认值为20.θ和ρ θ和ρ)两条线段之间距离小于 FillGap,则合并为一个直线段。默认值为20....MinLength 检测线段最小长度阈值:如果检测线段长度大于MinLength,则保留;丢弃小于MinLength线段。默认值为40.

1.7K30

粗略物体碰撞预测及检测

碰撞检测问题也是游戏开发中经常遇到问题,一个游戏场景中可能存在很多物体,它们之间大多属于较远位置或者相对无关状态,那么一个物体碰撞运算没必要遍历这些物体,我们可以使用一个包围一个或多个物体多边形来讨论碰撞问题...尽管非常精确碰撞检测算法可以精确地表示和解决碰撞问题,但是在路径规划初期对碰撞只需要有一个初步估计,比如是否会发生碰撞,碰撞大概程度如何,以免把大量精力浪费在碰撞检测问题上,从而降低了在其他方面的注意力...AABB检测方法采用一个描述用立方体或者球形体包裹住3D物体对象整体(或者主要部分),我们可以根据包装盒距离、位置等信息来计算是否发生碰撞。...可以利用矩阵变化加快新AABB计算速度,具体可以参考适合新手3d碰撞检测 AABB静态检测   AABB静态检测比较简单,检测两个静止包装盒是否相交,它是一种布尔测试,测试结果只有相交或者不相交...在一维坐标轴中,两线段A和B相交条件是: 线段A在坐标轴上最大值Amax不小于线段B在坐标轴上最小值Bmin; 线段B坐标轴上最大值Bmax不小于线段A在坐标轴上最小值Amin; 即 (Amax-Bmin

2.7K81

自动驾驶中基于车道线高清制图方法回顾

本文介绍一些公开发表论文,借此讨论一下如何构建基于车道线自动驾驶地图。 高清地图格式 在开始引入之前,先提一下两个地图格式: 1....Emap 提供线段拓扑信息: 左/右/前方邻居线段特性; 在每个道路车道线段相对侧向位置; 确定线段连接性;短时间建立复杂连接图能力。 2....是商用位置服务软件工具。...; 每个路段相邻车道在同一方向是隐含连接; 不同道路其车道是可以不连接而相交; 每个路段车道可定义为解析曲线; 车道曲线图精度期望是分米级别。...基于CHS分割方法是:道路相交提供一个长路初始化分解;在两个节点之间假设 (n − 1) 顶点和n 基函数;然后估计顶点位置和切向方向。

1.5K30

自动驾驶中基于车道线高清制图方法回顾

如下图,包括车道线,道路边界,交通标志,路上标记等等: 本文介绍一些公开发表论文,借此讨论一下如何构建基于车道线自动驾驶地图。 高清地图格式 在开始引入之前,先提一下两个地图格式: 1....(c) 线段,节点和形状点表示. (d) Emap。 Emap 提供线段拓扑信息: 左/右/前方邻居线段特性; 在每个道路车道线段相对侧向位置; 确定线段连接性;短时间建立复杂连接图能力。...是商用位置服务软件工具。...基于CHS分割方法是:道路相交提供一个长路初始化分解;在两个节点之间假设 (n − 1) 顶点和n 基函数;然后估计顶点位置和切向方向。...最后基于图SLAM生成地图,流程如下图。 关于特征提取见下图:主要是每个道路线段key point。 关于闭环检测参见下图:一般停止线比较适合做定位landmark,并估计车辆姿态。

86211
领券