二维和三维voronoi镶嵌:voro++库的python入口点。

pyvoro的Python项目详细描述


pyvoro
=


3d voronoi镶嵌:voro++库的python入口点(http://math.lbl.gov/voro++/)

**最近添加的功能:**

*在pypi上发布*-感谢@ansobelev的贡献,现在可以使用
`pip`-只需键入'pIP安装pyvoro`,如果你喜欢的话,可以使用sudo。

*对numpy数组的支持*-感谢@christopherpoole的贡献,现在可以传入一个2d(nx3或nx2)numpy数组。

*2d helper*,它将平面上点的3d镶嵌结果转换回
2d向量和单元(参见下面的示例。)

*根(加权)选项*,根据提供的一组
半径值对voronoi单元大小进行加权。

*周期边界支持*,请注意,每个单元在其源的参考框架中返回o点可以(也将)位于边界框之外。

发出

python setup.py install


将在系统范围内安装pyvoro,而


也可以使用任何
[其他](https://pythonhosted.org/an_example_pypi_project/setuptools.html using setup py)`setup.py`关键字
,包括


以"开发"模式安装包。或者,如果您希望自动引入所有依赖项,
您仍然可以使用"pip":


`-e选项使pip从源代码安装包处于开发模式。

然后可以使用代码:


import pyvoro
pyvoro.compute_voronoi(…)
pyvoro.计算voronoi(…)







i=[1.3,1.4]粒子半径——可选,和keywo与RD兼容的参数。

```

{腾讯讯网`-3,'顶点':[1,0,2,6,6,5]},
{{{邻接网`-5,'顶点':[1,3,9,7,0]},
{{{{{邻接网`:146,'顶点':[2,4,11,10,10,6]},
{{{{{{邻接网{邻接网`:1,'顶点':[2,0,7,4]},
{{{{邻接网{9,'顶点':[3,8,8,8,10,10,11,11,11,9]},
{{{'5,
{{{{{{{'5},一个邻接单元格:11,'顶点'[4,7,9,9,9,11]},
{{{邻接单元格':139,'顶点':[5,6,10,10,8]}


'邻接':[
[1,2,7],
[5,0,3],
[4,0,6],
[8,1,9],
[11,7,2],
[11,7,2],
[6,1,8],
[2,5,10],
[2,5,10],[2,5,5,10,8],

[5,8],
[1,
[9,0,4],
[5,3,10],
[11,3,7],
[6,8,11],
[10,9,4]


'原始':[1.5834737382116,0.830481031034382,0.84646444455125],
'原始':[1.58343473737382116,0.5848481034382,0.84842644455125],
'顶点':[
[0.0,0.0,0.0,0.0],
[2.695210610610610660210660213537,0.5210660213537,0.0,0,0.0,0,0.0,

[765856],
[2.6796085747800173,0.9893738662896467,0.0],
[0.0,1.157776888878898929044,0.966719419482826924593],
[2.6855757575135451888,0.0,0.0,1.21399446383838383838383811037],
[1.54343472454537773115,0.0,2.0648918087484848473],
[0.0,1.223685238383838977006,0.0],
[2.670010808080808080808080849494999084949990841414146,1.0246858585858585858929494949493171897545,1.1392273839598812],
[1.6298653122890692,1.8592211309121414,0.0],
[1.8470793965350985,1.719917830149991,1.693816653703774],
[1.752827946840703,1.7963648490662445,1.62502449424244]
]
}
```

文章是最接近坐标系原点的,因此很多顶点位置都是零或大约零,并且
(重要的是)**negative cell id**对应于边界(其中
一个框的角上有三个,特别是id`1',`3',和`5`,(
`x_i=0`边界,用负id表示,因此`-1`,`-3`和`-5`--
这是voro++引用边界接口的传统方式。)


最初仅进行非根细分,并计算*所有*信息
(包括单元邻接)。稍后可能会添加其他代码路径。

<2d细分
----


现在可以运行一个更简单的函数来获取点周围的2d单元格,并为您处理所有细节:

``python
import pyvoro
cells=pyvoro.compute_2d_voronoi(
[[5.0,7]。0],[1.7,3.2],…],点位置,这次是二维向量。
[[0.0,10.0],[0.0,10.0]],框大小,这次是二维的。
2.0,块大小;和以前一样。
半径=[1.2,0.9,…]粒子半径——可选的,与关键字兼容。

````


他现在的模式和3d一样,因为这并不像要处理一个
全新的模式那么烦人。由于单元格是多边形,并且
顶点返回的顺序正确,因此邻接现在有点多余。这些单元格看起来像是这些单元格的列表:

`` python
{属性':[0,5]},
{'相邻单元格':-2,'vertices':[0,1]},
{'相邻单元格':39,'vertices':[2,1]},
{'相邻单元格':25,'vertices':[2,3]},
{'相邻单元格':12,'vertices':[4,3]},
{'相邻单元格':9,'vertices':[5,4]}

'originaL':[8.168525781010283,5.94371123911239620341],
'顶点':[
[10.0,5.32455807676484844442],
[10.0,6.442713103105218478],
[9.088888948888888250326,7.11884847221688181966],
[6.740750750220282828282828282828282828282828282828282828282828282828282828282828282828282828282828282828282828282828282828282828282828282828282828282828282828282828282828282828282828br/>[7.77400067532073,5.02320427474993〕
"卷":5.102702932807149
} BR/>‘BR/>< BR/> *(注意,边现在将被索引为1~4,而‘卷’键实际上是面积。*)*BR/> BR/>注释:< BR/>编译:如果Cython .Pyx文件正在C++模式下编译,所有Cython可见COD。必须编译为"C++"-这将不兼容任何C函数声明为"外部"C"{…"}在这个库中,作者只使用C++函数来实现所有的功能,以便能够利用C++的"STD::vector & lt;t & gt;"类来表示Voronoi单元的(荒谬的非特定的)几何结构。将"setup.py"和"py voro"文件夹移到更新的voro++源代码签出中也可以工作,但如果使用的任何定义发生更改,则它将无法编译。如果您需要此库使用更新版本的voro++,请务必打开支持问题;最好还是修复它并向我发送请求:)

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

推荐PyPI第三方库


热门话题
java Admob不使用webview   Java Wicket表单:序列化对象类“myClassName”时出错   java googledriveapi更新文件与我的帐户管理员   java简单框架未知xml标记解析   java如何使用主类和用户获取Spark应用程序ID   java如何更改自定义属性的值?   java有没有办法在jMock中找到未使用的期望值?   gradle运行任务的java文档?   java通过使用数组来存储文本文件的行,通过覆盖来删除文本文件中的行   用于表达式语言注入的java利用负载   java IDEStyle程序运行   java在运行时启用/禁用Springws   爪哇芦苇。formatNumber NullPointException   java为什么我的代码无法检测两个动态实体之间的碰撞?