我想查找一个顶点是否在C++程序的多维数据集中。

以这个例子为例,我想找到位于立方体内部的圆环的所有顶点。

Image

知道我的多维数据集只是要开始的点的列表(我正在解析.obj文件),我将如何继续执行此操作

例如,我的立方体顶点:

v  -56.269790649414 -100.226547241211 -29.616094589233
v  3.730209350586 -100.226547241211 -29.616094589233
v  -56.269790649414 -40.226547241211 -29.616094589233
v  3.730209350586 -40.226547241211 -29.616094589233
v  -56.269790649414 -100.226547241211 30.383905410767
v  3.730209350586 -100.226547241211 30.383905410767
v  -56.269790649414 -40.226547241211 30.383905410767
v  3.730209350586 -40.226547241211 30.383905410767

实现此目的的最佳做法/算法是什么(广播?)

最佳答案

显然,您的立方体是平行于轴的,因此检查要测试的顶点是否位于平行侧面 slice 的交点就足够了。换句话说,平行于轴的立方体是其自己的边界框。让

x_max = maximum x-coordinate of the cube
x_min = minimum x-coordinate of the cube
y_max = maximum y-coordinate of the cube
y_min = minimum y-coordinate of the cube
z_max = maximum z-coordinate of the cube
Z_min = minimum z-coordinate of the cube

那么当且仅当立方体中包含点(x,y,z)
x_min <= x <= x_max && y_min <= y <= y_max && z_min <= z <= Z_max

但是,如果多维数据集实际上不是轴平行的,则情况会更加复杂。

10-06 06:27