Fortran Coder

查看: 5380|回复: 7
打印 上一主题 下一主题

[空间几何] 如何快速判断射线所经过的规则长方体网格

[复制链接]

135

帖子

15

主题

0

精华

版主

F 币
1159 元
贡献
637 点

爱心勋章管理勋章

跳转到指定楼层
楼主
发表于 2017-10-24 15:30:28 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 珊瑚虫 于 2017-10-24 15:33 编辑

问题描述:有一个规则长方体,角点坐标(xc,yc,zc)各方向长度分别为Lx,Ly,Lz; 将X,Y,Z方向被等分为nx,ny,nz份,形成nx*ny*nz个单元。在长方体内部有条射线,射线的方程为 x=m*t+x0;y=n*t+y0;z=p*t+z0;其中,t>0,(x0,y0,z0)为射线起点,(m,n,p)为射线方向向量。已知该点位于立方体内,如何快速判断出,射线所通过的单元。
分享到:  微信微信
收藏收藏 点赞点赞 点踩点踩

135

帖子

15

主题

0

精华

版主

F 币
1159 元
贡献
637 点

爱心勋章管理勋章

沙发
 楼主| 发表于 2017-10-24 15:33:13 | 只看该作者
补充,规则长方体的角点坐标(xc,yc,zc)各方向长度分别为Lx,Ly,Lz

59

帖子

2

主题

0

精华

大师

F 币
810 元
贡献
476 点
板凳
发表于 2017-10-25 11:13:03 | 只看该作者
XL=LX/NX
YL=LY/NY
ZL=LZ/NZ

0<KX<NX
0<KY<NY
0<KZ<NZ
如果射线穿过(KX,KY,KZ)单元
(KX-1)*XL<M*T+X0<KX*XL
(KY-1)*YL<N*T+Y0<KY*YL
(KZ-1)*ZL<P*T+Z0<KZ*ZL
求出T,判断之

835

帖子

2

主题

0

精华

大宗师

F 币
3926 元
贡献
2334 点
地板
发表于 2017-10-26 13:25:49 | 只看该作者
1、求直线与 x1, x2...xn平面的交点,同样与y和z平面的交点;
2、所有这些交点,按t的大小排序,去掉重复点;
3、这就得到了n条线段,判断每条线段的中点即可。

135

帖子

15

主题

0

精华

版主

F 币
1159 元
贡献
637 点

爱心勋章管理勋章

5#
 楼主| 发表于 2017-11-7 15:25:50 | 只看该作者
kerb 发表于 2017-10-25 11:13
XL=LX/NX
YL=LY/NY
ZL=LZ/NZ

这样做太慢

490

帖子

4

主题

0

精华

大宗师

F 币
3298 元
贡献
1948 点

水王勋章元老勋章热心勋章

6#
发表于 2017-11-7 16:07:52 | 只看该作者

135

帖子

15

主题

0

精华

版主

F 币
1159 元
贡献
637 点

爱心勋章管理勋章

7#
 楼主| 发表于 2017-11-14 17:21:52 | 只看该作者
pasuka 发表于 2017-11-7 16:07
为啥不直接调用CAGL呢?
https://doc.cgal.org/latest/Box_intersection_d/index.html#Chapter_Intersectin ...

大神 有没有用fortran 调用这个库的资料,一直在找没找到啊  求指导

490

帖子

4

主题

0

精华

大宗师

F 币
3298 元
贡献
1948 点

水王勋章元老勋章热心勋章

8#
发表于 2017-11-14 21:32:51 | 只看该作者
珊瑚虫 发表于 2017-11-14 17:21
大神 有没有用fortran 调用这个库的资料,一直在找没找到啊  求指导

抱歉,没有具体实践过CGAL
唯一能够肯定的是:肯定没有官方fortran调用实例
不妨去论坛问问有没有C调用的范例
您需要登录后才可以回帖 登录 | 极速注册

本版积分规则

捐赠本站|Archiver|关于我们 About Us|小黑屋|Fcode ( 京ICP备18005632-2号 )

GMT+8, 2024-12-26 05:43

Powered by Tencent X3.4

© 2013-2024 Tencent

快速回复 返回顶部 返回列表