algorithm - 需要起点来实现当前算法

标签 algorithm libgdx

我目前正在学习 libGDX,并用网格做一些事情。我需要给视频卡一些三角形来渲染。

我现在的任务就是这样。在某个“盒子”的某些点上有几个矩形(每个矩形都有原点、宽度和高度),将矩形的外部分成矩形本身。有了这些小矩形后,我可以将它们分成三角形并轻松渲染。像这样。 enter image description here

有蓝色矩形信息。我需要有这样的东西。在用橙色勾勒出这些矩形后,我可以将它们分成三角形并轻松渲染。 enter image description here

我的做法是这样的。从每个矩形的顶部和底部“绘制”水平线,直到到达盒子的壁或其他矩形的壁。这样做,该字段将像这样以矩形分隔 enter image description here 这基本上就是我所需要的。 目前无法想象程序化方法。任何帮助将不胜感激。谢谢。 我将用 Java 实现它。

最佳答案

您绘制的内容分为两个步骤。

第 1 步通常称为“梯形分解”,您可以通过 google 搜索大量深入信息。要进行梯形分解:

  • 找到所有存在顶点或交点的 y 坐标,并对它们进行排序。
  • 然后,每对相邻 y 坐标之间的每个水平 strip 必须由 strip 边缘上有顶部和底部的梯形组成,因为 strip 内不能有角或交叉点。找到跨越 strip 的每个多边形或边的部分,以创建梯形分解。

梯形的水平 strip 很容易转换成三角形 strip ,只需在每个梯形的对角添加切割边即可,但要获得您绘制的内容,您需要第二步。

在第 2 步中,您将遍历成对的相邻 strip ,并在可能的情况下组合它们的梯形。这会将每个矩形的所有部分重新合并在一起,并去除大矩形两侧的细条,留下您绘制的条分解。

关于algorithm - 需要起点来实现当前算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51565060/

相关文章:

arrays - 顺序遍历数组的最快算法

c - 在节点中有多个元素的 B 树中递归查找第 k 个最小元素

algorithm - 范围最小查询、动态数组、区间树、treap

java - 在 LibGDX 中组合多种 Material \纹理

java - Libgdx 平铺 map 无法正确显示

algorithm - 极小极大算法的伪代码

php - 在 PHP 中压缩多维数组?

java - LibGDX And​​roid 首选项 - 如何将数据保存到应用程序

java - Android Studio 应用程序甚至在使用 Libgdx 打开之前就停止工作

java - 渲染图 block Java Libgdx