gpt4 book ai didi

Java libGDX - 合并多边形

转载 作者:太空宇宙 更新时间:2023-11-04 07:09:05 26 4
gpt4 key购买 nike

我正在制作一个水下游戏,那里有一些由方 block 组成的废墟。目前,我正在检查与潜艇的多边形和废墟的每个 block 的碰撞,使用一个返回我制作的矩形顶点的函数。

public static float[] rectangleToVertices(float x, float y, float width,
float height) {
float[] result = new float[8];
result[0] = x;
result[1] = y;

result[2] = x + width;
result[3] = y;

result[4] = x + width;
result[5] = y + height;
result[6] = x;
result[7] = y + height;

return result;
}

我认为这不是很有效,有些废墟超过了 10 个方 block ,而且我不想检查单个物体的 10 次碰撞。有没有办法将多个多边形合并为一个?

这张图可以更好的解释: enter image description here

红色区域是多边形。

最佳答案

如果我理解你的问题,那么你正在删除共享边。

最简单的解决方案是从一个 block 开始,将其边缘添加到HashSet(例如S1)。然后,在迭代 block 列表时,检查其他任何 block 是否共享 S1 的任何边。如果是,则将该 block 的所有边添加到 S1。对于 S1 中已经存在的边,将它们添加到另一个 HashSet(例如 S2)中以跟踪此类边。最后,计算 S1-S2,这将是您想要的边集。使用这些边重建最终的多边形。

顺便说一句,您可能想看看 The Skyline Problem‍​​ .

关于Java libGDX - 合并多边形,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20919993/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com