社区
图形处理/算法
帖子详情
怎样快速判断两直线段是否部分重叠,如果重叠怎样决定方向是否一致?
cloudrain
2004-09-11 02:57:16
如题,现已知直线段1的端点A-B;直线段2的端点C-D.不用求交怎样才能判断它们部分(含全部重叠)重叠,如果部分重叠那重叠部分与原直线1方向是否一致.
...全文
773
15
打赏
收藏
怎样快速判断两直线段是否部分重叠,如果重叠怎样决定方向是否一致?
如题,现已知直线段1的端点A-B;直线段2的端点C-D.不用求交怎样才能判断它们部分(含全部重叠)重叠,如果部分重叠那重叠部分与原直线1方向是否一致.
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
15 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
syy64
2004-09-13
打赏
举报
回复
如果两直线置平后,每一条线,两相邻点的y都等于0,且x坐标有交叉,则有重叠。
subtop
2004-09-12
打赏
举报
回复
如果你对速度要求很高的话,第二个方法的浮点乘可以改为判断,判断两个乘数是否符号相反,如果其中一个为0,就可以认为与另一个乘数符号相反.
subtop
2004-09-12
打赏
举报
回复
如果你只判断是否相交(不区分平行且部分重合与相交一点这两种情况),你可以采用第二种方法,如果还要区分交叉与平行且部分重合,你就要先用第二种方法,满足第二个条件的同时再满足第一个条件,那就是平行且部分重合,否则只满足第一个条件就是交叉.
cloudrain
2004-09-11
打赏
举报
回复
谢谢subtop(风歌)
这样就可避开只有一个交点的情况了吗?
subtop
2004-09-11
打赏
举报
回复
有一个交点,你可以这样,假设A-B决定的直线方程为f1(x,y)=0,C-D决定的直线方程为f2(x,y)=0;
线段A-B与C-D有交点<<==>>
f1(ptC.x,ptC.y)*f1(ptD.x,ptD.y)<=0&&f2(ptA.x,ptA.y)*f2(ptB.x,ptB.y)<=0
如果只判断是否有交点(不判断是否平行)这个判断可以函盖上面的算法.至于方向,很简单,判断deltaX,deltaY的增减是否一致就可以了.
cloudrain
2004-09-11
打赏
举报
回复
哎 只有自己mark啦
cloudrain
2004-09-11
打赏
举报
回复
楼上的 那只有一个交点(不能算是重叠)的情况怎么解决啊?另外可以说详细点吗?
syy64
2004-09-11
打赏
举报
回复
坐标变换,将直线置平,新坐标系中,如果Y都等于0,表示重叠。
cloudrain
2004-09-11
打赏
举报
回复
偶用的是C++坐标全部用的是实际浮点坐标,也不是判断相交。是要看它们是否有部分重叠(不含一个交点的情况)
Kudeet
2004-09-11
打赏
举报
回复
比较直线也当矩形比较
判断两个矩形是否相交,他们是由两点(左上/右下)决定,使用屏幕坐标系
矩形 A (x1,y1),(x2,y2);
矩形 B (x3,y3),(x4,y4);
设 m= (x1>x4)|(x2<x3)
n= (y2<y3)|(y1>y4)
if(m|n)
{
//不相交
}
else
{
//相交
}
cloudrain
2004-09-11
打赏
举报
回复
呵呵 楼上的不好意思偶用的是一般的c++
phineco
2004-09-11
打赏
举报
回复
为两直线生成两个矩形RECT,再用函数求intersectRect求两个矩形的相交
是否为空,方向的话就是比较直线的两点的坐标就行了
cloudrain
2004-09-11
打赏
举报
回复
还有个问题就是两直线段只有一个交点,这种情况是不能作为重叠处理的。这个算法考虑了吗?比如D和A重叠后就反向分开了,又要怎样处理啊
cloudrain
2004-09-11
打赏
举报
回复
谢谢,这个方向就是直线段1与直线段2是否同向。
subtop
2004-09-11
打赏
举报
回复
假定四点分别为:CPoint ptA,ptB,ptC,ptD;
//先判断是否平行
if(((ptA.y-ptB.y)*(ptC.x-ptD.x)-(ptA.x-ptB.x)*(ptC.y-ptD.y))==0)//平行
{
if(((ptA.y-ptC.y)*(ptA.x-ptB.x) - (ptA.y-ptB.y)(ptA.x-ptC.x))==0||
((ptA.y-ptD.y)*(ptA.x-ptB.x) - (ptA.y-ptB.y)(ptA.x-ptD.x))==0))//重合
{
//重叠部分方向?
//我不是很明白
}
}
C++用红黑树实现线
段
的
重叠
问题
本程序使用C++,红黑树实现线
段
重叠
问题的查找,程序中有详细的注释,方便阅读。
给定平面直角坐标系上的
两
条线
段
,
判断
其
是否
相交。
题目描述: 给定平面直角坐标系上的
两
条线
段
,
判断
其
是否
相交。 输入: 有多组测试数据。按Ctrl-C键退出程序。 每组测试数据有2行,每行4个实数,表示线
段
的
两
个端点坐标。 输出: 若相交,则输出"yes",否则输出"no"。每组测试数据间空一行。 测试数据: (1) 2 5 15 1 4 3.5 10.7 20 (2) 1 2 4 6.3 15.2 3 7 10 (3) -2 -2 8 8 3 3 10 10 (4) 0 0 3 2 0 5 1.5 1
openlayers3 多边形相交
判断
原文地址 http://www.cnblogs.com/topcss/p/3575248.html ,基于该作者的代码基础上进行简单修改,使其在openlayers3上可用,有兴趣可以去看一下
两
线
段
相交
用于计算
两
线
段
相交的算法,简单易行!避免了除法的运算
论文研究-支持线
段
查询索引结构CB树.pdf
在空间数据库中点、线
段
和区域是构成向量对象的三种基本实体。现有的索引结构能够将点或区域对象有效地组织成散列或分层目录,并且提供精确的检索方法。然而,这些索引结构索引线
段
时会出现以下问题。索引结构不能准确地表示线
段
的空间信息,这将阻碍对线
段
空间数据的高质量存储。位于层次目录中节点之间将产生大量死空间和
重叠
区域,随着时间的推移这将降低系统性能。提出一种采用数据压缩的索引结构CB树。与R树索引结构相比,CB树具有较优查询效率,占用较少存储空间。
图形处理/算法
19,468
社区成员
50,698
社区内容
发帖
与我相关
我的任务
图形处理/算法
VC/MFC 图形处理/算法
复制链接
扫一扫
分享
社区描述
VC/MFC 图形处理/算法
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章