社区
数据结构与算法
帖子详情
如何判断空间两线段是否相交?
whnchh
2003-04-07 04:16:36
已知空间两条线段的顶点坐标(x1,y1,z1),(x2,y2,z2),如何判断它们是否相交?
...全文
656
5
打赏
收藏
如何判断空间两线段是否相交?
已知空间两条线段的顶点坐标(x1,y1,z1),(x2,y2,z2),如何判断它们是否相交?
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
5 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
alidiedie
2003-04-20
打赏
举报
回复
以前有好多此个问题:
排斥实验 和跨立实验
/* 基本几何结构 */
struct POINT
{
double x;
double y; POINT(double a=0, double b=0) { x=a; y=b;} //constructor
};
struct LINESEG
{
POINT s;
POINT e; LINESEG(POINT a, POINT b) { s=a; e=b;}
LINESEG() { }
};
double multiply(POINT sp,POINT ep,POINT op)
{
return((sp.x-op.x)*(ep.y-op.y)-(ep.x-op.x)*(sp.y-op.y));
}
// 如果线段u和v相交(包括相交在端点处)时,返回true
bool intersect(LINESEG u,LINESEG v)
{
return( (max(u.s.x,u.e.x)>=min(v.s.x,v.e.x))&& //排斥实验
(max(v.s.x,v.e.x)>=min(u.s.x,u.e.x))&&
(max(u.s.y,u.e.y)>=min(v.s.y,v.e.y))&&
(max(v.s.y,v.e.y)>=min(u.s.y,u.e.y))&&
(multiply(v.s,u.e,u.s)*multiply(u.e,v.e,u.s)>=0)&& //跨立实验
(multiply(u.s,v.e,v.s)*multiply(v.e,u.e,v.s)>=0));
}
DNCS
2003-04-20
打赏
举报
回复
有一个比较简单的方法,
建立两条直线方程求解,看解在不在有效范围内即可
liuweiyan
2003-04-08
打赏
举报
回复
都是高手啊,原来自己一直是井底之蛙:(
ZhangYv
2003-04-07
打赏
举报
回复
http://expert.csdn.net/Expert/topic/927/927874.xml?temp=.3757593
寻开心
2003-04-07
打赏
举报
回复
没有时间细想,至少可以这样判断。
两个线段都有自己的方向向量,两个向量差乘,得到公共的垂直
如果垂直向量是零向量,表示两线段平行
否则,使用两个线段的各一个点和这个公共的垂直做点乘,数值相等表示共面,可以继续测试,否则表示不相交了。
如果共面就可以转化成为平面线段来判断了。平面判断的办法就比较成熟了,论坛前面有现成的结论。
C++语言实现一些基本算法(两点距离、点
是否
在直线上、点与直线的关系、两直线的夹角、两直线的交点、两个举行的重合面积等等)
C++语言实现一些基本算法(两点距离、点
是否
在直线上、点与直线的关系、两直线的夹角、两直线的交点、两个举行的重合面积等等)
立体表面的交线ppt
机械制图课件 立体表面的交线 很不错的ppt。
大学工程制图课件 断面法 截交线 换面法
大学工程制图课件 断面法 截交线 换面法 PPT 大一学期内容
实验三-利用MAPGIS软件建立
空间
拓朴数据文件分享.pdf
实验三-利用MAPGIS软件建立
空间
拓朴数据文件分享.pdf
基础知识课件断面PPT课件.pptx
基础知识课件断面PPT课件.pptx
数据结构与算法
33,027
社区成员
35,335
社区内容
发帖
与我相关
我的任务
数据结构与算法
数据结构与算法相关内容讨论专区
复制链接
扫一扫
分享
社区描述
数据结构与算法相关内容讨论专区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章