PolygonalSurfaceContourLineInterpolator 多边形交互器

 1. 效果:

2.简介:

可以实现在多边形上进行交互,选择;在多边形曲面上实现轮廓点的交互绘制。

该类的使用需要结合 vtkPolygonalSurfacePointPlacer 类,定位点的功能也就是拾取器。

前提:输入的多边形曲面需要计算法向量。

3.源码:

#include <vtkActor.h>
#include <vtkCamera.h>
#include <vtkContourWidget.h>
#include <vtkNamedColors.h>
#include <vtkNew.h>
#include <vtkOrientedGlyphContourRepresentation.h>
#include <vtkPolyData.h>
#include <vtkPolyDataCollection.h>
#include <vtkPolyDataMapper.h>
#include <vtkPolygonalSurfaceContourLineInterpolator.h>
#include <vtkPolygonalSurfacePointPlacer.h>
#include <vtkProperty.h>
#include <vtkRenderWindow.h>
#include <vtkRenderWindowInteractor.h>
#include <vtkRenderer.h>
#include <vtkSmartPointer.h>
#include <vtkSphereSource.h>
#include <vtkTriangleFilter.h>
#include <vtkXMLPolyDataReader.h>int main(int argc, char* argv[])
{vtkNew<vtkNamedColors> colors;vtkSmartPointer<vtkPolyData> polyData;if (argc < 2){vtkNew<vtkSphereSource> sphereSource;sphereSource->SetThetaResolution(40);sphereSource->SetPhiResolution(20);sphereSource->Update();polyData = sphereSource->GetOutput();}else{vtkNew<vtkXMLPolyDataReader> reader;reader->SetFileName(argv[1]);reader->Update();polyData = reader->GetOutput();}// The Dijkistra interpolator will not accept cells that aren't triangles.vtkNew<vtkTriangleFilter> triangleFilter;triangleFilter->SetInputData(polyData);triangleFilter->Update();auto pd = triangleFilter->GetOutput();// Create a mapper and actor.vtkNew<vtkPolyDataMapper> mapper;mapper->SetInputConnection(triangleFilter->GetOutputPort());vtkNew<vtkActor> actor;actor->SetMapper(mapper);actor->GetProperty()->SetInterpolationToFlat();actor->GetProperty()->SetColor(colors->GetColor3d("MistyRose").GetData());// Create the render window, renderer and interactor.vtkNew<vtkRenderer> renderer;vtkNew<vtkRenderWindow> renderWindow;renderWindow->AddRenderer(renderer);renderWindow->SetWindowName("PolygonalSurfaceContourLineInterpolator");vtkNew<vtkRenderWindowInteractor> interactor;interactor->SetRenderWindow(renderWindow);// Add the actors to the renderer, set the background and size.renderer->AddActor(actor);renderer->SetBackground(colors->GetColor3d("CadetBlue").GetData());// Here comes the contour widget stuff...vtkNew<vtkContourWidget> contourWidget;contourWidget->SetInteractor(interactor);vtkSmartPointer<vtkOrientedGlyphContourRepresentation> rep =dynamic_cast<vtkOrientedGlyphContourRepresentation*>(contourWidget->GetRepresentation());rep->GetLinesProperty()->SetColor(colors->GetColor3d("Crimson").GetData());rep->GetLinesProperty()->SetLineWidth(3.0);vtkNew<vtkPolygonalSurfacePointPlacer> pointPlacer;pointPlacer->AddProp(actor);pointPlacer->GetPolys()->AddItem(pd);rep->SetPointPlacer(pointPlacer);vtkNew<vtkPolygonalSurfaceContourLineInterpolator> interpolator;interpolator->GetPolys()->AddItem(pd);rep->SetLineInterpolator(interpolator);renderWindow->Render();interactor->Initialize();contourWidget->EnabledOn();interactor->Start();return EXIT_SUCCESS;
}

4.使用场景

可以用来做任意曲面切割:

 曲面拟合主要用的贝塞尔曲面,交互部分用

vtkPolygonalSurfacePointPlacer,

vtkPolygonalSurfaceContourLineInterpolator

也可使用

vtkOrientedGlyphContourRepresentation

以及自定义的vtk3DWidget子类

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

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

相关文章

(科学:计算能量)编写程序,计算将水从初始温度加热到最终温度所需的能量。程序应该提示用户输入水的重量(以千克为单位),以及水的初始温度和最终温度。

(科学:计算能量)编写程序&#xff0c;计算将水从初始温度加热到最终温度所需的能量。程序 应该提示用户输入水的重量(以千克为单位)&#xff0c;以及水的初始温度和最终温度。计算能量 的公式是: 这里的 M 是以千克为单位的水的重量,温度以摄氏度为单位,而能量 O 以焦耳为单位。…

Mysql事务及其原理

什么是事务 说到事务&#xff0c;首先想到 ACID&#xff08;Atomicity、Consistency、Isolation、Durability&#xff0c;即原子性、一致性、隔离性、持久性&#xff09; MySQL 事务提供三个基本的事务指令&#xff1a; 可以使用 start transaction 或者 begin 开启事务。使…

【Python系列】Python 中的运算符:基础与高级用法

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

zabbix-agent如何版本回退降低?

文章目录 1&#xff0c;查看zabbix-agent版本号2&#xff0c;查看zabbix-server的版本号3&#xff0c;卸载已有的zabbix-agent4&#xff0c;找到与zabbix-server匹配版本的zabbix-agent5&#xff0c;安装zabbix-agent 5.0.42版本6&#xff0c;查看已安装的zabbix-agent的版本号…

力扣爆刷第148天之贪心算法五连刷(区间合并)

力扣爆刷第148天之贪心算法五连刷&#xff08;区间合并&#xff09; 文章目录 力扣爆刷第148天之贪心算法五连刷&#xff08;区间合并&#xff09;一、406. 根据身高重建队列二、452. 用最少数量的箭引爆气球三、435. 无重叠区间四、763. 划分字母区间五、56. 合并区间六、738.…

第十八章 创建Web客户端 - 调整Web客户端实例的属性

文章目录 第十八章 创建Web客户端 - 调整Web客户端实例的属性调整Web客户端实例的属性更改 Web 客户端的端点配置客户端以使用 SSL指定 SOAP 版本其他调整使用 HTTP 响应 第十八章 创建Web客户端 - 调整Web客户端实例的属性 调整Web客户端实例的属性 当使用 Web 客户端类的实…

笔记-Python pip配置国内源

众所周知&#xff0c;Python使用pip方法安装第三方包时&#xff0c;需要从 https://pypi.org/ 资源库中下载&#xff0c;但是会面临下载速度慢&#xff0c;甚至无法下载的尴尬&#xff0c;这时&#xff0c;你就需要知道配置一个国内源有多么重要了&#xff0c;通过一番摸索和尝…

【AIOT-Robot】3D pos 相关

1. Mediapipe 3D detection 使用移动增强现实(AR)会话数据(session data),开发了新的数据pipeline。大部分智能手机现在都具备了增强现实的功能,在这个过程中捕捉额外的信息,包括相机姿态、稀疏的3D点云、估计的光照和平面。 利用相机的姿势、检测到的平面、估计的照明,来生…

AI能力边界不断扩展,将对国家安全产生深远影响

文 | 中国信息安全测评中心 王欣 随着 ChatGPT 的发布及相关应用的落地&#xff0c;人工智能技术给全球各个行业带来了一波又一波冲击。GPT-4 多模态大型语言模型更是将人工智能的能力提升到新的高度&#xff0c;无论从技术先进性还是应用实践能力来看&#xff0c;此模型均可被…

vsCode双击文件才能打开文件,单击文件只能预览?

解决&#xff1a; 1、打开设置 2、搜索workbench.editor.enablePreview 3、更改为不勾选状态 4、关闭设置 效果&#xff1a; 现在单击一个文件时&#xff0c;将会在编辑器中直接打开&#xff0c;而非是预览状态。

(uniapp)简单带动画的tab切换效果

效果图 代码 <template><view class"tabBox"><view :style"{transform: translateX(${translateX})}" class"whiteBox"></view><view click"changeTab(k)" class"itemBox" v-for"(v,k) in…

【Java】代码块

代码块介绍 目录 1.代码块2.代码块分类静态代码块动态代码块 1.代码块 代码块是类的五大成分之一&#xff0c;包括成员变量、构造器、方法、代码块、内部类。 2.代码块分类 代码块分两种&#xff1a; 静态代码块 测试类 public class Test {public static void main(Stri…

openharmony项目相关资料

openharmony项目相关资料 OpenHarmony是由开放原子开源基金会&#xff08;OpenAtom Foundation&#xff09;孵化及运营的开源项目&#xff0c; 目标是面向全场景、全连接、全智能时代&#xff0c;搭建一个智能终端设备操作系统的框架和平台&#xff0c;促进万物互联产业的繁荣…

资源搬运(电脑外接接口)

比较全面的介绍了电脑的常见的外接接口。 工程师必知必会的18种电脑外接接口 (baidu.com)

Kafka 详解:全面解析分布式流处理平台

Kafka 详解&#xff1a;全面解析分布式流处理平台 Apache Kafka 是一个分布式流处理平台&#xff0c;主要用于构建实时数据管道和流式应用。它具有高吞吐量、低延迟、高可用性和高可靠性的特点&#xff0c;广泛应用于日志收集、数据流处理、消息系统、实时分析等场景。 &…

LeetCode刷题 | Day 4 分割等和子集(Partition Equal Subset Sum)自底向上动态规划

LeetCode刷题 | Day 4 分割等和子集(Partition Equal Subset Sum)自底向上动态规划 文章目录 LeetCode刷题 | Day 4 分割等和子集(Partition Equal Subset Sum)自底向上动态规划前言一、题目概述二、解题方法2.1 一维表格的自底向上动态规划2.1.1 思路讲解2.1.2 伪代码 + 逐…

002.数据分析_Pandas初识

我 的 个 人 主 页&#xff1a;&#x1f449;&#x1f449; 失心疯的个人主页 &#x1f448;&#x1f448; 入 门 教 程 推 荐 &#xff1a;&#x1f449;&#x1f449; Python零基础入门教程合集 &#x1f448;&#x1f448; 虚 拟 环 境 搭 建 &#xff1a;&#x1f449;&…

MySQL-权限管理(二)

一 host中的含义 /usr/local/mysql/bin/mysql -pLXYlxy2:024.#8u} -S /data/mysql/tmp/mysqld.sock select user,host,authentication_string from mysql.user; %:主要允许从任何主机连接到MySQL服务器&#xff0c;即外部连接localhost: 代表只允许本地主机连接到MySQL服务器&…

[AIGC] 详解Mockito - 简单易学的Java单元测试框架

在Java的世界中, 单元测试是一项非常重要的任务. Mockito作为一个强大灵活的mock框架&#xff0c;可以帮助我们有效的编写和管理我们的单元测试. 了解并掌握Mockito的使用对于提高我们的开发效率和保证我们的软件质量有着巨大的帮助. 文章目录 什么是Mockito?Mockito的核心API…

Spring Boot中整合Jasypt 使用自定义注解+AOP实现敏感字段的加解密

&#x1f604; 19年之后由于某些原因断更了三年&#xff0c;23年重新扬帆起航&#xff0c;推出更多优质博文&#xff0c;希望大家多多支持&#xff5e; &#x1f337; 古之立大事者&#xff0c;不惟有超世之才&#xff0c;亦必有坚忍不拔之志 &#x1f390; 个人CSND主页——Mi…