关于Clipper库使用小结

背景:

我最近使用的是python 版本的pyclipper库,其实C++版本的和python都是一样的。

介绍:


这里我先介绍一下clipper库是做什么用的:

它相当于一个小型的图形计算库
它可以将你输入的图形路径进行处理:

参考文档:

这里给大家推荐两个网址:
第一个:中文版本的clipper文档
第二个:英文版本的原文档
以便你使用时进行参考!


功能:

1、图形取交(并,差,异或):

可以计算两个多边形取交得到的图形形状,有顺序,并且可以同时判断多个图形。

import pyclipper
pc = pyclipper.Pyclipper()
pc.AddPaths(paths,pyclipper.PT_CLIP,True)
pc.AddPaths(squrd,pyclipper.PT_SUBJECT,True)
result = pc.Execute(pyclipper.CT_INTERSECTION,pyclipper.PFT_EVENODD,pyclipper.PFT_EVENODD)

result 就是返回后的路径,当然(这里面后面的参数,控制的是跟输入多边形方向有关的判断参数。

2、图形内缩:

可以将多边形向内缩放n个距离后的图形。

import pyclipper
pco = pyclipper.PyclipperOffset()
pco.AddPaths(points,pyclipper.JT_ROUND,pyclipper.ET_CLOSEDPOLYGON)
solution = pco.Execute(-int(line_width/2))

solution 就是内缩后的路径。Execute()里面的参数就是缩放的距离

3、图形简化:
主要是将多个相交的图形合并成 一个,或者将一个包含多个自交点的多边形拆分成多个。

import pyclipper
result = pyclipper.SimplifyPolygons(paths,pyclipper.PFT_EVENODD)

result 就是返回后的结果。

4、消除重复点(共线点):

import pyclipper
paths = pyclipper.CleanPolygons(paths,1.415)

paths 就是没有包含共线点的多边形

5、判断点与多边形的位置关系:

import pyclipper
result = pyclipper.PointInPolygon((x,y),path)

(x,y)就是这个待判断的点,path就是那个多边形。
result == 0 表示点在多边形外
result == 1 表示点在多边形内
result == -1 表示点在多边形上

注意1:这里的paths 必须是多个闭合的多边形

这个AddPaths
这个AddPath 两个有区别,有区别,有区别,一个是复数,一个是单数,哈哈哈哈
而且,这些数据的类型必须是 tuple类型的

注意2:
这是一个paths:

paths = (((1,2),(1,3),(2,3)),((4,5),(4,6),(5,6)))

这也是一个:

paths = (((1,2),(1,3),(2,3)),)

然后这个是path:

path = ((1,2),(1,3),(2,3))

注意3:
clipper 库返回的数据都是list类型的
当你使用这个值的时候,记得将其转换为tuple类型的。

评论 15
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值