gpt4 book ai didi

python - 删除直线中多余的点

转载 作者:行者123 更新时间:2023-12-02 01:06:30 25 4
gpt4 key购买 nike

我正在研究一种算法,该算法可以在简单的黑白 map 中分析大陆的形状,并返回其周长的轮廓。

示例如下:[(1,0)、(2,0)、(2,1)、(2,2)、(3,2)...]

到目前为止,算法生成了正确的列表,但正如您所看到的,它生成了冗余点。

在该示例中,第一个点之后的 3 个点形成一条直线,从 2,0 到 2,2。 (2,1),冗余点,应该被消除,但我不知道如何消除。

仅供引用:我正在一个纯Python应用程序中工作,我使用的唯一库是pygame。我研究过类似的问题,但没有运气。

最佳答案

3 点 (x1,y1), (x2,y2), 以及(x3,y3) 共线(在一条线上)如果:

(x2-x1)(y3-y2) - (y2-y1)(x3-x2) = 0

当轮廓中连续 3 个点共线时,中间的点就是多余的,可以将其删除。

您可以在向列表添加点时逐步执行此操作。如果列表中至少有 2 个点,则在添加另一个点之前,检查它是否与最后 2 个点共线。如果是,则删除最后一个点,然后再添加新的点。

完成后,检查起点和终点是否多余,如果多余则将其删除。

关于python - 删除直线中多余的点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59959454/

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