Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >用mayavi从delaunay滤波器中提取三角形

用mayavi从delaunay滤波器中提取三角形
EN

Stack Overflow用户
提问于 2013-05-09 19:55:43
回答 1查看 576关注 0票数 1

如何在mayavi中从delaunay滤镜中提取三角形?

我想像matplotlib一样提取三角形。

代码语言:javascript
运行
AI代码解释
复制
import numpy as np
import matplotlib.delaunay as triang
from enthought.mayavi import mlab

x = np.array([0, 1, 2, 0, 1, 2, 0, 1, 2])
y = np.array([0, 0, 0, 1, 1, 1, 2, 2, 2])
z = np.zeros(9)
#matplotlib 
centers, edges, triangles_index, neig = triang.delaunay(x,y)

#mayavi
vtk_source = mlab.pipeline.scalar_scatter(x, y, z, figure=False)
delaunay =  mlab.pipeline.delaunay2d(vtk_source)

我想从mayavi delaunay filter中提取三角形,以获得变量@triangle_index和@centers (就像matplotlib一样)

我发现的唯一一件事就是这个http://docs.enthought.com/mayavi/mayavi/auto/example_delaunay_graph.html

但仅获取边缘,并且编码不同于matplotlib

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-05-10 01:55:49

要获取三角形索引,请执行以下操作:

代码语言:javascript
运行
AI代码解释
复制
poly = delaunay.outputs[0]
tindex = poly.polys.data.to_array().reshape(-1, 4)[:, 1:]

poly是一个PolyData对象,poly.polys是一个存储索引信息的CellArray对象。有关CellArray的详细信息,请访问:http://www.vtk.org/doc/nightly/html/classvtkCellArray.html

为了得到每个外接圆的中心,你需要循环每个三角形并计算中心:

代码语言:javascript
运行
AI代码解释
复制
centers = []
for i in xrange(poly.number_of_cells):
    cell = poly.get_cell(i)
    points = cell.points.to_array()[:, :-1].tolist()
    center = [0, 0]
    points.append(center)
    cell.circumcircle(*points)
    centers.append(center)

centers = np.array(centers)

cell.circumcircle()是一个静态函数,因此您需要将三角形的所有点作为参数传递,通过修改第四个参数将返回中心数据。

下面是完整的代码:

代码语言:javascript
运行
AI代码解释
复制
import numpy as np
from enthought.mayavi import mlab

x = np.array([0, 1, 2, 0, 1, 2, 0, 1, 2])
y = np.array([0, 0, 0, 1, 1, 1, 2, 2, 2])
z = np.zeros(9)

vtk_source = mlab.pipeline.scalar_scatter(x, y, z, figure=False)
delaunay =  mlab.pipeline.delaunay2d(vtk_source)

poly = delaunay.outputs[0]
tindex = poly.polys.data.to_array().reshape(-1, 4)[:, 1:]

centers = []
for i in xrange(poly.number_of_cells):
    cell = poly.get_cell(i)
    points = cell.points.to_array()[:, :-1].tolist()
    center = [0, 0]
    points.append(center)
    cell.circumcircle(*points)
    centers.append(center)

centers = np.array(centers)

print centers
print tindex

输出为:

代码语言:javascript
运行
AI代码解释
复制
[[ 1.5  0.5]
 [ 1.5  0.5]
 [ 0.5  1.5]
 [ 0.5  0.5]
 [ 0.5  0.5]
 [ 0.5  1.5]
 [ 1.5  1.5]
 [ 1.5  1.5]]
[[5 4 2]
 [4 1 2]
 [7 6 4]
 [4 3 1]
 [3 0 1]
 [6 3 4]
 [8 7 4]
 [8 4 5]]

结果可能与matplotlib.delaunay不同,因为有许多可能的解决方案。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16470040

复制
相关文章
weex-07-通用布局
weex 常用的两种布局 分别为 flex弹性布局 和 绝对定位布局 一般情况下都是这两种配合使用!
酷走天涯
2018/09/14
7050
weex-07-通用布局
有没有一个最好的方法来成为一个iOS开发人员?
入行也好几年了,针对这几年,写些感悟。 成为iOS开发人员的最佳方法是论坛,Stack Overflow,Reddit和其他社交媒体平台的常见问题。 问题通常会询问是否从头开始创建应用程序,或先学习语言,然后创建应用程序。我们假设这个语言是Swift。 您可以先学习Swift语言。您也许使用playgrounds,将练习使用典型的算法,创建数据结构,并了解语言语法,。 或者,您可以考虑应用程序,并开始创建应用程序,同时在运行中学习语言。一个重要的问题是您是否可以通过这种方式实际完成一个应用程序。这个问题的答
Dwyane
2018/05/22
5770
保存用户信息到本地存储
简介:在页面加载时从本地存储中恢复数据,并将已保存的数据显示在对应的输入框中。一起来看看:
Dabenshi
2023/08/27
3250
北航打破模态壁垒,跨可见光-红外模态的通用物理对抗攻击方法来了
近年来,针对视觉感知系统安全性评估的探索逐步深入,先后有研究者成功实现基于眼镜、贴纸、衣服等不同载体的可见光模态安全评估技术,也有一些针对红外模态的新尝试。但是它们都只能作用于单一模态。
机器之心
2023/09/19
4320
北航打破模态壁垒,跨可见光-红外模态的通用物理对抗攻击方法来了
【- Flutter 组件篇 285 -】 CustomSingleChildLayout 通用单子布局
一、认识组件 1. CustomSingleChildLayout组件介绍 可容纳一个子组件,并指定代理类对子组件进行排布。代理类可获取父容器区域和子组件的区域大小,及区域约束情况。 名称: CustomSingleChildLayout 通用单子排布 类型: 布局型 重要性: ☆☆☆ 相关组件: 【Align】、【FractionallySizedBox】、【CustomMultiChildLayout】 家族: RenderObjectWidg
张风捷特烈
2020/05/26
2.2K0
【探花交友】保存用户信息、上传用户头像、用户信息管理
YAPI接口地址:http://192.168.136.160:3000/project/19/interface/api/88
陶然同学
2023/02/24
2.5K0
【探花交友】保存用户信息、上传用户头像、用户信息管理
普通用户使用systemd
要让 CentOS 8 的普通用户(非 root 用户)使用 systemd 进行管理,您需要做以下几个配置:
运维开发王义杰
2023/08/16
1.9K0
普通用户使用systemd
「R」Shiny:用户界面(三)布局
在我们知道如何创建一系列输入和输出控件之后,我们需要学会如何在一个页面中对它们进行排列,以达到比较好的展示效果。这正是布局函数的工作,布局函数提供了一个应用高层次的可视化结构。
王诗翔呀
2020/07/06
3.8K0
「R」Shiny:用户界面(三)布局
使用普通用户执行 Docker
srw-rw----. 1 root root 0 May 25 14:43 /var/run/docker.sock
用户8704835
2021/06/07
2.5K0
centos添加普通用户 原
(adsbygoogle = window.adsbygoogle || []).push({});
拓荒者
2019/03/11
1.5K0
Linux普通用户使用Docker
Docker 是一款开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的 Linux 或 Windows 操作系统的机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。
hotarugali
2022/03/07
7.7K0
TortoiseGit(乌龟git)保存用户名密码的方法
github的windows版也用过一段时间,但还是不太习惯。所以目前仍然青睐与msysgit+乌龟git的组合。TortoiseGit在提交时总数会提示你输入用户名密码,非常麻烦。解决方案如下:
战神伽罗
2019/07/24
3.9K0
MySQL root用户不能为普通用户赋权限
MySQL root用户不能为普通用户赋权限, 报错:Error Code: 1044. Access denied for user ‘root’@’%’ to database mysql> select host,user,password,Grant_priv,Super_priv FROM mysql.user; +--------------+---------+-------------------------------------------+------------+------
范一刀
2021/08/10
4.2K0
Cookies+Session保存用户登陆状态
Cookies+Session保存用户登陆状态的验证方式是纯的Session方式,虽然设置了超时时间,但是好像登陆状态经常会动不动就丢失,导致客户抱怨不断,今天仔细的考虑了一下,决定采用Cookies跟Session结合的方式来判断用户的登陆状态
阳光岛主
2019/02/19
1.6K0
联通用户的福利,不了解就拉倒!
​   当今这个4G时代,联通很明智的和各大企业携手搞起了互联通合作资费卡,除了对应的免流服务,对应的资费也可以说很是公道了。
阿豪聊干货
2018/08/09
1.6K0
联通用户的福利,不了解就拉倒!
Linux普通用户添加sudo权限
2.添加sudo文件的写权限,命令是: chmod u+w /etc/sudoers
用户5760343
2022/05/24
5K0
深入Java Swing用户界面组件布局管理器:网格布局+面板+边界布局
在讨论每个Swing组件(例如文本域和单选按钮)之前,首先介绍一下如何把这些组件安排在一个框架内。与Visual Basic不同,JDK没有表单设计器,需要通过编写代码来定制(布局)用户界面组件所在的位置。
愿天堂没有BUG
2022/10/28
3.8K0
深入Java Swing用户界面组件布局管理器:网格布局+面板+边界布局
普通用户如何应对Heartbleed漏洞?
4月9日,一个代号“Heartbleed”(意为“心脏出血”)的重大安全漏洞日前被曝光,它能让攻击者从服务器内存中读取包括用户名、密码和信用卡号等隐私信息在内的数据,目前已经波及大量互联网公司。那么普通用户如何保护自己免受攻击呢? 以下操作建议您: 1. 不要在受影响的网站上登录帐号——除非你确信该公司已经修补了这一漏洞。如果该公司没有向你通告相关进展,你可以询问他们的客服团队。 一些网站(包括雅虎和OKCupid)受了影响但表示他们已经解决了全部或部分问题,你如果不放心,可以在http://filippo
安恒信息
2018/04/10
7780
点击加载更多

相似问题

在Android中有没有什么简单、通用的方法来获取布局的根视图?

10

有没有一种通用的方法来知道用户是否在按住CTRL键?

20

有没有更通用的方法来声明这个数组?

10

有没有一种通用的方法来打印变量?

22

有没有更系统的方法来填充我的布局?

21
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档