如何从位于外部的点(可能也包含n维的点)找到立方体上的最近点?

问题描述 投票:0回答:1

假设有一个给定的多维数据集和该多维数据集之外的一个点。现在,我想找出与多维数据集外部的点的距离最小的多维数据集上的点。我发现了类似的帖子:https://math.stackexchange.com/questions/2133217/minimal-distance-to-a-cube-in-2d-and-3d-from-a-point-lying-outside但是我对距离值本身不感兴趣,我想知道立方体上满足最近距离的点的位置。

Here also the image from the post above.p是外点,r是到立方体的最小距离。但是我对多维数据集r末尾的点很感兴趣。

还有后续的问题,是否有一种有效的方法可以对n维超立方体进行概括和计算?

algorithm 3d geometry distance dimensions
1个回答
0
投票

我确信,为了找到距离,该代码非常接近发现拦截。

但是从第一原则开始,无论尺寸如何,您都需要围绕正方形/立方体/超立方体或矩形/立方体/ h-cbd剖分世界。将其对着盒子的每一面切开。

立方体有4个条件,正方形有3个条件,超立方体有5个条件:

  1. 该点位于立方体内部(因为它位于所有面的后面
  2. 该点与一张脸相对(因为它位于除了一张脸以外的所有脸的后面
  3. 该点与边缘相对(因为它位于除2个面之外的所有面的后面
  4. 该点与顶点相对(除3个面之外的所有面之后>]
  5. 对于(1),您需要通过在中心和每个边缘之间延伸的平面再次对其进行剖分,以告诉您最近的(2)。请注意,对于一般情况,这仅对于常规实体是不准确的。对于不规则的长方体盒子,如果需要完美的答案,则需要考虑在两个面之间的中间角度延伸的平面。然后,您就可以用下面的方法解决该问题。

如果框与坐标系对齐,那么现在您需要做的就是将适当的坐标重置为其前面的面的值。如果不是,则需要依次将点旋转到每个面的坐标空间中。然后执行此纵坐标重置,然后向后旋转。好的,您可以数学上的一个步骤来解决它,但是几乎没有保存。

请注意,当旋转盒子时,您还可以通过首先考虑穿过盒子中心的简单笛卡尔平面进行优化,这将为您提供一个象限/八分之一/六分点,然后仅考虑该象限中的对象平面。

这就是全部。现在,您只需要编写代码。

更一般的情况是,凸面的面多于2 *维,则大量的面可能面向目标,因此您需要做更多的工作才能确定要面对的面是,还是边或顶点。这可以通过沿每个边缘生成平面来解决,该平面将垂直线连接到该边缘上集合中的两个面。对于简单的长方体,这些垂直平面与其他侧面匹配。

© www.soinside.com 2019 - 2024. All rights reserved.