一个空间的盒子和一条直线判断是否相交有好方法吗?

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 打赏 收藏 转发到动态 举报
写回复
用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之中的吧

19,469

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 图形处理/算法
社区管理员
  • 图形处理/算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧