首页 > 解决方案 > 在 3d 空间中连接两个 12 多边形

问题描述

鉴于我有两个具有 12 个顶点的多边形(仅显示顶点,不显示边),它们位于两个不同的平面上。

我需要取左侧多边形(多边形 A)的顶点对(i,j),并通过边将这些顶点连接到右侧多边形(多边形 B)的顶点(k,l)。(四个点 i、j、k、l 将形成一个四边形)。我有额外的限制,即四边形不会相互交叉。

3d 中的两个多边形

到目前为止我尝试了什么:I)将多边形 B 的所有顶点投影到多边形 A 的平面上。然后取最近的顶点对。这在一般情况下不起作用。II)将多边形B的所有顶点投影到多边形A的平面上。然后确定多边形A和B的顶点之间的最小角度。这在一般情况下不起作用。

任何人都可以想到一个如何实现这一目标的策略?

(不,这不是功课!:) 我为自己感到尴尬,我必须在这里揭示这个问题,而且我似乎无法单独解决这个看似微不足道的问题)

标签: pythonc++3dpolygoncomputational-geometry

解决方案


一个可能的解决方案:

计算多边形 A 和 B 的质心,称之为 C_A 和 C_B。然后将多边形 A 或 B 的点沿 d = C_A - C_B 或 d = C_B - C_A 的方向向多边形 A 或 B 移动,将这些移动点称为 A' 或 B'。

接下来,找到移位多边形(A'或B')和原始多边形之一(A或B)的最近邻顶点(u,v)。从这对 (u, v) 开始并迭代地对顶点进行 CCW 或 CW 排序。


推荐阅读