gpt4 book ai didi

python - 在 python 中使用 Clipper 库生成多边形偏移

转载 作者:行者123 更新时间:2023-11-30 03:47:00 25 4
gpt4 key购买 nike

我想使用 Clipper 库 ( http://www.angusj.com/delphi/clipper.php ) 在闭合多边形中产生偏移量。

因为我使用的是 python 2.7,所以我使用 pyclipper ( https://pypi.python.org/pypi/pyclipper ) 来做同样的事情。

不幸的是,我无法从 C++ 中 clipper 的多边形偏移示例中理解:

 #include "clipper.hpp"  
...
using namespace ClipperLib;

int main()
{
Path subj;
Paths solution;
subj <<
IntPoint(348,257) << IntPoint(364,148) << IntPoint(362,148) <<
IntPoint(326,241) << IntPoint(295,219) << IntPoint(258,88) <<
IntPoint(440,129) << IntPoint(370,196) << IntPoint(372,275);
ClipperOffset co;
co.AddPath(subj, jtRound, etClosedPolygon);
co.Execute(solution, -7.0);

//draw solution ...
DrawPolygons(solution, 0x4000FF00, 0xFF009900);
}

在 python 中实现相同。

我只看到了 pyclipper 的一个例子(剪裁,而不是偏移):

import pyclipper

subj = (
((180, 200), (260, 200), (260, 150), (180, 150)),
((215, 160), (230, 190), (200, 190))
)
clip = ((190, 210), (240, 210), (240, 130), (190, 130))

pc = pyclipper.Pyclipper()
pc.AddPath(clip, pyclipper.PT_CLIP, True)
pc.AddPaths(subj, pyclipper.PT_SUBJ, True)

solution = pc.Execute(pyclipper.CT_INTERSECTION, pyclipper.PFT_EVENODD, pyclipper.PFT_EVENODD )

不幸的是,我不是一个有经验的程序员,无法继续前进。

请在这方面帮助我。

提前致谢。

最佳答案

在 pyclipper 中相同的是:

subj = ((348, 257), (364, 148), (362, 148), (326, 241), (295, 219), (258, 88), (440, 129), (370, 196), (372, 275))

pco = pyclipper.PyclipperOffset()
pco.AddPath(subj, pyclipper.JT_ROUND, pyclipper.ET_CLOSEDPOLYGON)
pco.Execute(-7.0)

""" Result (2 polygons, see image below):
[[[365, 260], [356, 254], [363, 202]], [[425, 133], [365, 191], [371, 149], [370, 145], [368, 142], [364, 141], [362, 141], [358, 142], [355, 145], [322, 230], [301, 215], [268, 98]]]
"""

我们试图使 pyclipper 方法和函数的命名尽可能接近 python 包装器的原始名称。此外,它应该与模仿基础库一起使用的方式。唯一的大区别在于 Execute 函数的使用方式,如此处所述 pyclipper - How to use .

您可以查看 tests更好地掌握用法。

offset

关于python - 在 python 中使用 Clipper 库生成多边形偏移,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33874917/

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