包含三维三角网格模型的八叉树结构

pyoctree的Python项目详细描述


包含三维三角形网格模型的八叉树结构。用于 光线跟踪/阴影投射。

用C++编写,用于速度,但使用Python使用Cython进行曝光。

Latest PyPI version

详细信息

PyOctree使用自适应结构,因此它将自动划分 分支以确保每个叶不超过200个对象。

要求

  • python 2.7或python>;=3.5

可选

  • vtk>;=v6.2.0或>;=v7.0(用于输出vtk文件以在paraview中查看八叉树结构)
  • 一个C++编译器,用于从提供的CPP文件(已经CythoN化)构建扩展模块。建议的编译器是: 如果在Windows上使用Python 2,则使用Python 2.7 EME>的微软C++编译器 -如果在Windows上使用Python 3,微软Visual C++ 2015(14)< EEM> -gcc在Linux上 -mingw32在Windows或Linux上 Cython & gt;= V0.20和C++编译器,从源
  • 编译

注意,如果使用提供的python控制盘进行安装,则不需要编译器。

安装

交集测试通过openmp使用并行处理。使用超过 单处理器,使用提供的python轮或使用 支持OpenMP的编译器。则设置环境变量的值 omp_num_线程到所需处理器的数目。

请注意,anaconda python发行版提供的编译器不支持openmp。

一。从源头建设

要在不使用openmp的情况下编译,请打开命令提示符,浏览到包含setup.py文件的基本目录并键入:

python setup.py install

要使用openmp编译,请打开命令提示符,浏览到包含setup.py文件的基本目录并键入:

python setup.py install --openmp

2.使用python wheel安装

releases即下载python控制盘。 PyOctree-0.2.10-cp36-cp36m-win_amd64.whl,用于Windows 64位上的Python 3.6。然后,打开命令 提示,浏览到下载目录并键入:

pip install pyoctree-0.2.10-cp36-cp36m-win_amd64.whl

请注意,python控制盘是用openmp构建的

用法

一。创建三维三角形网格模型的八叉树表示

frompyoctreeimportpyoctreeasottree=ot.PyOctree(pointCoords,connectivity)

其中:

  • pointcoords是一个nx3 numpy浮点数组(dtype=float),表示 网格点的三维坐标
  • 连接性是nx3 numpy整数数组(dtype=np.int32) 表示网格中每个三元的点连接性

2.寻找网格对象与光线的交集

八叉树可用于快速查找对象之间的交集 还有一束光线。例如:

importnumpyasnpstartPoint=[0.0,0.0,0.0]endPoint=[0.0,0.0,1.0]rayList=np.array([[startPoint,endPoint]],dtype=np.float32)intersectionFound=tree.rayIntersection(rayList)

示例

一些jupyter笔记本在examples目录中提供了如何 使用pyoctree。

帮助

如果需要帮助,请在github上创建一个问题。

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

推荐PyPI第三方库


热门话题
如何使用Netbeans在Java中创建可执行文件   swing Set不透明(真/假);JAVA   java JPA无法删除具有onotomany关系和cascatype all的实体   java Hibernate自参考映射难题   Java/从字符串到Java代码   java为什么我已经在取整了,却得到了一个无终止小数扩展?   java Wicket onsubmit信息对话框   java如何使用类、类加载器和URL获取资源   java在多模块项目中使用License Maven插件时出错   java HashSet“contains”方法是如何工作的?   图像JavaPNG显示为黑色   java如何在保持内容完整的同时在两个活动之间切换?   JAVA在Tomcat 7.0.27中,WAR无法为Prod正确解包   listview的java onclicklistener   JavaXPages托管Bean可以跨多个数据库工作吗?   java无法停止服务空对象引用错误Android   java将UTF8编码的字符串转换为人类可读的字符串   JavaSpring与JBossSAML的集成   java如何替换AuthorizationCodeInstalledApp类?