版权声明:以上文章中所选用的图片及文字来源于网络以及用户投稿,由于未联系到知识产权人或未发现有关知识产权的登记,如有知识产权人并不愿意我们使用,如果有侵权请立即联系: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三维可视化:鼠标选取交互操作相关推荐

  1. python获取指定单元格内容_python读取excel表格指定位置的内容

    今天是第一次写博客,对之前学以致用的内容做一些总结,以备日后忘了或者可以给别人提供一些帮助.话不多说,开始写内容. python读取excel表格指定位置的内容 需求:现在有一个excel表格,里面有 ...

  2. python获取网页文本框内容_python识别html主要文本框

    在抓取网页的时候只想抓取主要的文本框,例如 csdn 中的主要文本框为下图红色框: 抓取的思想是,利用 bs4 查找所有的 div,用正则筛选出每个 div 里面的中文,找到中文字数最多的 div 就 ...

  3. python中的doc_基于Python获取docx/doc文件内容代码解析

    这篇文章主要介绍了基于Python获取docx/doc文件内容代码解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 整体思路: 下载文件并修改后缀 ...

  4. 使用Python获取春节档电影影评,制作可视化词云图

    Python获取春节档电影影评,制作可视化词云图 前言 准备工作 采集数据部分 基本思路流程 代码实战 可视化词云图 代码展示 效果展示 前言 春节电影听巳月说都还可以,我不信,我觉得还是要看看看过的 ...

  5. python 获取csv的列数_Python读取excel的两种方法

    excel是什么 Microsoft Excel是一个使用非常广泛的电子表格程序.它的用户友好性和吸引人的功能使其成为数据科学中常用的工具.对于excel来说,整个excel文件称为工作簿,工作簿中的 ...

  6. python 获取文件夹名称大全_python 获取指定文件夹下所有文件名称并写入列表的实例...

    如下所示: import os import os.path rootdir = "./pic_data" file_object = open('train_list.txt', ...

  7. python 获取路径的盘符_python获取磁盘号下盘符步骤详解

    这次主要教的是如何通过Python 获取Windows系统下的所有的磁盘盘符,以列表的形式展示出来,获取磁盘号下的盘符包括能够获取到我们正在插在电脑上的U盘,也可以读取到,希望能够对你们在学习过程中有 ...

  8. python获取系统时间为字符串_python怎么获取系统当前的时间

    python获取系统当前的时间的方法:可以利用datetime.datetime.now()函数来获取.具体方法:1.导入datetime包:2.获取当前的时间,如[curr_time = datet ...

  9. python获取一个月之前日期_Python 获取几天前的时间

    Python 获取几天前的时间 计算几天前并转换为指定格式.import time import datetime # 先获得时间数组格式的日期 threeDayAgo = (datetime.dat ...

最新文章

  1. 说说你对 HTML 语义化的理解?
  2. 查看SqlServer的内存使用情况
  3. ubuntu05.04 linux2.6.10 内核安装
  4. centos7执行sh文件_一文看懂centos7如何管理自定义脚本服务
  5. 文本编辑器实现打开帮助文件的功能
  6. desktop docker 无法卸载_docker,生信人的福音!
  7. linux之dig命令
  8. java集合AbstractMap_Java 集合中的 AbstractMap 抽象类
  9. 【Arduino】OTTO机器人(做二次开发的一点点总结)
  10. 4.3. aliases
  11. Bailian2797 最短前缀【字典树】
  12. 数据结构和算法9——哈希表
  13. Java实现常用的三种加密算法详解
  14. log算子 和dog 算子
  15. NLP中文句子类型判别和分类实现
  16. windows10怎么卸载计算机,Win10怎么卸载声卡驱动?电脑声卡驱动怎么卸载?
  17. VulnHub-noob打靶记录
  18. 翻译2Momentum, business cycle, and time varying expected returns(后附读后感)(图表上传不了)
  19. 有没有游泳可以戴的耳机、防水耳机能戴着游泳
  20. VBA工程加密,工程不可查看加密

热门文章

  1. Sqoop同步任务‘ can not be represented as java.sql.Date
  2. Jmeter javax.swing.text.BadLocationException: Position not represented by view 解决方法
  3. 极路由刷个人编译的openwrt固件全过程
  4. 基于搜狗接口的微信公众号及其信息爬取
  5. 特权老师又一最新力作-Verilog边码边学 视频教程
  6. SiteFactory支持ppt一键上传
  7. 【Stream流学习】Java 8 新特性|Collectors.joining() 案例详解
  8. api 3.0 个性化地图缩放时出现白色的底图,然而 api GL缩放时显示正常,调用api 3.0 接口时,如何避免地图缩放时出现白色底图
  9. Java Word中的文本、图片替换功能
  10. 数据备份:备份文件/文件夹怎么操作?