Fortran Coder

查看: 1397|回复: 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

57

帖子

2

主题

0

精华

大师

F 币
770 元
贡献
462 点
发表于 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,判断之

572

帖子

1

主题

0

精华

大宗师

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

135

帖子

15

主题

0

精华

版主

F 币
1159 元
贡献
637 点

爱心勋章管理勋章

 楼主| 发表于 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 点

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

发表于 2017-11-7 16:07:52 | 显示全部楼层

135

帖子

15

主题

0

精华

版主

F 币
1159 元
贡献
637 点

爱心勋章管理勋章

 楼主| 发表于 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 点

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

发表于 2017-11-14 21:32:51 | 显示全部楼层
珊瑚虫 发表于 2017-11-14 17:21
大神 有没有用fortran 调用这个库的资料,一直在找没找到啊  求指导

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

本版积分规则

QQ|捐赠本站|Archiver|关于我们 About Us|群聊|Fcode

GMT+8, 2020-12-5 09:54

Powered by Discuz! X3.2

© 2001-2017 Comsenz Inc.

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