1.参数

2.主代码

#include "InitInclude.h"
#include <vtkQuadric.h>
#include <vtkSampleFunction.h>
#include <vtkContourFilter.h>
#include <vtkOutlineFilter.h>
#include <vtkPolyDataMapper.h>
#include <vtkActor.h>
#include <vtkProperty.h>
#include <vtkRenderWindow.h>
#include <vtkRenderer.h>
#include <vtkRenderWindowInteractor.h>
#include <vtkImageData.h>
#include <vtkSmartPointer.h>
void Sphere();
//vtkSmartPointer<vtkActor> PlotFunction(vtkQuadric*quadric, double value);
//vtkSmartPointer<vtkActor> PlotFunction();
//装源及主机
vtkSmartPointer<vtkActor> sheyuan()
{const int num_points = 4;vtkSmartPointer<vtkUnstructuredGrid> polygonGrid = vtkSmartPointer<vtkUnstructuredGrid>::New();vtkSmartPointer<vtkPoints> polygonPoints = vtkSmartPointer<vtkPoints>::New();vtkSmartPointer<vtkPolygon> polygon = vtkSmartPointer<vtkPolygon>::New();vtkSmartPointer<vtkDataSetMapper> polygonMapper = vtkSmartPointer<vtkDataSetMapper>::New();vtkSmartPointer<vtkActor> actor = vtkSmartPointer<vtkActor>::New();double top_left[num_points][3] = {{ 0, 2280 - 3200, 0 },{ 0, 2280, 0 },{ -2300, 2280, 0 },{ -2300, 2280 - 3200, 0 }};double Hight = 2170.0;// 几何数据 + 拓扑数据polygonPoints->SetNumberOfPoints(num_points);polygon->GetPointIds()->SetNumberOfIds(num_points);for (int i = 0; i < num_points; ++i){polygonPoints->SetPoint(i, top_left[i]);polygon->GetPointIds()->SetId(i, i);}polygonGrid->InsertNextCell(polygon->GetCellType(), polygon->GetPointIds());polygonGrid->SetPoints(polygonPoints);vtkNew<vtkDataSetSurfaceFilter> surface_filter;surface_filter->SetInputData(polygonGrid);surface_filter->Update();vtkNew<vtkTriangleFilter> filter;filter->SetInputData(surface_filter->GetOutput());filter->Update();// Apply linear extrusion(对平面进行拉伸成3D)vtkSmartPointer<vtkLinearExtrusionFilter> extrude = vtkSmartPointer<vtkLinearExtrusionFilter>::New();extrude->SetInputConnection(filter->GetOutputPort());extrude->SetExtrusionTypeToNormalExtrusion();extrude->SetVector(0, 0, 1);// 沿文字方向挤压,沿着z向上extrude->SetScaleFactor(Hight);// 设置挤压比例 //blog.csdn.net/wanyongtai/article/details/106490653bool isExtrude = true;if (isExtrude){polygonMapper->SetInputConnection(extrude->GetOutputPort());}else{polygonMapper->SetInputConnection(filter->GetOutputPort());}polygonMapper->ScalarVisibilityOff();actor->SetMapper(polygonMapper);actor->GetProperty()->SetOpacity(1.0);actor->GetProperty()->SetColor(0.6, 0.2, 0.61);return actor;
}//床
vtkSmartPointer<vtkActor> chuang()
{const int num_points = 4;vtkSmartPointer<vtkUnstructuredGrid> polygonGrid = vtkSmartPointer<vtkUnstructuredGrid>::New();vtkSmartPointer<vtkPoints> polygonPoints = vtkSmartPointer<vtkPoints>::New();vtkSmartPointer<vtkPolygon> polygon = vtkSmartPointer<vtkPolygon>::New();vtkSmartPointer<vtkDataSetMapper> polygonMapper = vtkSmartPointer<vtkDataSetMapper>::New();vtkSmartPointer<vtkActor> actor = vtkSmartPointer<vtkActor>::New();double chuangkuan_danbian = 800;//图纸显示为935mmdouble top_left[num_points][3] = {{ 0, -1*chuangkuan_danbian, 0 },{ 2360, -1 * chuangkuan_danbian, 0 },{ 2360, chuangkuan_danbian, 0 },{ 0, chuangkuan_danbian, 0 },};double ChangHight = 851;// 几何数据 + 拓扑数据polygonPoints->SetNumberOfPoints(num_points);polygon->GetPointIds()->SetNumberOfIds(num_points);for (int i = 0; i < num_points; ++i){polygonPoints->SetPoint(i, top_left[i]);polygon->GetPointIds()->SetId(i, i);}polygonGrid->InsertNextCell(polygon->GetCellType(), polygon->GetPointIds());polygonGrid->SetPoints(polygonPoints);vtkNew<vtkDataSetSurfaceFilter> surface_filter;surface_filter->SetInputData(polygonGrid);surface_filter->Update();vtkNew<vtkTriangleFilter> filter;filter->SetInputData(surface_filter->GetOutput());filter->Update();// Apply linear extrusion(对平面进行拉伸成3D)vtkSmartPointer<vtkLinearExtrusionFilter> extrude = vtkSmartPointer<vtkLinearExtrusionFilter>::New();extrude->SetInputConnection(filter->GetOutputPort());extrude->SetExtrusionTypeToNormalExtrusion();extrude->SetVector(0, 0, 1);// 沿文字方向挤压,沿着z向上extrude->SetScaleFactor(ChangHight);// 设置挤压比例 //blog.csdn.net/wanyongtai/article/details/106490653bool isExtrude = true;if (isExtrude){polygonMapper->SetInputConnection(extrude->GetOutputPort());}else{polygonMapper->SetInputConnection(filter->GetOutputPort());}polygonMapper->ScalarVisibilityOff();actor->SetMapper(polygonMapper);actor->GetProperty()->SetOpacity(0.7);actor->GetProperty()->SetColor(0.8, 0.8, 0.8);return actor;}void  GammaKnife()
{vtkSmartPointer<vtkActor> actorzhuji = vtkSmartPointer<vtkActor>::New();vtkSmartPointer<vtkActor> actorChang = vtkSmartPointer<vtkActor>::New();//vtkSmartPointer<vtkActor> actorPlotFunction  = vtkSmartPointer<vtkActor>::New();vtkSmartPointer<vtkRenderer> render = vtkSmartPointer<vtkRenderer>::New();actorzhuji = sheyuan();actorChang = chuang();//actorPlotFunction =  PlotFunction();render->AddActor(actorzhuji);render->AddActor(actorChang);//render->AddActor(actorPlotFunction);render->SetBackground(1, 1, 1); // Background color dark bluevtkSmartPointer<vtkRenderWindow> renWin = vtkSmartPointer<vtkRenderWindow>::New();//vtkNew<vtkRenderWindow> renWin;renWin->AddRenderer(render);renWin->SetSize(1024, 768);vtkNew<vtkRenderWindowInteractor> iren;iren->SetRenderWindow(renWin);renWin->Render();iren->Initialize();iren->Start(); //blog.csdn.net/liushao1031177/article/details/118443631
}//int main1()
//{
//  Sphere();
//  return 0;
//}
//
//void Sphere()
//{
//  vtkSmartPointer<vtkQuadric>quadric = vtkSmartPointer<vtkQuadric>::New();
//  quadric->SetCoefficients(200, 200, 120, 0, 0, 0, 0, 0, 0, 0);
//
//  // F(x,y,z) = a0*x^2 + a1*y^2 + a2*z^2 + a3*x*y + a4*y*z + a5*x*z + a6*x + a7*y + a8*z + a9
//  // F(x,y,z) = 1*x^2 + 1*y^2 + 1*z^2
//  //PlotFunction(quadric, 1);
//  PlotFunction( );
//}
//
vtkSmartPointer<vtkActor> PlotFunction(vtkQuadric *quadric, double value)
//vtkSmartPointer<vtkActor> PlotFunction( )
//{
//
//  vtkSmartPointer<vtkQuadric>quadric = vtkSmartPointer<vtkQuadric>::New();
//  quadric->SetCoefficients(0.5, 0.5, 0.4, 0, 0, 0, 0, 0, 0, 0);
//  double value = 1;
//
//  //采样二次函数
//  vtkSmartPointer<vtkSampleFunction>sample = vtkSmartPointer<vtkSampleFunction>::New();
//  sample->SetSampleDimensions(150, 150, 150);
//  sample->SetImplicitFunction(quadric);
//  //x,y,z取值范围
//  double xmin = -2, xmax = 2, ymin = -2, ymax = 2, zmin = 0, zmax = 2;
//  //double scale = 0.2;
//  sample->SetModelBounds(xmin, xmax, ymin, ymax, zmin, zmax);
//  //创建5个曲面surfaces F(x,y,z) = constant
//
//  /*vtkContourFilter*contours=vtkContourFilter::New();
//  contours->SetInputData(sample->GetOutput());
//  contours->GenerateValues(5,0,1.2);*/
//  //创建第0 isosurface
//  vtkSmartPointer<vtkContourFilter>contours = vtkSmartPointer<vtkContourFilter>::New();
//  contours->SetInputConnection(sample->GetOutputPort());
//  contours->GenerateValues(1, value, value);
//  //将contours映射到图形图元
//  vtkSmartPointer<vtkPolyDataMapper>contourMapper = vtkSmartPointer<vtkPolyDataMapper>::New();
//  contourMapper->SetInputConnection(contours->GetOutputPort());
//  contourMapper->SetScalarRange(0, 1.2);
//  //创建contour演员
//  vtkSmartPointer<vtkActor>contourActor = vtkSmartPointer<vtkActor>::New();
//  contourActor->SetMapper(contourMapper);
//  /*创建一个方盒,将函数曲面包围起来,标识抽样体*/
//  创建方盒的边看线
//  //vtkSmartPointer<vtkOutlineFilter>outline = vtkSmartPointer<vtkOutlineFilter>::New();
//  //outline->SetInputConnection(sample->GetOutputPort());
//  将线框映射为图形图元
//  //vtkSmartPointer<vtkPolyDataMapper>outlineMapper = vtkSmartPointer<vtkPolyDataMapper>::New();
//  //outlineMapper->SetInputConnection(outline->GetOutputPort());
//  //创建outline演员
//  vtkSmartPointer<vtkActor> outlineActor = vtkSmartPointer<vtkActor>::New();
//  outlineActor->SetMapper(contourMapper);
//  //outlineActor->SetMapper(outlineMapper);
//  outlineActor->GetProperty()->SetColor(0, 0, 0);
//  return outlineActor;
//
//  创建显示窗口
//  //vtkSmartPointer<vtkRenderer> ren1 = vtkSmartPointer<vtkRenderer>::New();
//  //vtkSmartPointer<vtkRenderWindow>renWin = vtkSmartPointer<vtkRenderWindow>::New();
//  //renWin->AddRenderer(ren1);
//  //vtkSmartPointer<vtkRenderWindowInteractor>iren = vtkSmartPointer<vtkRenderWindowInteractor>::New();
//  //iren->SetRenderWindow(renWin);
//  在场景中添加演员
//  //ren1->AddActor(contourActor);
//  //ren1->AddActor(outlineActor);
//  //ren1->SetBackground(1, 1, 1);
//  渲染 互动
//  //renWin->Render();
//  //iren->Start();
//}

3.效果

image.png


http://www.taodudu.cc/news/show-1639475.html

相关文章:

  • (8)VTK 鼠标左右键控制模型旋转
  • (2)通过输入参数(测量数据)构建三维体模型(01)
  • (01)VTK读取OBJ格式模型
  • (02)vtk 绘制模型的外轮廓线 模型轮廓线
  • (03)两个模型的交集、并集、差集
  • (04)VTK移动模型,判断是否相交
  • (05)vtk通过多边形构建矩形,并拉伸成立方体,两个立方体独立操作
  • (06)vtk修改默认鼠标操作,实现鼠标按键控制模型旋转
  • who i am !
  • (01)OpenGL es中只在指定区域渲染view
  • (01)C++之设计模式演变
  • C++设计模式(全网最通俗易懂的设计模式进阶)
  • c++工程模式+配置文件+动态调用类
  • 读书感悟之,从术到道
  • 因果否?
  • (01)数据库及相关
  • avg最多用多少列 mysql_40斤一桶水,最多用多少克磷酸二氢钾?打几次增产效果最好...
  • 用单片机测量流体流速的_旋进旋涡流量计的测量原理及优点
  • 文字加减前后缀lisp_日本搞笑艺人催泪讲授汉字课堂告诉你文字背后的意义!...
  • 幼儿园调查过程怎么写_幼儿园对孩子的重要性你真的清楚吗?
  • 三星oneui主屏幕费电_这或许是单手握持手感最佳的手机 三星Galaxy S20上手体验...
  • 麦克纳姆轮运动原理怎么安装_家用中央空调水系统原理是什么?怎么样安装比较好呢?...
  • redis 判断存在性_一口气说出四种幂等性解决方案,面试官露出了姨母笑~
  • python心跳包原理_Python 用心跳(UDP包)探测不活动主机
  • pin码计算器网页版_快对作业APP下载手机版电脑版官方正式上线
  • 进入已经打开的pyrebox_PyREBox-可用Python编写脚本的逆向工程沙盒
  • idea redis图形化_5.13redis图形化工具---idea中配置redis密码
  • oem718d 基准站设置_诺瓦泰NovAtel OEM718D全系统多频单机测向板卡
  • 常见的预设分栏包括_计算机应用基础_实训项目二Word综合应用
  • 嵌入式linux系统移植的四大步骤_嵌入式 Linux 产品技术评估之系统裁剪与启动速度...

(3)通过输入参数(测量数据)构建三维体模型(02)相关推荐

  1. (6)通过输入参数(测量数据)构建三维体模型

    1.参数 vector<double> d = { 2,1,1,3, 1,1,1,5, 3,2,3,5, 7,5 }; 2.主代码 #include "InitInclude.h ...

  2. (2)通过输入参数(测量数据)构建三维体模型(01)

    1.参数 vector<double> D = {2000,6500-1200,7800-700-600,2000}; vector<double>X = {700,600,6 ...

  3. (5)通过输入参数(测量数据)构建二维体模型(01)

    1.参数 vector<double> d = { 2,1,1,3, 1,1,1,5, 3,2,3,5, 7,5 }; 2.代码 #pragma once #include "I ...

  4. 【GeoscenePro应用】利用体素图层构建三维地质体模型

    一.了解体素图层的结构 体素图层由存储一个或多个变量的规则的维度格网立方体构成,在 3D 体积可视化中表示多维空间和时间信息. 体素图层可以表示不同的维度. X, Y, Z,其中每个维度表示一个地理坐 ...

  5. World Wind Java开发之七——读取本地栅格文件(影像+高程)构建三维场景(转)...

    http://blog.csdn.net/giser_whu/article/details/41679515 首先,看下本篇博客要达到的效果图: 下面逐步分析如何加载影像及高程文件. 1.World ...

  6. GIS小白教程:如何利用高程DEM数据构建三维地图模型(基于ArcScene)

    最终效果展示 软件准备 下载数据 下载卫星影像数据 下载高程数据 对数据进行预处理 对高程数据预处理 对卫星影像数据进行预处理 在 ArcScene 中构建三维地图模型 最终效果展示 软件准备 Loc ...

  7. excel怎么设置自动计算_超全8套工程测量计算Excel自动算量表,输入参数即可得出精准结果...

    超全8套工程测量计算Excel自动算量表,输入参数即可得出精准结果 日常工程测量中需要大量的数据计算,一个失误可能就带从头再来,熬夜加班更是经常有的事情,测量计算的快速一定程度上也影响了工程的进度.今 ...

  8. 采用Cartographer、LIO-SAM构建三维点云地图,采用Octomap构建八叉树地图(三维栅格地图)

    采用Cartographer.LIO-SAM构建三维点云地图,采用Octomap构建八叉树地图(三维栅格地图) 采用Cartographer构建三维点云地图 采用的数据集是安装Cartographer ...

  9. php mssql 存储过程 输入参数,MSSQL_SQL Server存储过程中使用表值作为输入参数示例,在2008之前如果我们想要将表作 - phpStudy...

    SQL Server存储过程中使用表值作为输入参数示例 在2008之前如果我们想要将表作为输入参数传递给SQL Server存储过程使比较困难的,可能需要很多的逻辑处理将这些表数据作为字符串或者XML ...

最新文章

  1. c++ 负数比较大小_负数的定义(二)
  2. oracle 考试技巧,从 TPCH 测试学习性能优化技巧之 Q14
  3. matlab期末试题,Matlab期末考试试题库(共12套卷)
  4. Java中的List
  5. LFS(Linux From Scratch)学习
  6. 【JS】逻辑运算符 非! 与 或||(处理对象时注意)
  7. centos的yum源换成阿里云
  8. Illustrator 教程,如何在 Illustrator 中更改角色的姿势?
  9. 红外图像和热成像图像
  10. 在proteus中共阴数码管的驱动与使用
  11. p5.js 实现创意绘板
  12. gl常用库函数,glu常用库函数 简介
  13. Centos7配置软RAID+LVM
  14. 北京迷笛音乐节阵容、北京草莓音乐节阵容
  15. viper4android fx 驱动,ViPER4Android FX 音效驱动社区版安
  16. golden ticket和sliver ticket的区别是什么?
  17. angularjs指令中的compile与link函数详解
  18. v-loam源码阅读(一)视觉特征
  19. 清晰理解红黑树的演变---红黑的含义
  20. java交税成型_急~java编程个人所得税计算器

热门文章

  1. zedboard板子上呼吸灯的实现(第一版)
  2. 贺利坚老师汇编课程66笔记:自定义除法中断学习如何编制中断程序
  3. Flex4_操作XML
  4. 解决 jQuery 和其他库的冲突
  5. 2016届毕业生-毕业设计的相关事项
  6. Paypal Rest Api自定义物流地址(跳过填写物流地址)
  7. WPF在一个窗口中实现多个视图
  8. [转载] python 短网址_使用Python生成url短链接的方法
  9. 高中辅导班为何改名成培训机构了?
  10. export ,export default 和 import 区别以及用法