c# - 程序化城市建模 - 多边形分割(也许是更好的想法?)

标签 c# procedural-generation

问题:如何“划分多边形”以创建与每个线段相邻的四边形。

我的第一个想法:划分每段多边形。移动每个新创建的点 - 垂直于分割线段。现在我们得到四边形的分数。最后 - 删除重叠的四边形。问题:如何检查四边形的每个(新)点是否在多边形内?因为新创建的点可以超出多边形 - 特别是在拐角处。还有如何检查重叠的四边形?

我的第二个想法:插入多边形。划分线段然后连接点。但是,插入后的某些线段可以相交的更复杂的多边形呢?

我知道这更像是一个数学问题,但我正在为上述问题寻找现成的解决方案 - 例如矩形的简单 2d 碰撞检测(但不仅仅是一个轴对齐)。

也许有人对如何创建程序化城市地 block 有更好的想法?

最佳答案

他们必须是四边形吗?这是一个非常严重的限制,尤其是在处理图片中的任意几何图形时。

对于这样的事情,我会尝试使用 Voronoi diagram来划分空间。 Voronoi 图算法将一组点作为输入并对空间进行分区,以便每个输入点都与一个空间区域相关联,该区域内的所有点都最接近该输入点。对于您的输入,您可以在多边形的内部放置两组点,一组最接近包含您将使用的区域的边缘,第二组点将是您将丢弃的内部区域。

看看 Fortune Voronoi implementation in C# .

关于c# - 程序化城市建模 - 多边形分割(也许是更好的想法?),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28126487/

相关文章:

c# - CUDAfying 一个依赖于类的结构?

c# - WCF 和子类

c# - "Item"属性以及索引器

c# - 带有 GridSplitter 的网格不考虑第二列的最小宽度

c# - 如何修复无法加载文件或程序集 'nunit.engine,版本 = 3.7.0.0

algorithm - 在 NxM 板上生成障碍物

c# - 随机二维瓦片 map 生成算法

javascript - 在值噪声算法实现中每隔一行固定一次

python - 无法将分形方程转换为 Python 算法

python - pygame 的随机线生成