基于扫描线算法的Voronoi细分

SweeplineVT的Python项目详细描述


sweep linevt—使用扫描线算法的Voronoi细分

SweeplineVT github

pip install SweeplineVT

说明

  • 基于Steven Fortune 1986年提出的扫描线算法的Voronoi细分
  • 进行质心Voronoi细分(CVT)
  • 做Delaunay三角测量
  • 在不需要像素化/分块的情况下精确定位点。在
  • 将Voronoi图限制在矩形区域内

示例

对点列表进行Voronoi细分

  • “的内容”示例.dat““
^{pr2}$
slvt.py example.dat --calCentroid
pl_VT.py example_VT.dat example_ctd.dat -s

红点是Voronoi站点(输入点来自“示例.dat"). 绿线将每个位点与相应的细胞质心连接起来。在

example

对0<;x<;7,0<;y<;5中的14个点进行质心Voronoi细分(CVT)。

slvt.py --makeCVT 14 --border 0,7,0,5 -s
pl_VT.py CVT14_VT.dat -s

“-s”的slvt.py公司意思是“沉默”-pl的“s”_VT.py公司“步”的意思。在

  • 您可能会看到一个可能的结果:
    CVT14

显示细胞面积分布

from SweeplineVT import Voronoi
import pylab as pl
x=np.random.random(size=10)
y=np.random.random(size=10)
vor=Voronoi(events=np.vstack((x,y)).T,calArea=True,autoscale=False)
Area,ind,cts=vor.getarealist()
Area/=np.array(cts)
pl.hist(Area)

输出文件

  • {FileName}_VT.dat公司:每个项目对应一个单元格边缘。这9列是:
  • 1: 边缘索引
  • 2-3和3-4:边的两个Voronoi顶点(节点)的坐标
  • 5-6和7-8:最近的两个Voronoi站点的坐标(Delaunay图)
  • 使用“--calCentroid”,{FileName}_ctd.dat.日期每个单元格对应一个项目。6列为:
  • 1: 细胞/部位索引。在
  • 2-3:细胞的Voronoi位点
  • 4-5:单元的质心
  • 6: 单元的面积
  • 7: 站点重复编号(>1表示重复)
  • 使用“--calArea”,{FileName}_面积数据:每个项目对应一个单元格。6列为:
  • 1: 细胞/部位索引。在
  • 2-3:细胞的Voronoi位点
  • 4: 单元的面积
  • 5: 站点重复编号(>1表示重复)

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
无JPA的纯Hibernate ORM java SpringBoot配置   安卓会生成一组唯一的java数字   java我的自定义阵列列表每次启动时都会崩溃我不确定为什么会一直崩溃   Java继承;将子类传递给超类的抽象方法   java从没有if语句的数组中获取instanceof type   java中使用对象的温度转换   存储库接口的JavaSpringDataMongoDBeanXML配置   java JAXWS为iBM websphere、iBM web服务客户端添加寻址   数组试图返回Java中两个对象的面积之和   apache Spark java:columnNameOfCorruptRecord和badRecordsPath在加载csv时不工作   java无法创建。txt文件   java Hibernate与MySQL插入查询不一致   不考虑java Hazelcast分布式地图的最大大小   bash Java如何在父进程中设置环境变量