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 以焦耳为单位。…

【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.…

笔记-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点云、估计的光照和平面。 利用相机的姿势、检测到的平面、估计的照明,来生…

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…

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…

奥威BI零售数据分析方案的优缺点一览

奥威BI零售数据分析方案是一套基于BI大数据智能可视化分析系统&#xff0c;根据零售企业数据分析共性需求、业务特殊性量身打造&#xff0c;点击下载应用&#xff0c;立即将零售数据情况分析清楚&#xff0c;直观呈现。很多企业都是直接在该零售数据分析方案的基础上实现了智能…

mybatis动态SQL的if判断是否等于某个值查询条件无效

我们在使用mybaits时&#xff0c;经常使用if条件来做动态查询&#xff0c; 当查询条件是字符串类型时&#xff0c;要写不等于某个空的情况要考虑不等于null和不等于空字符串 当查询条件是日期类型或者long&#xff0c;Integer 等类型时&#xff0c;if条件里不能写不等于空字符串…

Junit(Java单元测试)

配置文件 要想使用 Junit 进行单元测试需要引入以下第三方库&#xff1a; 引入后可以使用 Test&#xff0c;BeforeEach等注解 <!-- https://mvnrepository.com/artifact/org.junit.jupiter/junit-jupiter-api --><dependency><groupId>org.junit.jupiter<…

eclipse添加maven插件

打开eclipse菜单 Help/Install New SoftwareWork with下拉菜单选择 2022-03 - https://download.eclipse.org/releases/2022-03‘type filter text’搜索框中输入 maven选择 M2E - Maven Integration for Eclipse一路next安装&#xff0c;重启eclipseImport项目时&#xff0c;就…

ESP8266在阿里云上线(arduino)

电脑连接上ESP8266的板子 在arduino编写代码&#xff08;arduino按照之前的配置&#xff0c;已安装好esp的开发板和几个库ArduinoJson我选了5.的版本&#xff0c;PubSubclient,Crypto,AliyunIoTSDK并且修改pubsubclient的参数&#xff09; 在项目&#xff0c;加载库&#xff0c…

【RuoYi】如何解决Postman无法访问RuoYi中的接口数据

一、前言 最近&#xff0c;写项目要求需要将数据返回&#xff0c;指定的接口&#xff0c;并且需要使用Postman来测试接口数据&#xff0c;看是否能够请求到数据。然后项目用的是RuoYi的框架&#xff0c;RuoYi使用了SpringSecurity来做的安全框架&#xff0c;所以在访问的时候&a…