【问题标题】:Connect two 12-polygons in 3d space在 3d 空间中连接两个 12 多边形
【发布时间】:2020-07-31 15:49:10
【问题描述】:

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

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

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

任何人都可以想出一个策略来实现这个目标吗?

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

【问题讨论】:

  • 当您说“取对”时,您的意思是:对于来自 A 的每一对顶点从 B 中找到一对,或者对于来自 A 的给定对集合还是什么?
  • 通过配对我的意思是:用数字标记多边形 A 中的顶点:1、2、3、4、5、6、7、8、9、10、11、12 假设 CCW或 CW 顺序,按数字对多边形 B 中的顶点执行相同操作:1'、2'、3'、4'、5'、6'、7'、8'、9'、10'、11'、12 '。然后对于多边形 A 中的每一对,取顶点对 (1,2) 并在多边形 B 中找到一对,在多边形 A 中取对 (2,3) 并在多边形 B 中找到一对,重复到顶点对 (11, 12) 多边形 A.
  • 多边形有什么关系吗?例如,它们是投影到不同 3d 平面上的相同 2d 多边形吗?此外,您说来自一个多边形的一对和来自另一个多边形的一对形成一个四边形;但是虽然这个图形有 4 个顶点,但在我看来它不太可能总是平面的,也就是说所有 4 个点都在一个平面上。您将使用什么 3d 轨迹进行交叉测试?
  • @dmuir:它们不相关。我想从 4 个顶点创建一个四边形(2 个来自多边形 A,2 个来自多边形 B)。它们不相关。

标签: python c++ 3d polygon computational-geometry


【解决方案1】:

一个可能的解决方案:

计算多边形 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 进行迭代排序。

【讨论】:

    猜你喜欢
    • 2011-07-03
    • 2023-04-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-29
    相关资源
    最近更新 更多