当前位置: 首页 > news >正文

【FastCAE源码阅读7】视图方向切换按钮实现原理

在FastCAE工具栏上有视图切换按钮,如下图所示:在这里插入图片描述
本文介绍如何实现。

FastCAE集成了Python解析器,当单击按钮时,中间用Python执行的,最后调用MainWindow.dll库接口实现的。

具体的Python代码在Python模块的py文件夹下的MainWindow.py文件中。这几个按钮都是调用的setView方法,只是入参不同而已。
在这里插入图片描述

MainWindow.dll库对外的接口在MainWindowPy.h文件中定义。这里调用的是setView接口。
在这里插入图片描述
继续跟踪代码,发现setView具体实现在graphWindowBase.cpp文件中。具体代码如下:

void GraphWindowBase::setView(QString view)
{if (view.toLower() == "fit")fitView();else if (view.toLower() == "xplus")setViewXPlus();else if (view.toLower() == "xminus")setViewXMiuns();else if (view.toLower() == "yplus")setViewYPlus();else if (view.toLower() == "yminus")setViewYMiuns();else if (view.toLower() == "zplus")setViewZPlus();else if (view.toLower() == "zminus")setViewZMiuns();
}

其具体实现只是根据入参不同调用不同的方法。适应窗口(Fit window)调用的是fitView方法,我们来看其实现:

void Graph3DWindow::fitView()
{resetCamera();
}void Graph3DWindow::resetCamera()
{_render->ResetCamera();_renderWindow->Render();this->mouseWheelMove();
}void Graph3DWindow::setViewXPlus()
{vtkCamera *camera = _render->GetActiveCamera();camera->SetViewUp(0, 0, 1);camera->SetPosition(5000, 0, 0);camera->SetFocalPoint(0, 0, 0);resetCamera();
}

发现最后调用vtkRenderer的ResetCamera()方法就实现了适应窗口。其他视图调整是直接操作摄像机,指定其Up轴、位置及焦点实现的。

http://www.lryc.cn/news/225216.html

相关文章:

  • 小程序如何设置自取模式下的服务方式
  • 使用数据分析,识别设备异常
  • redis数据倾斜如何解决
  • ATFX汇市:美联储鲍威尔再发鹰派言论,美元指数逼近106关口
  • 【异常----finally和自定义异常】
  • C# OpenCvSharp 环形文字处理 直角坐标与极坐标转换
  • 计算机视觉与深度学习 | 视频/图像转换及保存播放(Matlab源码)
  • 网格变形算法
  • 2. Spark报错,Task is Failed,errorMsg: FileNotFoundException xxxx
  • Flutter开发实战之上传身份照片并认证
  • C++文件加密、解密
  • 使用Java语言实现基本RS触发器
  • c++函数指针作为std::map值
  • data对象内新增属性,console.log()可以打印出来,不重新渲染
  • React:实现一个定时器计数器,每秒自动+1
  • rocksdb 中 db_bench 的使用方法
  • 【前端】TypeScript核心知识点讲解
  • 【工具推荐】一键多平台文章发布神器推荐(免费)
  • PDF有限制密码,不能复制怎么办?
  • 【原创学位论文】基于python和定向爬虫的商品比价系统.docx
  • 【Proteus仿真】【STM32单片机】汽车尾灯控制设计
  • 多线程—锁
  • uniapp使用vue
  • 能源监测管理系统有哪些作用与效果?
  • 数据分析是什么?
  • 【kafka】Java客户端代码demo:自动异步提交、手动同步提交及提交颗粒度、动态负载均衡
  • 【Git】Gui图形化管理、SSH协议私库集成IDEA使用
  • AIX5.3安装weblogic10.3
  • 聊聊logback的FixedWindowRollingPolicy
  • 详解机器学习最优化算法