折线的可视化及不规则柱体的绘制

这篇具有很好参考价值的文章主要介绍了折线的可视化及不规则柱体的绘制。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。


开发环境:

  1. Windows 11 家庭中文版
  2. Microsoft Visual Studio Community 2019
  3. VTK-9.3.0.rc0
  4. vtk-example

demo解决问题: 1.绘制一条多段线(折现),并可视化这段折现;2.根据折现绘制一个不规则柱体

折线的可视化及不规则柱体的绘制,vtk,计算机视觉,c++

关键点 :

  1. vtkRotationalExtrusionFilter是Visualization Toolkit(VTK)中的一个过滤器,用于沿着输入曲线生成旋转挤出的几何体。这个过滤器可以用于创建旋转对称的几何体,例如圆柱体或圆锥体。您可以通过指定旋转轴、旋转角度和其他参数来控制生成的几何体的外观。
  2. vtkTubeFilter是Visualization Toolkit(VTK)中的一个过滤器,用于创建沿着输入曲线生成的圆柱体表示。这种表示通常用于可视化线数据,可以使线条更易于观察和分析。vtkTubeFilter还允许您指定圆柱体的半径、分段数和其他属性,以便根据需要调整外观。

prj name: Bottle文章来源地址https://www.toymoban.com/news/detail-824492.html

#include <vtkActor.h>
#include <vtkCamera.h>
#include <vtkCellArray.h>
#include <vtkNamedColors.h>
#include <vtkNew.h>
#include <vtkPoints.h>
#include <vtkPolyData.h>
#include <vtkPolyDataMapper.h>
#include <vtkProperty.h>
#include <vtkRenderWindow.h>
#include <vtkRenderWindowInteractor.h>
#include <vtkRenderer.h>
#include <vtkRotationalExtrusionFilter.h>
#include <vtkStripper.h>
#include <vtkTubeFilter.h>

int main(int, char*[])
{
  // Create the RenderWindow, Renderer and both Actors
  //
  vtkNew<vtkNamedColors> colors;

  vtkNew<vtkRenderer> renderer;
  vtkNew<vtkRenderWindow> renWin;
  renWin->AddRenderer(renderer);

  vtkNew<vtkRenderWindowInteractor> iren;
  iren->SetRenderWindow(renWin);

  // create bottle profile
  //
  vtkNew<vtkPoints> points;
  points->InsertPoint(0, 0.01, 0.0, 0.0);
  points->InsertPoint(1, 1.5, 0.0, 0.0);
  points->InsertPoint(2, 1.5, 0.0, 3.5);
  points->InsertPoint(3, 1.25, 0.0, 3.75);
  points->InsertPoint(4, 0.75, 0.0, 4.00);
  points->InsertPoint(5, 0.6, 0.0, 4.35);
  points->InsertPoint(6, 0.7, 0.0, 4.65);
  points->InsertPoint(7, 1.0, 0.0, 4.75);
  points->InsertPoint(8, 1.0, 0.0, 5.0);
  points->InsertPoint(9, 0.2, 0.0, 5.0);

  vtkNew<vtkCellArray> lines;
  lines->InsertNextCell(10); // number of points
  lines->InsertCellPoint(0);
  lines->InsertCellPoint(1);
  lines->InsertCellPoint(2);
  lines->InsertCellPoint(3);
  lines->InsertCellPoint(4);
  lines->InsertCellPoint(5);
  lines->InsertCellPoint(6);
  lines->InsertCellPoint(7);
  lines->InsertCellPoint(8);
  lines->InsertCellPoint(9);

  vtkNew<vtkPolyData> profile;
  profile->SetPoints(points);
  profile->SetLines(lines);

  // extrude profile to make bottle
  //vtkRotationalExtrusionFilter是Visualization Toolkit(VTK)中的一个过滤器,用于沿着输入曲线生成旋转挤出的几何体。
  //这个过滤器可以用于创建旋转对称的几何体,例如圆柱体或圆锥体。您可以通过指定旋转轴、旋转角度和其他参数来控制生成的几何体的外观。
  vtkNew<vtkRotationalExtrusionFilter> extrude;
  extrude->SetInputData(profile);
  extrude->SetResolution(60);

  vtkNew<vtkPolyDataMapper> map;
  map->SetInputConnection(extrude->GetOutputPort());

  vtkNew<vtkActor> bottle;
  bottle->SetMapper(map);
  bottle->GetProperty()->SetColor(colors->GetColor3d("Mint").GetData());

  // display the profile
  vtkNew<vtkStripper> stripper;
  stripper->SetInputData(profile);

  //vtkTubeFilter是Visualization Toolkit(VTK)中的一个过滤器,用于创建沿着输入曲线生成的圆柱体表示。
  //这种表示通常用于可视化线数据,可以使线条更易于观察和分析。vtkTubeFilter还允许您指定圆柱体的半径、分段数和其他属性,以便根据需要调整外观。
  vtkNew<vtkTubeFilter> tubes;
  tubes->SetInputConnection(stripper->GetOutputPort());
  tubes->SetNumberOfSides(11);
  tubes->SetRadius(0.05);

  vtkNew<vtkPolyDataMapper> profileMapper;
  profileMapper->SetInputConnection(tubes->GetOutputPort());

  vtkNew<vtkActor> profileActor;
  profileActor->SetMapper(profileMapper);
  profileActor->GetProperty()->SetColor(colors->GetColor3d("Tomato").GetData());

  // Add the actors to the renderer, set the background and size
  //
  renderer->AddActor(bottle);
  renderer->AddActor(profileActor);
  renderer->SetBackground(colors->GetColor3d("Burlywood").GetData());

  renWin->SetSize(640, 480);
  renWin->SetWindowName("Bottle");
  renWin->Render();

  renderer->GetActiveCamera()->SetPosition(1, 0, 0);
  renderer->GetActiveCamera()->SetFocalPoint(0, 0, 0);
  renderer->GetActiveCamera()->SetViewUp(0, 0, 1);
  renderer->ResetCamera();
  renderer->GetActiveCamera()->Azimuth(30);
  renderer->GetActiveCamera()->Elevation(30);

  // render the image
  //
  iren->Start();

  return EXIT_SUCCESS;
}

到了这里,关于折线的可视化及不规则柱体的绘制的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • QT不规则形状的按钮的实现

    Qt实现按钮的不规则样式设置,不是视觉欺骗,是真正的不规则按钮,点击按钮外面不会触发按钮的点击信号 使用如下的代码可以实现特殊形状的按钮,但是按钮还是矩形的,如果按在不规则图形的外面,但是是按钮的矩形的区域仍然可以触发按钮。 使用如下代码可以实现特

    2023年04月09日
    浏览(43)
  • Elasticsearch不规则多边形区域查询

    定义ES连接类 其中self.es = Elasticsearch(hosts=self.host.split(‘,’), port=self.port)中,hosts参数接收的是一个字符串列表,例如[‘192.168.16.96’,‘192.168.16.97’,‘192.168.16.98’]等,端口是9200 创建一个带有geo_shape字段类型的索引。(仅执行一次) 插入一条数据以后 可以利用 来检查location字

    2024年02月12日
    浏览(48)
  • ArcGIS Pro如何制作不规则形状图例

    在默认的情况下,ArcGIS Pro生成的图例是标准的点、直线和矩形的,对于湖泊等要素而言,这样的表示方式不够直观,我们可以将其优化一下,制作不规则的线和面来代替原有图例,这里为大家介绍一下制作方法,希望能对你有所帮助。 在符号系统内,将水系的样式调整为我

    2024年02月12日
    浏览(46)
  • ospf不规则区域划分和数据库表

    图示 图示 在一台运行ospf的路由器上如果存在多个ospf进程时,如果不进行多进程双向重发布的话,不同进程中宣告的路由是不会进行共享的。 在合法ABR与与非合法ABR之间建立tunnel隧道,然后将tunnel隧道宣告于ospf协议中 缺点: 1.周期更新和触发更新信息对中间穿越区域造成资

    2024年02月11日
    浏览(42)
  • AD软件绘制不规则焊盘的器件封装

           网上有很多关于AD软件绘制不规则焊盘的帖子,搜了一些帖子看了一下,感觉不太对。严格意义上AD软件是不能绘制不规则的焊盘的,至少目前用的AD软件不支持。为什么这么说呢?    我提一个需求:假如我在PCB文件中需要随意的添加一个边长1mm的正三角形的焊盘。

    2023年04月08日
    浏览(44)
  • 图像中不规则物体的长轴与短轴:OpenCV实现指南

    1.首先,读取图像并将其转换为灰度图像。 2.进行图像预处理,包括使用高斯模糊和阈值化,以便更好地处理图像。 3.通过使用OpenCV的cv2.findContours()函数,找到图像中的所有轮廓。 4.遍历所有轮廓,如果轮廓点的数量大于等于5个,则将这个轮廓拟合为一个椭圆。 5.如果成功拟

    2024年02月15日
    浏览(40)
  • c# opencv 根据颜色得到不规则区域中的point

    其中,用到了opencv的函数: 1.  Cv2.CvtColor    颜色转换函数,将RGB颜色向HSV,HSI等颜色空间转换。本段代码是转成HSV 2.  Cv2.InRange    用于选出指定颜色范围的区域。如果满足指定的范围,则这个像素点的值被置为255(白色),否则值被置为0(黑色)。本段代码的颜色区间是

    2024年02月12日
    浏览(33)
  • Open3D 不规则点云体积计算 (15)

    黑暗笼罩万物,我将是黑暗中最后的那道曙光,以雷霆,击碎黑暗!!! 点云往往是不规则的,利用别的包围盒方法获取的体积可能不太准确,如果希望获取更准确的体积,这里介绍一种基于体素划分的体积计算方法,随着体素分辨率设置的尺寸减小,其计算的体积准确率越

    2024年02月02日
    浏览(40)
  • 如何用 Polygon Collider 2D 快速给2D不规则物体添加碰撞框

           众所周知,我们在写项目的时候 大部分时间我们遇到的是不规则的碰撞框,那么这个不规则的碰撞框是怎么实现?         其实unity 自带了一个可以自己制作碰框体大小的组件,这个组件就是Polygon Collider 2D .,会发现可为碰撞可为触发,有偏移量等      怎么去使用

    2024年02月15日
    浏览(42)
  • c++多线程按行读取同一个每行长度不规则文件

    对于非常大的比如上百G的大文件读取,单线程读是非常非常慢的,需要考虑用多线程读,多个线程读同一个文件时不用加锁的,每个线程打开一个独立的文件句柄 先打开一个文件句柄,获取整个文件大小 file_size 确定要采用线程读取的部分大小 read_size 和多线程的个数 thread_num ,算出

    2024年03月09日
    浏览(45)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包