如何绘制一个图,其中每个顶点都是给定大小的矩形,但边可以是任意长度?

Posted

技术标签:

【中文标题】如何绘制一个图,其中每个顶点都是给定大小的矩形,但边可以是任意长度?【英文标题】:How can you plot a graph where each vertices is a rectangle with given size but edges can be any length? 【发布时间】:2021-11-10 23:37:27 【问题描述】:

这个问题是我正在尝试的程序生成地牢算法的一部分。我想随机生成一个图形(代表房间和走廊),为每个顶点/房间分配大小并将它们绘制在 2d 平面上。一个要求是我不希望边缘/走廊与房间重叠。 Example pic

在不知道它们的空间关系的情况下,我不知道如何放置这些房间。

【问题讨论】:

这是一个非常巧妙的问题。可能不适合 Stack Overflow,但应该是。 【参考方案1】:

这是一个广泛的问题。对于 *** 来说可能过于宽泛,但我可以给你一些想法。

如果您不希望走廊重叠,那么您需要随机生成一个planar 图表。一种方法(在许多方法中)是随机生成点,找到点的Delaunay triangulation,让三角剖分的顶点为房间,三角形的边为走廊。

一旦你有一个平面图,把它布置成一个 2D 地牢,这在graph drawing algorithms 的领域是一个问题。有多种绘图算法可用于多种图形绘制,例如orthogonal graph drawings 等。你最好去探索这些文献。

如果您按照我上面的建议通过 Delaunay 三角剖分生成图形,则三角剖分将隐含一个图形绘制。您可能需要相对于您想要的房间大小扩大三角测量,但如果您不介意任意长的走廊,则始终可以这样做。它看起来不太像地牢,但您可以对其进行调整,直到通过启发式方法进行调整。或者选择其他图形绘制算法。

【讨论】:

以上是关于如何绘制一个图,其中每个顶点都是给定大小的矩形,但边可以是任意长度?的主要内容,如果未能解决你的问题,请参考以下文章

无法使用 VAO 和 EBO (openGL) 绘制多个对象

缺失的拼图

将网格绘制为背景的更好方法

绘制动画网络图的工具是什么

编辑顶点数组中的缓冲区数据

它们其实都是“图”