问题:如何“划分多边形”以创建与每个线段相邻的四边形。
我的第一个想法:划分每段多边形。移动每个新创建的点 - 垂直于分割线段。现在我们得到四边形的分数。最后 - 删除重叠的四边形。问题:如何检查四边形的每个(新)点是否在多边形内?因为新创建的点可以超出多边形 - 特别是在拐角处。还有如何检查重叠的四边形?
我的第二个想法:插入多边形。划分线段然后连接点。但是,插入后的某些线段可以相交的更复杂的多边形呢?
我知道这更像是一个数学问题,但我正在为上述问题寻找现成的解决方案 - 例如矩形的简单 2d 碰撞检测(但不仅仅是一个轴对齐)。
也许有人对如何创建程序化城市地 block 有更好的想法?
最佳答案
他们必须是四边形吗?这是一个非常严重的限制,尤其是在处理图片中的任意几何图形时。
对于这样的事情,我会尝试使用 Voronoi diagram来划分空间。 Voronoi 图算法将一组点作为输入并对空间进行分区,以便每个输入点都与一个空间区域相关联,该区域内的所有点都最接近该输入点。对于您的输入,您可以在多边形的内部放置两组点,一组最接近包含您将使用的区域的边缘,第二组点将是您将丢弃的内部区域。
关于c# - 程序化城市建模 - 多边形分割(也许是更好的想法?),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28126487/