(八)vtk常用类的常用函数介绍(附带代码示例)

vtk中类的说明以及函数使用

https://vtk.org/doc/nightly/html/annotated.html

一、vtkObject派生类

1.vtkPoints 点

InsertNextPoint(double, double, double):插入点。

2.vtkCellArray 单元数组

InsertNextCell (vtkIdType npts, const vtkIdType *pts):插入单元。

3.vtkPolyData 数据集

SetRadius(double):设置球体半径,默认值为 0.5。
SetCenter(double, double, double):设置球体的中心,默认值为 0,0,0。
SetPhiResolution(int):设置纬度方向上的点数,默认值为 8,当为32为是圆滑的。
SetThetaResolution(int):设置经度方向上的点数,默认值为 8,当为32为是圆滑的。

4.vtkConeSource 锥

SetCenter(double, double, double):设置锥体的中心,默认值为 0,0,0。
SetHeight(double):设置锥体的高度,默认值为 1。
SetResolution(double):设置锥体的面数,默认值为 6,当面数足够大时即为圆锥。
SetAngle(double):设置锥体的角度。
SetRadius(double):设置锥体的半径,默认值为 0.5。
SetCapping(bool):设置锥体的底面是否显示,默认值为 1

5.vtkCylinderSource 柱

SetCenter(double, double, double):设置柱体的中心,默认值为 0,0,0。
SetHeight(double):设置柱体的高度,默认值为 1。
SetResolution(double):设置柱体的面数,默认值为 6,当面数足够大时即为圆柱。
SetAngle(double):设置柱体的角度。
SetRadius(double):设置柱体的半径,默认值为 0.5。
SetCapping(bool):设置柱体的底面是否显示,默认值为 1。

6.vtkCubeSource 立方体

方法1:根据中心点长宽高确定立方体。
SetCenter(double, double, double):设置立方体的中心,默认值为 0,0,0。
SetXLength(double):设置立方体的X轴长度。
SetYLength(double):设置立方体的Y轴宽度。
SetZLength(double):设置立方体的Z轴高度。
方法2:根据xyz边界确定一个立方体。
SetBounds(double xMin, double xMax, double yMin, double yMax, double zMin, double zMax):设置立方体的边界。

7.vtkPlaneSource 面

方法1:使用 SetOrigin() SetPoint1() 和SetPoint2()确定不在一条直线上的三个点,决定一个四边形平面
SetOrigin(double, double, double):设置起点。
SetPoint1(double, double, double):设置第一个点。
SetPoint2(double, double, double):设置第二个点。
方法2:第一,SetNormal(),指定平面的法向量。沿着法向量旋转平面。第二,SetCenter(),平移到指定的中心点。第三种方法,Push(),可以沿着平面法向量平移一定的距离。
SetCenter(double, double, double):设置中心点。
SetNormal(double, double, double):设置法向量。
Push(double):设置平移距离。

8.vtkLineSource 线

SetPoint1(double, double, double):设置线的第一个点。
SetPoint2(double, double, double):设置线的第二个点。
SetPoints(vtkPoints *):设置点集。

9.vtkDiskSource 环

SetCenter(double, double, double):设置环中心点。
SetInnerRadius(double):设置内环半径。
SetOuterRadius(double):设置外环半径。
SetCircumferentialResolution(double):设置圆周方向上的点数。

10.vtkPointSource 散点

在指定中心点周围的指定半径内创建用户指定数量的点。默认情况下,点在球体内的位置是随机的。
SetRadius(double):设置半径。
SetCenter(double, double, double):设置中心。

11.vtkTextSource 文本

SetText(const char *):设置文本。
SetForegroundColor(double, double, double):设置文本颜色。
SetBackgroundColor(double, double, double):设置背景颜色。
SetBacking(bool):设置是否显示背景。

12.vtkArrowSource 箭头(测试着看总长度为1)

SetTipLength(double):设置尖端长度,测试看取值范围为0~1。
SetTipRadius(double):设置尖端半径。
SetTipResolution(double):设置尖端面数。
SetShaftRadius(double):设置轴半径。
SetShaftResolution(double):设置轴面数。
SetInvert(bool):设置反转箭头。

二、vtkDataObject派生类

1.vtkPolyData 数据集

SetPoints(vtkPoints*):设置点集。

SetVerts(vtkCellArray* v):设置定义顶点的单元阵列。

三、vtkPolyDataMapper 映射

SetInputData(vtkPolyData *in):设置数据集。

SetInputConnection(vtkAlgorithmOutput* input):设置给定输入端口索引的连接。

四、vtkActor 演员

SetMapper(vtkMapper *):设置添加映射器。

五、vtkRenderer 渲染器

AddActor(vtkProp *p):添加演员。

六、vtkGenericOpenGLRenderWindow 渲染窗口

AddRenderer(vtkRenderer *):添加渲染器

七、代码示例

具体有关库的引用,main.cpp的修改,以及QVTKOpenGLNativeWidget控件的添加请看前面详细介绍的文章,下面只放了主要代码。

头文件引用

#include "vtkAutoInit.h"   // vtk初始化的方式
VTK_MODULE_INIT(vtkRenderingOpenGL2);   // 渲染
VTK_MODULE_INIT(vtkInteractionStyle);   // 相互做用方式
VTK_MODULE_INIT(vtkRenderingVolumeOpenGL2);  //
VTK_MODULE_INIT(vtkRenderingFreeType);
#include <vtkSmartPointer.h>
#include "vtkActor.h"
#include "vtkPolyDataMapper.h"
#include "vtkRenderWindow.h"
#include "vtkRenderer.h"
#include <vtkGenericOpenGLRenderWindow.h>
#include <vtkCubeSource.h>
#include <vtkSphereSource.h>
#include <vtkNamedColors.h>
#include <vtkProperty.h>
#include <vtkConeSource.h>
#include <vtkCylinderSource.h>
#include <vtkCubeSource.h>
#include <vtkPlaneSource.h>
#include <vtkLineSource.h>
#include <vtkTextSource.h>
#include <vtkDiskSource.h>
#include <vtkPointSource.h>
#include <vtkArrowSource.h>

主要显示代码

    //显示vtkSmartPointer<vtkRenderer> renderer = vtkSmartPointer<vtkRenderer>::New();//在构造函数中进行初始化vtkNew<vtkGenericOpenGLRenderWindow> renwindow;renwindow->AddRenderer(renderer);ui->vtk_widget->SetRenderWindow(renwindow.Get());//点vtkSmartPointer<vtkPoints> points1 = vtkSmartPointer<vtkPoints>::New();vtkSmartPointer<vtkCellArray> vertices1  = vtkSmartPointer<vtkCellArray>::New();for (int i = 0; i<20; i++){vtkIdType pid[1];pid[0] =  points1->InsertNextPoint(i, 0, 0);vertices1->InsertNextCell(1, pid);}vtkSmartPointer<vtkPolyData> polyData = vtkPolyData::New();polyData->SetPoints(points1);polyData->SetVerts(vertices1);vtkSmartPointer<vtkPolyDataMapper> mapper_point = vtkSmartPointer<vtkPolyDataMapper>::New();mapper_point->SetInputData(polyData);vtkSmartPointer<vtkActor> actor_point = vtkSmartPointer<vtkActor>::New();actor_point->SetMapper(mapper_point);actor_point->GetProperty()->SetPointSize(3);actor_point->GetProperty()->SetColor(1,0,0);renderer->AddActor(actor_point);//球vtkSmartPointer<vtkSphereSource> Sphere = vtkSmartPointer<vtkSphereSource>::New();Sphere->SetCenter(0.5,0,0);Sphere->SetRadius(0.5);Sphere->SetPhiResolution(32);Sphere->SetThetaResolution(32);vtkSmartPointer<vtkPolyDataMapper> mapper_Sphere = vtkSmartPointer<vtkPolyDataMapper>::New();mapper_Sphere->SetInputConnection(Sphere->GetOutputPort());vtkSmartPointer<vtkActor> actor_Sphere = vtkSmartPointer<vtkActor>::New();actor_Sphere->SetMapper(mapper_Sphere);renderer->AddActor(actor_Sphere);//柱vtkSmartPointer<vtkCylinderSource> Cylinder = vtkSmartPointer<vtkCylinderSource>::New();Cylinder->SetCenter(1.5,0,0);Cylinder->SetHeight(1);Cylinder->SetResolution(8);Cylinder->SetRadius(0.5);Cylinder->SetCapping(1);vtkSmartPointer<vtkPolyDataMapper> mapper_Cylinder = vtkSmartPointer<vtkPolyDataMapper>::New();mapper_Cylinder->SetInputConnection(Cylinder->GetOutputPort());vtkSmartPointer<vtkActor> actor_Cylinder = vtkSmartPointer<vtkActor>::New();actor_Cylinder->SetMapper(mapper_Cylinder);renderer->AddActor(actor_Cylinder);//锥vtkSmartPointer<vtkConeSource> Cone = vtkSmartPointer<vtkConeSource>::New();Cone->SetCenter(2.5,0,0);Cone->SetHeight(1);Cone->SetResolution(4);Cone->SetAngle(45);Cone->SetRadius(1);Cone->SetCapping(1);vtkSmartPointer<vtkPolyDataMapper> mapper_Cone = vtkSmartPointer<vtkPolyDataMapper>::New();mapper_Cone->SetInputConnection(Cone->GetOutputPort());vtkSmartPointer<vtkActor> actor_Cone = vtkSmartPointer<vtkActor>::New();actor_Cone->SetMapper(mapper_Cone);renderer->AddActor(actor_Cone);//立方体vtkSmartPointer<vtkCubeSource> Cube = vtkSmartPointer<vtkCubeSource>::New();//Cube->SetCenter(3.5,0,0);//Cube->SetXLength(1);//Cube->SetYLength(2);//Cube->SetZLength(2);Cube->SetBounds(3,4,-0.5,0.5,-0.5,0.5);vtkSmartPointer<vtkPolyDataMapper> mapper_Cube = vtkSmartPointer<vtkPolyDataMapper>::New();mapper_Cube->SetInputConnection(Cube->GetOutputPort());vtkSmartPointer<vtkActor> actor_Cube = vtkSmartPointer<vtkActor>::New();actor_Cube->SetMapper(mapper_Cube);renderer->AddActor(actor_Cube);//面vtkSmartPointer<vtkPlaneSource> Plane = vtkSmartPointer<vtkPlaneSource>::New();Plane->SetOrigin(5,0,-0.5);Plane->SetPoint1(5,0,0.5);Plane->SetPoint2(4,0,-0.5);
//    Plane->SetCenter(1,0,0);
//    Plane->SetNormal(2,0,0);
//    Plane->Push(4);vtkSmartPointer<vtkPolyDataMapper> mapper_Plane = vtkSmartPointer<vtkPolyDataMapper>::New();mapper_Plane->SetInputConnection(Plane->GetOutputPort());vtkSmartPointer<vtkActor> actor_Plane = vtkSmartPointer<vtkActor>::New();actor_Plane->SetMapper(mapper_Plane);renderer->AddActor(actor_Plane);//线vtkSmartPointer<vtkLineSource> Line = vtkSmartPointer<vtkLineSource>::New();
//    Line->SetPoint1(6,0,0.5);
//    Line->SetPoint2(5,0,-0.5);vtkSmartPointer<vtkPoints> points_Line = vtkSmartPointer<vtkPoints>::New();for (int i = 0; i<3; i++){points_Line->InsertNextPoint(5 + i/2, 0, 0);}Line->SetPoints(points_Line);vtkSmartPointer<vtkPolyDataMapper> mapper_Line = vtkSmartPointer<vtkPolyDataMapper>::New();mapper_Line->SetInputConnection(Line->GetOutputPort());vtkSmartPointer<vtkActor> actor_Line = vtkSmartPointer<vtkActor>::New();actor_Line->SetMapper(mapper_Line);renderer->AddActor(actor_Line);//环vtkSmartPointer<vtkDiskSource> Disk = vtkSmartPointer<vtkDiskSource>::New();Disk->SetInnerRadius(0.25);Disk->SetOuterRadius(0.5);Disk->SetCircumferentialResolution(100);vtkSmartPointer<vtkPolyDataMapper> mapper_Disk = vtkSmartPointer<vtkPolyDataMapper>::New();mapper_Disk->SetInputConnection(Disk->GetOutputPort());vtkSmartPointer<vtkActor> actor_Disk = vtkSmartPointer<vtkActor>::New();actor_Disk->SetPosition(6.5,0,0);actor_Disk->SetMapper(mapper_Disk);renderer->AddActor(actor_Disk);//散点vtkSmartPointer<vtkPointSource> Point = vtkSmartPointer<vtkPointSource>::New();Point->SetCenter(7.5,0,0);Point->SetRadius(0.5);vtkSmartPointer<vtkPolyDataMapper> mapper_Point = vtkSmartPointer<vtkPolyDataMapper>::New();mapper_Point->SetInputConnection(Point->GetOutputPort());vtkSmartPointer<vtkActor> actor_Point = vtkSmartPointer<vtkActor>::New();actor_Point->SetMapper(mapper_Point);renderer->AddActor(actor_Point);//    //文本
//    vtkSmartPointer<vtkTextSource> Text = vtkSmartPointer<vtkTextSource>::New();
//    Text->SetText("test");
//    Text->SetForegroundColor(0,1,0);
//    Text->SetBackgroundColor(0,0,1);
//    Text->SetBacking(0);
//    vtkSmartPointer<vtkPolyDataMapper> mapper_Text = vtkSmartPointer<vtkPolyDataMapper>::New();
//    mapper_Text->SetInputConnection(Text->GetOutputPort());//    vtkSmartPointer<vtkActor> actor_Text = vtkSmartPointer<vtkActor>::New();
//    actor_Text->SetMapper(mapper_Text);
//    actor_Text->SetPosition(5.5,0,0);
//    renderer->AddActor(actor_Text);//箭头vtkSmartPointer<vtkArrowSource> Arrow = vtkSmartPointer<vtkArrowSource>::New();Arrow->SetTipLength(0.8);Arrow->SetTipRadius(0.15);Arrow->SetTipResolution(5);Arrow->SetShaftRadius(0.05);Arrow->SetShaftResolution(100);//Arrow->SetInvert(1);vtkSmartPointer<vtkPolyDataMapper> mapper_Arrow = vtkSmartPointer<vtkPolyDataMapper>::New();mapper_Arrow->SetInputConnection(Arrow->GetOutputPort());vtkSmartPointer<vtkActor> actor_Arrow = vtkSmartPointer<vtkActor>::New();actor_Arrow->SetPosition(8,0,0);actor_Arrow->GetProperty()->SetPointSize(2);actor_Arrow->SetMapper(mapper_Arrow);renderer->AddActor(actor_Arrow);

效果展示

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/165581.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java与c++中的交换方法

最近在写算法的时候&#xff0c;遇到一个问题。 java中编写swap&#xff08;交换&#xff09;方法还需要传入一个数组&#xff0c;但是在c中则不需要。 可以看到&#xff0c;在没有传入数组进行交换数组元素的时候&#xff0c;交换前与交换后的值是一样的。 而在c中&#xff…

笔记:绘图进阶

主要功能&#xff1a; 双坐标轴多子图共用一个横坐标横坐标时间刻度设置&#xff08;方便&#xff09; # -*- coding: utf-8 -*- import numpy as np import pandas as pd import matplotlib.pyplot as plt import matplotlib.dates as mdatesif __name__ __main__:# 风速da…

开源软件-禅道Zentao

禅道Zentao 简介漏洞复现SQL注入漏洞**16.5****router.class.php SQL注入** **v18.0-v18.3****后台命令执行** 远程命令执行漏洞&#xff08;RCE&#xff09;后台命令执行 简介 是一款开源的项目管理软件&#xff0c;旨在帮助团队组织和管理他们的项目。Zentao提供了丰富的功能…

10. 机器学习-评测指标

Hi,你好。我是茶桁。 之前的课程中&#xff0c;我们学习了两个最重要的回归方法&#xff0c;一个线性回归&#xff0c;一个逻辑回归。也讲解了为什么学习机器学习要从逻辑回归和线性回归讲起。因为我们在解决问题的时候&#xff0c;有限选择简单的假设&#xff0c;越复杂的模型…

jvm 各个版本支持的参数

知道一些 jvm 调优参数&#xff0c;但是没有找到官网对应的文档&#xff0c;在网上的一些文章偶然发现&#xff0c;记录一下。 https://docs.oracle.com/en/java/javase/ 包含各个版本 jdk 8 分为 windows 和 unix 系统 https://docs.oracle.com/javase/8/docs/technotes/too…

【ChatGLM2-6B】nginx转发配置

背景 好不容易把ChatGLM2-6B大语言模型部署好了&#xff0c;使用streamlit方式启动起来了&#xff0c;终于可以愉快的玩耍了&#xff0c;然后想着申请一个域名&#xff0c;使用HTTPS协议访问&#xff0c;但实践过程中&#xff0c;发现这个大语言模型的nginx转发配置还是有点小…

STM32F4x之中断一

一、中断简介 中断概念&#xff1a;程序在运行过程中发生了外部或内部事件时&#xff0c;导致中断了正在执行的程序&#xff0c;让CPU转到外部或内部事件中去执行。 中断的作用&#xff1a;大量节约CPU资源&#xff0c;提高程序的效率&#xff0c;即避免重要事件被错过。 中断…

利用TypeScript 和 jsdom 库实现自动化抓取数据

以下是一个使用 TypeScript 和 jsdom 库的下载器程序&#xff0c;用于下载zhihu的内容。此程序使用了 duoip.cn/get_proxy 这段代码。 import { JSDOM } from jsdom; import { getProxy } from https://www.duoip.cn/get_proxy;const zhihuUrl https://www.zhihu.com;(async (…

NFT Insider112:The Sandbox聘请Apple高管担任其首席内容官,YGG 将在菲律宾举办Web3游戏峰会

引言&#xff1a;NFT Insider由NFT收藏组织WHALE Members、BeepCrypto联合出品&#xff0c;浓缩每周NFT新闻&#xff0c;为大家带来关于NFT最全面、最新鲜、最有价值的讯息。每期周报将从NFT市场数据&#xff0c;艺术新闻类&#xff0c;游戏新闻类&#xff0c;虚拟世界类&#…

Qt扫盲-QTextCodec理论总结

QTextCodec理论总结 一、概述二、编码支持三、使用四、创建自己的编解码器类 一、概述 QTextCodec 是Qt提供的一个管理字符串编码的功能&#xff0c;他可以在不同编码方式中来回转换&#xff0c;在文件读取的时候、格式编码转换的时候用处很大。Qt使用Unicode 编码来存储、绘制…

Aocoda-RC F405V2 FC(STM32F405RGT6 v.s. AT32F435RGT7) IO Definitions

[TOC](Aocoda-RC F405V2 FC(STM32F405RGT6 v.s. AT32F435RGT7) IO Definitions) 1. 源由 Aocoda-RC F405V2飞控支持betaflight/inav/Ardupilot固件&#xff0c;是一款固件兼容性非常不错的开源硬件。 之前我们对比过STM32F405RGT6 v.s. AT32F435RGT7 Comparison for Flight …

java中的容器(集合),HashMap底层原理,ArrayList、LinkedList、Vector区别,hashMap加载因子0.75原因

一、java中的容器 集合主要分为Collection和Map两大接口&#xff1b;Collection集合的子接口有List、Set&#xff1b;List集合的实现类有ArrayList底层是数组、LinkedList底层是双向非循环列表、Vector&#xff1b;Set集合的实现类有HashSet、TreeSet&#xff1b;Map集合的实现…

freeipa server副本同步中断,两主节点数据不一致

/var/log/messages 和/var/log/dirsrv/slapd-testhadoop-COM 日志都出现以下日志: If replication stops, the consumer may need to be reinitialized. [27/Jun/2023:05:15:09.469361922 0800] - ERR - NSMMReplicationPlugin - changelog program - repl_plugin_name_cl - a…

使用Axure RP和内网穿透技术制作静态站点并实现公网访问

文章目录 前言1.在AxureRP中生成HTML文件2.配置IIS服务3.添加防火墙安全策略4.使用cpolar内网穿透实现公网访问4.1 登录cpolar web ui管理界面4.2 启动website隧道4.3 获取公网URL地址4.4. 公网远程访问内网web站点4.5 配置固定二级子域名公网访问内网web站点4.5.1创建一条固定…

某全球领先的芯片供应商:优化数据跨网交换流程,提高安全管控能力

1、客户介绍 某全球领先的芯片供应商&#xff0c;成立于2005年&#xff0c;总部设于北京&#xff0c;在国内上海、深圳、合肥等地及国外多个国家和地区均设有分支机构和办事处&#xff0c;致力于为客户提供更优质、便捷的服务。 2、建设背景 该公司基于网络安全管理的需求&am…

PCA降维可视化

二维 import pandas as pd import warnings warnings.filterwarnings("ignore")df pd.read_csv(data/data.csv).dropna() features df.columns[:-1] X, y df[features], df[label]from sklearn.preprocessing import MinMaxScaler # 创建MinMaxScaler对象 scaler…

接口测试 Jmeter 接口测试 —— 请求 Headers 与传参方式

一、 背景&#xff1a; 在使用 Jmeter 进行接口测试时&#xff0c;有些小伙伴不知道 Headers 和请求参数 (Parameters&#xff0c;Body Data) 的联系&#xff0c;本文主要讲 Content-Type 为 application/x-www-form-urlencoded 和 application/json 的场景。 1、使用 Parame…

【ROS 2 基础-常用工具】-7 Rviz仿真机器人

所有内容请查看&#xff1a;博客学习目录_Howe_xixi的博客-CSDN博客

OpenLDAP LDIF详解

手把手一步步搭建LDAP服务器并加域 有必要理解的概念LDAPWindows Active Directory 服务器配置安装 OpenLDAP自定义安装修改对象&#xff08;用户和分组等&#xff09;修改olcSuffix 和 olcRootDN 属性增加olcRootPW 属性修改olcAccess属性验证新属性值 添加对象&#xff08;用…

线性代数-Python-01:向量的基本运算 - 手写Vector及numpy的基本用法

文章目录 一、代码仓库二、向量的基本运算2.1 加法2.2 数量乘法2.3 向量运算的基本性质2.4 零向量2.5 向量的长度2.6 单位向量2.7 点乘/内积&#xff1a;两个向量的乘法 --答案是一个标量 三、手写Vector代码3.1 在控制台测试__repr__和__str__方法3.2 创建实例测试代码3.3 完整…