背景:

我最近使用的是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类型的。

关于Clipper库使用小结相关推荐

  1. 算法:线性时间选择_机器学习必修课!scikit-learn 支持向量机算法库使用小结

    本文从实践的角度对scikit-learn SVM算法库的使用做一个小结.scikit-learn SVM算法库封装了libsvm 和 liblinear 的实现,仅仅重写了算法了接口部分. 1. s ...

  2. scikit-learn 支持向量机算法库使用小结

    之前通过一个系列对支持向量机(以下简称SVM)算法的原理做了一个总结,本文从实践的角度对scikit-learn SVM算法库的使用做一个小结.scikit-learn SVM算法库封装了libsvm ...

  3. Clipper库 | 类型和填充规则

    裁剪类型(ClipType) CT_INTERSECTION = 0 CT_UNION = 1 CT_DIFFERENCE = 2 CT_XOR = 3 交集,AND (intersection) : ...

  4. Clipper库 | 坐标圆整和精度控制

    坐标圆整造成的问题 在Clipper库中顶点(IntPoint)的坐标使用的是整数类型, 目的是为了保持数字的鲁棒性,所以用整数类型来存储坐标,而不是我们常见的浮点数类型(浮点存在不精确性).然而坐标 ...

  5. Clipper库中文文档详解

    Clipper库中文文档详解 简介 Clipper Library(以下简称为Clipper库或ClipperLib或Clipper)提供了对线段和多边形的裁剪(Clipping)以及偏置(offse ...

  6. 使用 Clipper 库的一些问题记录

    前言: 最近一直在使用Clipper库做一些图形裁剪相关的工作,发现这个库比较好用,使用过程中遇到了一些问题,现在记录一下,方便自己和他人. 首先感谢以下博文的帮助: http://blog.csdn ...

  7. 留个念想,clipper库的使用效果

    clipper库的使用效果: 红色为内缩,蓝色为外扩,上图为多个数值的收缩扩展,内缩时可导致闭合多边形分裂效果. 红色为内缩,蓝色为外扩,内缩距离过大可导致某些分裂的小区域直接消失的效果.

  8. Clipper库中文文档(ClipperLib)

    中文文档链接:https://love2.io/@martinchan3/doc/ClipperDocCN Git仓库:https://github.com/MartinChan3/ClipperDo ...

  9. C++使用Clipper库

    clipper是一个开源图形处理库. 在gcc编译器中,可以直接使用,在VS的编译器中,要修改一些东西才能用. 目前还在学习中,很多有关图形计算的问题,交.并.差.offset等计算. Clipper ...

最新文章

  1. java读取本地文件_java 读取本地文件实例详解
  2. 电容屏:为什么带手套无法进行操作手机?
  3. python中str和repr_python中str()和repr()函数的区别
  4. ping命令时常碰到的问题
  5. print2flashwindows7旗舰版下载哪一个_JUJUMAO_MSDN原版 win 7 二合一 旗舰版32位 64位原版ISO镜像...
  6. 阿里云天池 Python训练营Task3: Python基础进阶:从函数到高级魔法方法 学习笔记
  7. 论调用约定__stdcall,__cdecl,__fastcall,thiscall,naked call
  8. autocad 如何摆正显示_如何在 VB 中连接 AutoCAD
  9. linux 中select()函数的使用
  10. 2020最新录制原生淘宝客APP视频搭建教程【最新原创】
  11. 第一篇:微信公众平台开发实战Java版之了解微信公众平台基础知识以及资料准备
  12. Excel批量核实输入的银行卡号信息是否正确!
  13. 10-富文本编辑器wangEditor的使用
  14. zabbix——分布式监控系统
  15. 计算机网络技术用i3可以吗,买电脑避坑第一步,i3处理器和i5等处理器有什么区别?...
  16. 第2关:求五边形的面积
  17. 5G应用发展情况,你知多少
  18. 深度学习初学者,如何下载常用公开数据集并使用呢?
  19. 消费者、用户、顾客、客户,有何区别?
  20. 3d打印机python编写_3D打印机加个树莓派实现3D打印“云”

热门文章

  1. 九针串口跟电脑主板接法
  2. 提高访问量,我用魔盒
  3. 两条命令解决移动硬盘无法弹出的问题
  4. 网站诊断分析-网站诊断分析软件-网站SEO诊断分析软件
  5. 看这里!你的手机号关联了多少互联网账号?一证通查→
  6. SpringMVC的参数传递
  7. 机器学习cae_“NVH机器学习”交流与数字化转型的探讨
  8. regsvr32提示模块加载失败 请确保二进制
  9. G2评选ManageEngine为UEM的高效执行者和创新领导者
  10. 收藏|Java程序员必看的几本基础书籍和常用工具