有没有图形学大佬,球指点

2022-10-11 21:41:11 +08:00
 yirius

现在有一个坐标围成的 Polygon ,例子坐标如[[0,0], [0,10], [15,10], [15,20], [20,20], [20,5], [5,5]],现在想要把这个图形切割成三块 [矩形] ,如[[0,0], [0,10], [5,10], [5,0]]就是其中一块,思索了三天,没有任何头绪。用二维图像布尔计算也无法直接提取出来其中的矩形,有大佬有思路吗?

1807 次点击
所在节点    算法
9 条回复
xing7673
2022-10-12 01:20:19 +08:00
实在不行就暴力搜索,对每个节点都 90 度延长线
Xs0ul
2022-10-12 01:42:38 +08:00
1. 切割的块数 n=3 是确定的吗?
2. 输入确保有解吗?

1 、2 的回答都是 yes 的情况下,也许可以穷举出所有可能的形状。或者把问题简化成,先切掉一个矩形,剩下的图形能不能分割成俩矩形
also24
2022-10-12 01:55:28 +08:00
我没太理解题目,你是说这个形状,能够被切割成三块 矩形 么?

而且黄色的还是其中一块?

Xs0ul
2022-10-12 02:03:12 +08:00
@also24 #3 看起来应该是描述里漏了个 [5,0] 的点
also24
2022-10-12 02:11:03 +08:00
@Xs0ul #4
哦哦,我也有错,我把 [5,5] 看成 [5,0] 了,这样就合理多了

bluebirdv2
2022-10-12 02:11:33 +08:00
三个矩形要求覆盖, 只有八个自由度. 首先搜索两条边, 分别作为两个矩形的一条边.
由于覆盖要求确定两个矩形就可以了, 剩下的矩形直接用其他两个的边.
确定两个矩形 1 条边后, 只需要确定这两个 x 偏移. 根据覆盖要求, 只需要写出方程. 要求这两条边, 相互平行是矩形.
documentzhangx66
2022-10-12 03:01:49 +08:00
这还不简单,以 5 楼的形状为例,直接让每条边,在限制区域内,向两端延伸,必然能得到切点的坐标。

被切成的小块,能组成好几种 3 个矩形。
ynyounuo
2022-10-12 03:26:44 +08:00
搜索 rectangulation algorithm 有挺多线程的例子
比如: https://www.cise.ufl.edu/~sahni/papers/part.pdf
ynyounuo
2022-10-12 03:26:55 +08:00
现成*

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/886187

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX