gpt4 book ai didi

c# - 如何以编程方式合并两个多边形(对象数组)?

转载 作者:太空狗 更新时间:2023-10-29 18:30:04 25 4
gpt4 key购买 nike

[编辑:我试着稍微重写了我的问题,因为似乎没有人理解我想要什么……而且我想,这对我来说是一个困难的算法:)]

我面临的问题是连接单个多边形。每个都是一个 4 点多边形。最终结果是两个多边形的合并/并集。

下图显示了一种可能的结果(结果可能会有所不同,因为每个结果的黑色填充部分可能不同)。

我从这样的事情开始:

Polygon one = [A,B,C,D];  // (A/B/C/D) might look like : new Point {x = 10, y = 15} 
Polygon two = [E,F,G,H];

我需要一个算法来计算这两个集合的并集,所以我会得到如下结果:

Polygon total = [I,J,K,L,M,N]; // = new points

我不必将其可视化(即使我这样做......),我只需要一组定义新多边形的点(这两个的并集),因为我的最终结果将是该合并多边形的质心。
我已经有了基于输入点集计算质心的算法。但我需要先获得正确的分数。

到目前为止,我已经找到关于凸包算法的提及,但我担心它会生成以下多边形(这是错误的):

编辑:

如此不同的方式,如何看待这个问题:我有一个程序,能够处理由 4 个点表示的对象。每个点都有两个属性(x坐标,y坐标)。
然后程序能够在这些点之间画线。然后这些线看起来像正方形、矩形或多边形。这个结果取决于给定的坐标,但我知道,我将始终使用点来生成多边形。一旦这些点连接起来,程序就可以填充这个连接的区域。绘制完成后,您可以看到下图:

但是:程序不知道,他只是做了一个多边形。他只知道,他从我这里得到了 4 个点,他连接它们并填充它们。

然后我有第二个对象 (=polygon),它由另一组点(不同坐标)定义。程序再次不知道他正在创建一个填充的多边形..他只是用 4 个给定点做了一些操作。本例中的结果是另一个多边形:

现在,我们只是在显示时绘制两个多边形……我们给了它们这样的坐标,使它们相互重叠。结果如下所示(仅考虑填充区域):

我的程序只绘制两个多边形。美好的。您只能在屏幕上看到一个多边形(因为有两个重叠 = 它们看起来像一 block )并且我需要计算那一 block 的质心

我已经有了一个算法,它将接受一组点(表示形成多边形的点)并从这些点计算质心。但是我现在不能使用这个算法,因为我不能给他需要的分数,因为我不知道它们。

以下是我想要的要点:

所以我的算法应该从点 A、B、C、D、E、F、G、H 开始,他应该给我点 I、J、K、L、M、N 作为结果。

总结:我需要计算多边形的质心,它是两个重叠的单独多边形合并/合并的结果。

我想,两个多边形的并集就足以解释 :)

最佳答案

在这里http://www.codeproject.com/KB/recipes/Wykobi.aspx是计算几何算法的集合。至少您可以从那里开始。

关于c# - 如何以编程方式合并两个多边形(对象数组)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5846172/

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