python - 在 3d 空间中连接两个 12 多边形
问题描述
鉴于我有两个具有 12 个顶点的多边形(仅显示顶点,不显示边),它们位于两个不同的平面上。
我需要取左侧多边形(多边形 A)的顶点对(i,j),并通过边将这些顶点连接到右侧多边形(多边形 B)的顶点(k,l)。(四个点 i、j、k、l 将形成一个四边形)。我有额外的限制,即四边形不会相互交叉。
到目前为止我尝试了什么:I)将多边形 B 的所有顶点投影到多边形 A 的平面上。然后取最近的顶点对。这在一般情况下不起作用。II)将多边形B的所有顶点投影到多边形A的平面上。然后确定多边形A和B的顶点之间的最小角度。这在一般情况下不起作用。
任何人都可以想到一个如何实现这一目标的策略?
(不,这不是功课!:) 我为自己感到尴尬,我必须在这里揭示这个问题,而且我似乎无法单独解决这个看似微不足道的问题)
解决方案
一个可能的解决方案:
计算多边形 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 排序。
推荐阅读
- java - 在java中验证日期和时间戳
- javascript - 如何使用用户输入值更新图像 src 属性
- python-3.x - Python selenium 问题定位下拉元素
- java - 将文件输入添加到树形图中
- java - 错误类型错误:无法设置未定义的属性“名称”
- android - 我可以使用一个工厂将视图模型/存储库调用与 kodein 绑定吗
- flutter - 如何使 Row 小部件成为灵活的小部件?
- django - 通过 urlpatterns 和视图替换 django-postman 中的默认表单
- sql - 加入玩家和游戏桌以获得玩家积分
- c++ - 如何将字符串作为指针执行大写转换