如何使用较小的网格块形成轮廓形状的坐标。
例如,如果我使用32x32单位块来构造形状(任何形状)。 然后,我如何获得形状的整体坐标,包括负空间。
例如: 可以像这样排列块: (每个块为32x32,坐标指向块的左下角)
Block 1 - (0,0)
BLock 2 - (32,0)
Block 3 - 64,0)
Block 4 - (64,32)
Block 5 - (64, 64)
BLock 6 - (32, 64)
BLock 6 - (0 64)
Block 7 - (0, 32)
现在你可以看到这会在中间创建一个空白区域。
所以我想知道的是,如何获得上述形状的坐标,以便得到:
Main Block = (0,0), (96,0), (0,96)
Empty space = (32,32), (64,32), (64,64), (32,64)
这有什么数学解决方案吗?
最终我会做复杂的形状。
感谢
********编辑**** 您好,
如何应对这种情况?
<------------------^<----^
| || |
V------------------>| |
<------^ /^| |
| |<------^ / || |
| || |/ || |
V------>V------>V-->V---->
我希望结果像这样
<-------------------<----^
| |
V ^-----------> |
| | / |
| <-------^ / |
| |/ |
V------>------->--->----->
答案 0 :(得分:2)
在您的案例中,您可能需要关注Boolean Polygon Operations
工会。有很多论文涉及2D布尔多边形操作和构造性平面几何,请参阅维基百科:http://en.wikipedia.org/wiki/Boolean_operations_on_polygons。
答案 1 :(得分:2)
将每个方块视为由逆时针链中的四个向量组成的轮廓。
<-----^
| |
| |
V----->
因此,对于形状中的所有方块,请使用其轮廓向量的并集。如果联合中的两个轮廓向量相同但向相反方向移动,则它们相互抵消并从联合中移除。
例如,对于两个并排的正方形,并集是8个向量
<-----^<-----^
| || |
| || |
V----->V----->
减少到6个向量,因为中间的两个垂直向量取消:
<-----<-----^
| |
| |
V----->----->
对于您提供的示例,结果将是(取消后):
<-----<-----<-----^
| |
| |
V ^-----> ^
| | | |
| | | |
V <-----V ^
| |
| |
V----->----->----->
您只需将最终缩小的联合中的向量连接起来就可以读取轮廓路径。请注意,内轮廓(“孔”)顺时针运行。