关于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类型的。

  • 7
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 15
    评论
Clipper是一个用于快速开发高性能微服务的Python框架。它提供了丰富的功能,能够帮助开发人员快速构建可伸缩、可靠、高性能的微服务应用程序。 Clipper的中文文档提供了详细的说明和使用指南,以方便国内开发人员更好地理解和使用。文档主要包含以下几个方面内容: 1. 安装与配置:文档详细介绍了Clipper的安装和配置过程,包括各种操作系统的适配和依赖的安装。此外,还介绍了如何设置和调整Clipper的配置参数,以满足不同应用场景的需求。 2. 快速入门:文档提供了基本的示例代码和步骤,帮助开发人员快速上手Clipper。通过简单的示例,开发人员可以了解如何定义模型、创建容器和部署模型等基本操作。 3. 功能介绍:文档详细介绍了Clipper提供的各种功能和特性。例如,它可以支持多种模型类型,包括Python函数、Docker容器、TensorFlow模型等。此外,Clipper还提供了多种部署模式和自动伸缩的功能,以满足不同应用场景的需求。 4. 高级特性:文档进一步介绍了Clipper提供的一些高级特性和技术,例如如何进行A/B测试、如何进行模型版本管理以及如何进行性能调优等。这些高级特性可帮助开发人员更好地应对复杂的微服务应用开发需求。 综上所述,Clipper中文文档提供了丰富的内容,可以帮助开发人员快速上手Clipper,并全面了解其各种功能和特性,从而更好地进行微服务应用的开发和部署。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 15
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值