VTK第三篇之菜鸟入门——SPHERE:VTK自带的球型的三角面片显示.doc_第1页
VTK第三篇之菜鸟入门——SPHERE:VTK自带的球型的三角面片显示.doc_第2页
VTK第三篇之菜鸟入门——SPHERE:VTK自带的球型的三角面片显示.doc_第3页
VTK第三篇之菜鸟入门——SPHERE:VTK自带的球型的三角面片显示.doc_第4页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

VTK第三篇之菜鸟入门SPHERE:VTK自带的球型的三角面片显示 VTK自带了很多的用来表示常见形状的类。这些东西虽然简单但是还是很有用的,毕竟是基础嘛。废话不多说了,直接说说代码吧。下面的代码来自C3P论坛,作者是谁,惭愧,又忘了,在这里致歉并感谢作者。在计算机里面,尤其是显示立体的东西,貌似都比较喜欢用三角形来作为最基本的元素,其中的道理我现在不懂,可能是三个点决定一个面吧。所以VTK里面的这个球体,貌似也是由三角形所组成的。1.还是先把前面的这些库贴上吧,CTRL+C、CTRL+V的时候还是很有用的。#include vtkRenderer.h#include vtkRenderWindow.h#include vtkRenderWindowInteractor.h#include vtkSphereSource.h#include vtkShrinkFilter.h#include vtkElevationFilter.h#include vtkDataSetMapper.h#include vtkActor.h#include vtkCullerCollection.hvoid main( int argc, char *argv )复制代码2.OK,下面还是vtkRenderer、vtkRenderWindow、vtkRenderWindowInteractor这三个类的创建和部分初始化,这个貌似是比较固定的。这三个类看上去就是一环套一环的样子。 vtkRenderer *renderer = vtkRenderer:New(); renderer-GetCullers()-RemoveAllItems(); vtkRenderWindow *renWin = vtkRenderWindow:New(); renWin-AddRenderer(renderer); vtkRenderWindowInteractor *iren = vtkRenderWindowInteractor:New(); iren-SetRenderWindow(renWin);复制代码3.创建个sphere的实例,并且以经纬度的方式各分成12份。 vtkSphereSource *sphere = vtkSphereSource:New(); sphere-SetThetaResolution(12); sphere-SetPhiResolution(12);复制代码4.上面这些都是一些比较固定的东西,或者说理解起来很容易,一看就能明白的东西。下面开始说些新东西吧。 vtkShrinkFilter *shrink = vtkShrinkFilter:New(); shrink-SetInput(vtkDataSet *)sphere-GetOutput(); shrink-SetShrinkFactor(0.9); vtkElevationFilter *colorIt = vtkElevationFilter:New(); colorIt-SetInput(vtkDataSet *)shrink-GetOutput(); colorIt-SetLowPoint(0,0,-0.5); colorIt-SetHighPoint(0,0,0.5);复制代码其实嘛,这里就是多了两个类而已,一个是vtkShrinkFilter,另一个是vtkElevationFilter。稍微解释一个这两个类,就能明白这几行代码是什么意思了。vtkShrinkFilter貌似这个类的作用就是用来缩小一个vtkDataSet这种数据类型表示的对象的,比如在这里应该就是缩小组成球面的三角形。(shrink cells composing an arbitrary data set vtkShrinkFilter shrinks cells composing an arbitrary data set towards their centroid. The centroid of a cell is computed as the average position of the cell points. Shrinking results in disconnecting the cells from one another. The output of this filter is of general dataset type vtkUnstructuredGrid.)virtual void vtkShrinkFilter:SetShrinkFactor ( double ) virtual Get/Set the fraction of shrink for each cell. The default is 0.5. 复制代码vtkElevationFilter在这里作用貌似是把输入数据的值转化之后限定在某一个数据段之中。这里的和这个类有关的三句代码的作用,就是让RGB的值从LowPoint到HighPoint进行变化,就是沿着R-G-B这样的顺序进行变化。(generate scalars along a specified direction vtkElevationFilter is a filter to generate scalar values from a dataset. The scalar values lie within a user specified range, and are generated by computing a projection of each dataset point onto a line. The line can be oriented arbitrarily. A typical example is to generate scalars based on elevation or height above a plane.)5.现在,程序其实可以按照很死板的顺序结束了。Mapper和Actor类,这是必须的,当然,Actor类有可以代替的类,但是那也是类似的。 vtkDataSetMapper *mapper = vtkDataSetMapper:New(); mapper-SetInput(colorIt-GetOutput(); vtkActor *actor = vtkActor:New(); actor-SetMapper(mapper);复制代码6.收尾。 renderer-AddActor(actor); renderer-SetBackground(1,1,1); renWin-SetSize(400,400); renWin-Render(); / execute first time / interact with data iren-Start(); / Clean up renderer-Delete(); renWin-Delete(); iren-Delete(); sphere-Delete(); shrink-Delete(); colorIt-Delete(); mapper-Delete(); actor-Delete();复制代码好了,可以运行上图了。总结,虽然这个程序很简单,但是

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论