如何快速判断射线所经过的规则长方体网格
本帖最后由 珊瑚虫 于 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)为射线方向向量。已知该点位于立方体内,如何快速判断出,射线所通过的单元。 补充,规则长方体的角点坐标(xc,yc,zc)各方向长度分别为Lx,Ly,Lz 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,判断之
1、求直线与 x1, x2...xn平面的交点,同样与y和z平面的交点;
2、所有这些交点,按t的大小排序,去掉重复点;
3、这就得到了n条线段,判断每条线段的中点即可。 kerb 发表于 2017-10-25 11:13
XL=LX/NX
YL=LY/NY
ZL=LZ/NZ
这样做太慢 为啥不直接调用CAGL呢?
https://doc.cgal.org/latest/Box_intersection_d/index.html#Chapter_Intersecting_Sequences_of_dD_Iso-oriented_Boxes
https://doc.cgal.org/latest/AABB_tree/index.html#Chapter_3D_Fast_Intersection_and_Distance_Computation
或者
https://github.com/embree/embree pasuka 发表于 2017-11-7 16:07
为啥不直接调用CAGL呢?
https://doc.cgal.org/latest/Box_intersection_d/index.html#Chapter_Intersectin ...
大神 有没有用fortran 调用这个库的资料,一直在找没找到啊求指导 珊瑚虫 发表于 2017-11-14 17:21
大神 有没有用fortran 调用这个库的资料,一直在找没找到啊求指导
抱歉,没有具体实践过CGAL
唯一能够肯定的是:肯定没有官方fortran调用实例
不妨去论坛问问有没有C调用的范例
页:
[1]