vtk 多边形绘制 vtkPolygon 三角形 矩形 多边形

news2024/10/4 22:37:05

  vtk 可以通过 vtkPolygon 绘制 三角形 矩形 多边形

目录

  vtk 可以通过 vtkPolygon 绘制 三角形 矩形 多边形

效果:

 源码:


效果:

三角形

 矩形:

多边形:

 源码:

#include "vtkAutoInit.h"
VTK_MODULE_INIT(vtkRenderingOpenGL2);
VTK_MODULE_INIT(vtkInteractionStyle);
VTK_MODULE_INIT(vtkRenderingFreeType)
#include <vtkSmartPointer.h>
#include <vtkNew.h>
#include <vtkUnstructuredGrid.h>
#include <vtkDataSetMapper.h>
#include <vtkPoints.h>
#include <vtkPolygon.h>
#include <vtkActor.h>
#include <vtkRenderer.h>
#include <vtkRenderWindow.h>
#include <vtkRenderWindowInteractor.h>
#include <vtkTriangleFilter.h>
#include <vtkTriangle.h>
#include <vtkPolyDataMapper.h>
#include <vtkProperty.h>
 
 
vtkSmartPointer<vtkPolyData>  GetTriangle()
{
	const int num_points = 3;
	double top_left[num_points][3] = { {1.0, 0.0, 0.0}, {0.0, 0.0, 0.0},{0.0, 1.0, 0.0}  };
	vtkNew<vtkPoints> points;
	vtkNew<vtkPolygon> polygon;
	polygon->GetPointIds()->SetNumberOfIds(num_points);
	for (size_t i = 0; i < num_points; i++) {
		points->InsertNextPoint(top_left[i]);
		polygon->GetPointIds()->SetId(i, i);
	}

	vtkNew<vtkCellArray> cells;
	cells->InsertNextCell(polygon);

	vtkNew<vtkPolyData> polygonPolyData;
	polygonPolyData->SetPoints(points);
	polygonPolyData->SetPolys(cells);

	vtkNew<vtkTriangleFilter> filter;
	filter->SetInputData(polygonPolyData);
	filter->Update();
	vtkNew<vtkPolyData> poly;
	poly->DeepCopy(filter->GetOutput());
	return poly;
}

vtkSmartPointer<vtkPolyData> GetCubePolyData()
{
	const int num_points = 4;
	double top_left[num_points][3] = { {0.0, 0.0, 0.0}, {0.0, 1.0, 0.0},{1.0, 1.0, 0.0},{1.0, 0.0, 0.0} };
	vtkNew<vtkPoints> points;
	vtkNew<vtkPolygon> polygon;
	polygon->GetPointIds()->SetNumberOfIds(num_points);
	for (size_t i = 0; i < num_points; i++) {
		points->InsertNextPoint(top_left[i]);
		polygon->GetPointIds()->SetId(i, i);
	}

	vtkNew<vtkCellArray> cells;
	cells->InsertNextCell(polygon);

	vtkNew<vtkPolyData> polygonPolyData;
	polygonPolyData->SetPoints(points);
	polygonPolyData->SetPolys(cells);

	//vtkNew<vtkTriangleFilter> filter;
	//filter->SetInputData(polygonPolyData);
	//filter->Update();

	vtkNew<vtkPolyData> poly;
	poly->DeepCopy(polygonPolyData );
	return poly;

}

vtkSmartPointer<vtkPolyData> GetPolygonPolyData()
{
	const int num_points = 5;
	double top_left[num_points][3] = { {0.5,0.5,0}, {1,0,0},{1,1,0},{0,1,0},{0,0,0} };
	vtkNew<vtkPoints> points;
	vtkNew<vtkPolygon> polygon;
	polygon->GetPointIds()->SetNumberOfIds(num_points);
	for (size_t i = 0; i < num_points; i++) {
		points->InsertNextPoint(top_left[i]);
		polygon->GetPointIds()->SetId(i, i);
	}

	vtkNew<vtkCellArray> cells;
	cells->InsertNextCell(polygon);

	vtkNew<vtkPolyData> polygonPolyData;
	polygonPolyData->SetPoints(points);
	polygonPolyData->SetPolys(cells);

	vtkNew<vtkPolyData> poly;
	poly->DeepCopy(polygonPolyData);
	return poly;

}

int main()
{

	vtkSmartPointer<vtkPolyData> poly = GetPolygonPolyData();// GetCubePolyData();//GetTriangle();
	vtkNew<vtkPolyDataMapper> mapper;
	mapper->SetInputData(poly);

	vtkNew<vtkActor> actor;
	actor->SetMapper(mapper);
	// SetRepresentationToWireframe可以开启显示边框线
	actor->GetProperty()->SetRepresentationToWireframe();

	vtkNew<vtkRenderer> renderer;
	renderer->AddActor(actor);
	renderer->SetBackground(0, 0, 0);

	vtkNew<vtkRenderWindow> renderWindow;
	renderWindow->AddRenderer(renderer);
	renderWindow->SetSize(800, 800);
	renderWindow->SetWindowName("vtkTriangleFilter");

	vtkNew<vtkRenderWindowInteractor> renderWindowInteractor;
	renderWindowInteractor->SetRenderWindow(renderWindow);

	renderWindow->Render();
	renderWindowInteractor->Initialize();
	renderWindowInteractor->Start();
 
	return 0;
}

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

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

相关文章

通过电脑操作安卓手机数据恢复最好的几个工具

在本次评测中&#xff0c;我将介绍适用于 PC (Windows 10/11) 的最佳 Android 数据恢复软件&#xff0c;它可以帮助您从通过 MTP 连接的手机或平板电脑上恢复文件和数据。 2023 年适用于 PC 和 Mac 的最佳安卓数据恢复软件 1、U1tData安卓数据恢复&#xff08;奇客软件&#xf…

599L是什么芯片,sot23-6封装591NW

60转5v-599L芯片具有以下特点&#xff1a; - 600mA的连续输出电流能力 - 宽输入工作范围&#xff0c;从4.5V至60V - 集成了80V、550mQ高侧和80V、350mQ低侧功率MOSFET开关 - 高达95%的效率 - 内部软启动功能&#xff0c;限制开机时的浪涌电流 - 内部补偿功能&#xff0c;减少外…

程序员空闲时间能不能找其他副业?还是该继续卷技术?

我认为这是个伪命题&#xff01;程序员都在996/007&#xff0c;哪来的空闲时间&#xff0c;这是让他们不睡觉吗&#xff1f; 那些有空闲时间的程序员应该是还没找到工作的程序员吧&#xff01;主业都没有&#xff0c;谈什么副业。 假如有少部分人&#xff0c;是属于985的程序…

超实用的跟圈和一键转发好友朋友圈功能

一键转发朋友圈/跟圈 想转发别人的朋友圈内容&#xff0c;通常需要手动复制粘贴&#xff0c;一个个复制保存实在是太麻烦耗费时间。 有时候咱也不可能随时都看朋友圈嘛&#xff0c;那又想及时转发朋友的圈的&#xff0c;有什么办法可以轻松实现呢&#xff1f; 操作步骤 单击…

黑客为什么不 入侵银行一夜暴富

前言 厉害的黑客只需要入侵银行系统&#xff0c;改动一下自己账户余额数字&#xff0c;身家不就可以轻松过亿了吗&#xff1f; 然而事实却是没有哪个黑客做成这件事。大家要知道&#xff0c;银行的网站和网上银行系统是分开部署的。黑客成功入侵了银行的网站&#xff0c;他能…

推荐一款可以识别m3u8格式ts流批量下载并且合成mp4视频的chrome插件——猫抓

https://chrome.google.com/webstore/detail/%E7%8C%AB%E6%8A%93/jfedfbgedapdagkghmgibemcoggfppbb?utm_sourceext_app_menuhttps://chrome.google.com/webstore/detail/%E7%8C%AB%E6%8A%93/jfedfbgedapdagkghmgibemcoggfppbb?utm_sourceext_app_menu 网页媒体嗅探工具 一…

(十一)Python模块和包

前面章节中&#xff0c;我们已经使用了很多模块&#xff08;如 string、sys、os 等&#xff09;&#xff0c;通过向程序中导入这些模块&#xff0c;我们可以使用很多“现成”的函数实现想要的功能。 那么&#xff0c;模块到底是什么&#xff0c;模块内部到底是什么样子的&…

生成式AI革命对亚马逊的电商业务是威胁还是机遇?

来源&#xff1a;猛兽财经 作者&#xff1a;猛兽财经 总结&#xff1a; &#xff08;1&#xff09;当所有人都在关注生成式AI是如何威胁谷歌(GOOG)的搜索业务之际&#xff0c;投资界却忽视了一个事实&#xff0c;即&#xff1a;它也给亚马逊(AMZN)的电商业务带来了威胁。 &…

win10安装 nvm + angular

① 安装nvm② 配置全局的node_modules2.1 新建[node_global] 、[node_cache]文件夹2.2 cmd窗口执行命令&#xff08;设置npm的路径&#xff09;2.3 配置环境变量 ③ 安装angular-cli④ 检查环境版本 指路&#xff0c;简易版安装指南&#xff0c;有安装基础的可以看这里&#xf…

应用3之Like运算符的应用

《VBA经典应用69例》&#xff08;10178981&#xff09;&#xff0c;是我推出的第九套教程&#xff0c;教程是专门针对初级、中级学员在学习VBA过程中可能遇到的案例展开&#xff0c;这套教程案例众多&#xff0c;紧贴“实战”&#xff0c;并做“战术总结”&#xff0c;以便大家…

自然语言处理---RNN经典案例之构建人名分类器

1 案例介绍 关于人名分类问题&#xff1a;以一个人名为输入, 使用模型帮助判断它最有可能是来自哪一个国家的人名&#xff0c;这在某些国际化公司的业务中具有重要意义&#xff0c;在用户注册过程中&#xff0c;会根据用户填写的名字直接给他分配可能的国家或地区选项&#xff…

高防回源ip被源站拦截怎么办

​  在进行网站运营过程中&#xff0c;我们经常会遇到DDoS攻击等网络安全威胁。为了保护网站的正常运行&#xff0c;很多企业选择使用高防服务来应对这些攻击。有时候我们可能会遇到一个问题&#xff0c;就是高防回源IP被源站拦截的情况。 那么&#xff0c;当我们发现高防回源…

单线程模型想象不到的高并发能力、多路复用是效率杠杆

文章目录 &#x1f34a; 多路复用&#x1f389; redis的多路复用模式&#x1f4dd; 应用对外提供服务的过程&#x1f4dd; select&#x1f4dd; epoll&#x1f4dd; 多路复用的定义&#x1f4dd; 多路复用的举例&#x1f4dd; 多路复用的实现&#x1f525; 过程一&#xff1a;数…

a-table 修改默认的空状态描述

1 默认的空状态样式 simple图片和暂无数据样式 a-table api 意思是修改了local属性中的emptyText就可以改变内容了 :loacl"{emptyText:自定义内容}"但是这样写的话 就不显示图片了 可以使用a-empty 来自定义 2 空状态样式修改 :loacl"loacl" data(){re…

【华为路由器】配置企业通过5G链路接入Internet示例

场景介绍 5G Cellular接口是路由器用来实现5G技术的物理接口&#xff0c;它为用户提供了企业级的无线广域网接入服务&#xff0c;主要用于eMBB场景。与LTE相比&#xff0c;5G系统可以为企业用户提供更大带宽的无线广域接入服务。 路由器的5G功能&#xff0c;可以实现企业分支…

OpenGL —— 2.9、摄像机之模拟CS鼠标视角转动(附源码,glfw+glad)

源码效果 C源码 纹理图片 需下载stb_image.h这个解码图片的库&#xff0c;该库只有一个头文件。 具体代码&#xff1a; vertexShader.glsl #version 330 corelayout(location 0) in vec3 aPos; layout(location 1) in vec2 aUV;out vec2 outUV;uniform mat4 _modelMatrix; …

臻献光芒女性,延续「美」的力量

随着现代女性力量的觉醒和刻板印象的打破&#xff0c;我们看到了越来越多的社会角色由女性扮演&#xff0c;女性力量不但在于不被定义的人生和对于自我的肯定&#xff0c;也有对美的选择。面对紧凑的生活节奏&#xff0c;现代女性也要应对越来越多的各种压力&#xff0c;珮肌就…

【C语言易错点】循环结构

文章目录 &#x1f354;什么是循环结构&#x1f38d;易错点⭐概述✨具体实例 &#x1f354;什么是循环结构 C语言的循环结构是一种控制结构&#xff0c;用于重复执行一段代码&#xff0c;直到满足某个条件为止。C语言提供了三种主要的循环结构&#xff1a;for循环、while循环和…

谷歌真的不喜欢 Node.js ?

有人在 Quora 上提问&#xff0c;为什么谷歌不喜欢 Node.js 呢&#xff0c;Google 的 UX 工程师和来自 Node.js 团队的开发者分别回答了他们对这个问题的看法&#xff0c;对于编程语言来说&#xff0c;每一门语言都有它自己的优势&#xff0c;重要的是如何用它去解决问题。 谷…

目标检测算法改进系列之嵌入动态蛇形卷积模块DySnakeConv

动态蛇形卷积模块DySnakeConv 血管、道路等拓扑管状结构的精确分割在各个领域都至关重要&#xff0c;确保下游任务的准确性和效率。 然而&#xff0c;许多因素使任务变得复杂&#xff0c;包括薄的局部结构和可变的全局形态。在这项工作中&#xff0c;我们注意到管状结构的特殊…