社区
图形处理/算法
帖子详情
一个空间的盒子和一条直线判断是否相交有好方法吗?
alphapaopao
2004-01-04 12:15:37
盒子的定义:
长方体,每个面都平行于相应的坐标平面(xy面, yz面, zx面)
struct BOX{
double xl, xh,
yl, yh,
zl, zh;
};
直线定义:
直线上的点 p0(x,y,z)
直线的方向 dir(x,y,z)
是否有很简便的方法?
...全文
133
18
打赏
收藏
一个空间的盒子和一条直线判断是否相交有好方法吗?
盒子的定义: 长方体,每个面都平行于相应的坐标平面(xy面, yz面, zx面) struct BOX{ double xl, xh, yl, yh, zl, zh; }; 直线定义: 直线上的点 p0(x,y,z) 直线的方向 dir(x,y,z) 是否有很简便的方法?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
18 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
cadinfo
2004-01-10
打赏
举报
回复
hby_2026这样似乎不妥,除非你的锥体体积有负值(这个和你的计算方法有关),否则你的直线点选取是个关键,如果直线点选择在box内部,那就不用判断
hby_2026
2004-01-09
打赏
举报
回复
我有一个方法,大家参考一下:直线上的点,用(x0,y0,z0)+k(方向)表示
x=x0+k*X方向
y=y0+k*Y方向
z=z0+k*Z方向
该点和六个面形成了六个锥体计算这六个锥体体积和,是关于k的函数,求出最小值,如果最小值和六面体的体积相等,相交,大于不相交,小于,好好检查出错了。:)
cadinfo
2004-01-09
打赏
举报
回复
这样的话——我想你通过角度一定可以做到,我思考了一下:
例如你知道box的中心,然后用最两倍最长轴的距离在直线上取点(当然不是充分条件,你完全可以随机取点)。然后分别计算该点与box8个定点的方位角,如果分布在不同象限,那么显然相交,否则你想一下:-)如果不相交会出现什么情况。
直线随机点可选远大于box中心点。
alphapaopao
2004-01-06
打赏
举报
回复
我这个box会比较大比如说 1m 的范围,但是捕捉的计算精度需要达到 1e-8。你这种通过计算定点距离的方法恐怕不能满足要求。
dzq138
2004-01-05
打赏
举报
回复
关注
cadinfo
2004-01-05
打赏
举报
回复
我是做图像的,我认为没有必要计算平面,
试试看这样做,循环8个顶点,判断距离,这样计算量减少了,
得到距离数组,就可以做文章了。
你大概明白我的意思了吧,用对角线哦!
(我会关注)
cadinfo
2004-01-05
打赏
举报
回复
甚至你可以算出距离小于e=1e-3与直线重合的线段
cadinfo
2004-01-05
打赏
举报
回复
是的,我刚才帮你琢磨一下,内切圆,外接圆,平均距离...
这里面似乎存在某种联系,这样吧,你遍历点
for(x=x1;x<=xh;x++)
for(y=yl;y<=yh;y++)
for(z=zl;z<=zh;z++)
calc_distance() // 计算直线与该点距离,如果小于某个阈值,那么显然...
这样计算总不至于算平面方程吧
cadinfo
2004-01-05
打赏
举报
回复
上面方法的效率应该比遍历整个立方体要好。
cadinfo
2004-01-05
打赏
举报
回复
计算六个面即可,即上下左右前后,然后仿照我上面帖子的遍历过程
必定有交点处的距离<1e-3,这样如果相交可以得到两个面上的点满足条件,即可!
alphapaopao
2004-01-05
打赏
举报
回复
仅仅计算点和线的距离,恐怕不够吧
Jasonn
2004-01-04
打赏
举报
回复
up
马丁当
2004-01-04
打赏
举报
回复
估计没有,要一个面一个面的自己判断。
以前做过平面的,是轨迹拾取,都是自己判断,计算交点,及矩形中间的点,
等等。
你这个更复杂,看样子你要受累了。
windyloft
2004-01-04
打赏
举报
回复
只好自己计算了,数学问题
alphapaopao
2004-01-04
打赏
举报
回复
方法是有,只是很难看。每个面都求交一下。
还有另一个方法:
投影到坐标面,转化成直线和矩形的关系计算。总共投影3次。
这两个方法都不那么优美
byry
2004-01-04
打赏
举报
回复
OPENGEL里面有有关碰撞检验的部分可以看一下
wqs6
2004-01-04
打赏
举报
回复
我记得ug里面有专门的射线求交算法
你有兴趣可以看看
yintongshun
2004-01-04
打赏
举报
回复
一般就是延伸平面与直线相交,求交点,看交点是否在该Rect之中的吧
【Unity】图形
相交
检测
本文会实现几个圆形与其他2D图形的
相交
检测: 1、圆形与圆形 2、圆形与胶囊体 3、圆形与扇形 4、圆形与凸多边形 5、圆形与AABB 6、圆形与OBB
Ray-AABB问题:判断线段是否
相交
于轴对齐边界框(Axially Aligned Bounding Box, AABB)
Ray-AABB问题:判断线段是否
相交
于轴对齐边界框(Axially Aligned Bounding Box, AABB) 本文介绍了slab算法的实现,从
一个
简单实现开始,逐步优化slab算法,算法加速和并进行边界情况处理。
[图形学] 光线追踪中的数学
方法
光线追踪这一术语是指跟随光束来决定它们和世界中的哪个物体
相交
的算法。 它的应用包括光照纹理的生成、判断可见性、碰撞检测,以及视线检测。这一章描述了当光线与物体
相交
时如何找到它们的交点,以及当光线与...
光线追踪—层次包围盒( Bounding Volume Hierarchies )
通过
一个
简单的包围盒把物体包围起来,射线和场景中的物体求交之前,会先和这个包围盒进行求交,如果该射线没有碰到该包围盒,表明该
直线
一定不会和包围盒里的物体
相交
;如果该射线碰到该包围盒,那么再来计算射线...
【数据结构与算法】之深入解析“最小矩形面积”的求解思路与算法示例
一、题目要求 ...若
直线
之间无交点、仅有
一个
交点或所有交点均在同
一条
平行坐标轴的
直线
上,则返回 0。 注意:返回结果是浮点数,与标准答案 绝对误差或相对误差 在 10-4 以内的结果都被视为正确结果。 示例
图形处理/算法
19,469
社区成员
50,697
社区内容
发帖
与我相关
我的任务
图形处理/算法
VC/MFC 图形处理/算法
复制链接
扫一扫
分享
社区描述
VC/MFC 图形处理/算法
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章