我想查找一个顶点是否在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
但是,如果多维数据集实际上不是轴平行的,则情况会更加复杂。