python获取鼠标选取的内容_Python三维可视化:鼠标选取交互操作
版权声明:以上文章中所选用的图片及文字来源于网络以及用户投稿,由于未联系到知识产权人或未发现有关知识产权的登记,如有知识产权人并不愿意我们使用,如果有侵权请立即联系:55525090@qq.com,我们立即下架或删除。
简介:鼠标选取操作
鼠标选取
l 选取一个物体,查看数据
l 选取物体上一点,查看数据
鼠标选取
on_mouse_pick(callback, type=‘point’,Button=‘Left’,Remove=False)
Type:’point’,’cell’or ‘world’
Button:’Left’,’Middle’or ‘Right’
Remove:如果值为True,则callback函数不起作用
返回:一个vtk picker 对象
选取红色小球问题分析
l 建立一个figure
l 随机生成红、白小球
l 初始化红色小球选取外框
l 鼠标选取任意红色小球,外框移
动到该小球上(callback)
l 建立on_mouse_pick()响应机制
程序框架
# 场景初始化
figure = mlab.gcf()
# 用mlab.points3d建立红色和白色小球的集合
#
… …
# 处理选取事件
def picker_callback(picker)
# 建立响应机制
picker = figure.on_mouse_pick(picker_callback)
mlab.show()
# 用mlab.points3d建立红色和白色小球的集合
x1, y1, z1 = np.random.random((3, 10))
red_glyphs = mlab.points3d(x1, y1, z1, color=(1, 0, 0),
resolution=10)
x2, y2, z2 = np.random.random((3, 10))
white_glyphs = mlab.points3d(x2, y2, z2, color=(0.9, 0.9, 0.9),
resolution=10)
小球场景初始化建立
# 绘制选取框,并放在第一个小球上
outline = mlab.outline(line_width=3)
outline.outline_mode = 'cornered'
outline.bounds = (x1[0] - 0.1, x1[0] + 0.1,
y1[0] - 0.1, y1[0] + 0.1,
z1[0] - 0.1, z1[0] + 0.1)
选取框初始化建立
#当选取事件发生时,调用此函数
def picker_callback(picker):
if picker.actor in red_glyphs.actor.actors:
# 计算哪个小球被选取
# 确定该小球的ID
# 找到与此红色小球相关的坐标
# 将选取外框移到小球上
“选取”回调函数的结构
如何计算哪小球被选取
glyph_points =
red_glyphs.glyph.glyph_source.glyph_source.output.points.to_array()
glyph_points:获取一个小球的顶点坐标列表
如何计算哪小球被选取
def picker_callback(picker):
if picker.actor in red_glyphs.actor.actors:
# 计算被选取的小球的ID号
point_id = int(picker.point_id / glyph_points.shape[0])
Picker对像选取的顶点ID 每一个小球顶点的总数
如何计算哪小球被选取
def picker_callback(picker):
if picker.actor in red_glyphs.actor.actors:
# 计算哪个小球被选取
point_id = int(picker.point_id / glyph_points.shape[0])
if point_id != -1:
# 计算与此红色小球相关的坐标
x, y, z = x1[point_id], y1[point_id], z1[point_id]
# 将外框移到小球上
outline.bounds = (x - 0.1, x + 0.1,
y - 0.1, y + 0.1,
z - 0.1, z + 0.1)
建立响应机制
picker = figure.on_mouse_pick(picker_callback)
mlab.title(‘Click on red balls’)#设置窗口的标题文字
mlab.show()
程序的运行结果
替换视频 SV05V04-P15
程序框架的优化
程序运行两个问题:
l 小球初始速度太慢
l 鼠标选取不精确
程序框架的优化
# 场景初始化
figure = mlab.gcf()
figure.scene.disable_render = True
# 用mlab.points3d建立红色和白色小球的集合
… …
figure.scene.disable_render = False
# 处理选取事件
def picker_callback(picker)
# 建立响应机制
picker = figure.on_mouse_pick(picker_callback)
mlab.show()
所有物体全部建立完再绘制!
程序框架的优化
# 场景初始化
figure = mlab.gcf()
figure.scene.disable_render = True
# 用mlab.points3d建立红色和白色小球的集合
… …
figure.scene.disable_render = False
# 处理选取事件
def picker_callback(picker)
# 建立响应机制
picker = figure.on_mouse_pick(picker_callback)
Picker.tolerance = 0.01
mlab.show()
设置tolerance参数,提高选取精度! 更多>>
python获取鼠标选取的内容_Python三维可视化:鼠标选取交互操作相关推荐
- python获取指定单元格内容_python读取excel表格指定位置的内容
今天是第一次写博客,对之前学以致用的内容做一些总结,以备日后忘了或者可以给别人提供一些帮助.话不多说,开始写内容. python读取excel表格指定位置的内容 需求:现在有一个excel表格,里面有 ...
- python获取网页文本框内容_python识别html主要文本框
在抓取网页的时候只想抓取主要的文本框,例如 csdn 中的主要文本框为下图红色框: 抓取的思想是,利用 bs4 查找所有的 div,用正则筛选出每个 div 里面的中文,找到中文字数最多的 div 就 ...
- python中的doc_基于Python获取docx/doc文件内容代码解析
这篇文章主要介绍了基于Python获取docx/doc文件内容代码解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 整体思路: 下载文件并修改后缀 ...
- 使用Python获取春节档电影影评,制作可视化词云图
Python获取春节档电影影评,制作可视化词云图 前言 准备工作 采集数据部分 基本思路流程 代码实战 可视化词云图 代码展示 效果展示 前言 春节电影听巳月说都还可以,我不信,我觉得还是要看看看过的 ...
- python 获取csv的列数_Python读取excel的两种方法
excel是什么 Microsoft Excel是一个使用非常广泛的电子表格程序.它的用户友好性和吸引人的功能使其成为数据科学中常用的工具.对于excel来说,整个excel文件称为工作簿,工作簿中的 ...
- python 获取文件夹名称大全_python 获取指定文件夹下所有文件名称并写入列表的实例...
如下所示: import os import os.path rootdir = "./pic_data" file_object = open('train_list.txt', ...
- python 获取路径的盘符_python获取磁盘号下盘符步骤详解
这次主要教的是如何通过Python 获取Windows系统下的所有的磁盘盘符,以列表的形式展示出来,获取磁盘号下的盘符包括能够获取到我们正在插在电脑上的U盘,也可以读取到,希望能够对你们在学习过程中有 ...
- python获取系统时间为字符串_python怎么获取系统当前的时间
python获取系统当前的时间的方法:可以利用datetime.datetime.now()函数来获取.具体方法:1.导入datetime包:2.获取当前的时间,如[curr_time = datet ...
- python获取一个月之前日期_Python 获取几天前的时间
Python 获取几天前的时间 计算几天前并转换为指定格式.import time import datetime # 先获得时间数组格式的日期 threeDayAgo = (datetime.dat ...
最新文章
- 说说你对 HTML 语义化的理解?
- 查看SqlServer的内存使用情况
- ubuntu05.04 linux2.6.10 内核安装
- centos7执行sh文件_一文看懂centos7如何管理自定义脚本服务
- 文本编辑器实现打开帮助文件的功能
- desktop docker 无法卸载_docker,生信人的福音!
- linux之dig命令
- java集合AbstractMap_Java 集合中的 AbstractMap 抽象类
- 【Arduino】OTTO机器人(做二次开发的一点点总结)
- 4.3. aliases
- Bailian2797 最短前缀【字典树】
- 数据结构和算法9——哈希表
- Java实现常用的三种加密算法详解
- log算子 和dog 算子
- NLP中文句子类型判别和分类实现
- windows10怎么卸载计算机,Win10怎么卸载声卡驱动?电脑声卡驱动怎么卸载?
- VulnHub-noob打靶记录
- 翻译2Momentum, business cycle, and time varying expected returns(后附读后感)(图表上传不了)
- 有没有游泳可以戴的耳机、防水耳机能戴着游泳
- VBA工程加密,工程不可查看加密
热门文章
- Sqoop同步任务‘ can not be represented as java.sql.Date
- Jmeter javax.swing.text.BadLocationException: Position not represented by view 解决方法
- 极路由刷个人编译的openwrt固件全过程
- 基于搜狗接口的微信公众号及其信息爬取
- 特权老师又一最新力作-Verilog边码边学 视频教程
- SiteFactory支持ppt一键上传
- 【Stream流学习】Java 8 新特性|Collectors.joining() 案例详解
- api 3.0 个性化地图缩放时出现白色的底图,然而 api GL缩放时显示正常,调用api 3.0 接口时,如何避免地图缩放时出现白色底图
- Java Word中的文本、图片替换功能
- 数据备份:备份文件/文件夹怎么操作?