⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 task1.cpp

📁 本程序完成任务并行等值面提取功能
💻 CPP
字号:
#include "programme.h"
#include "vtkVolume16Reader.h"
#include "vtkContourFilter.h"
#include "vtkAppendPolyData.h"
#include "vtkImageData.h"
#include "vtkInputPort.h"
#include "vtkPolyData.h"
#include "vtkPolyDataMapper.h"
#include "vtkRenderWindow.h"
#include "vtkProperty.h"
#include "vtkRenderWindowInteractor.h"

void task1()
{
 // double extent = data;
 // int iextent = static_cast<int>(data);  
    vtkVolume16Reader *v16 = vtkVolume16Reader::New();
    v16->SetDataDimensions(64,64);
    v16->SetDataByteOrderToLittleEndian();
	v16->SetFilePrefix ("D:/headsq/quarter");
    v16->SetImageRange(1, 93);
    v16->SetDataSpacing (3.2, 3.2, 1.5);
  

  // Iso-surfacing.
  vtkContourFilter* contour = vtkContourFilter::New();
  contour->SetInput(v16->GetOutput());
  contour->SetNumberOfContours(1);
  contour->SetValue(0, 500);

  // Input port
  vtkInputPort* ip = vtkInputPort::New();
  ip->SetRemoteProcessId(1);
  ip->SetTag(11);

  // Append the local and remote data
  vtkAppendPolyData* append = vtkAppendPolyData::New();
  //append->AddInput(contour->GetPolyDataOutput());
  append->AddInput(contour->GetOutput());
  append->AddInput(ip->GetPolyDataOutput());
  

  // Rendering objects.
  vtkPolyDataMapper* mapper = vtkPolyDataMapper::New();
  mapper->SetInput(append->GetOutput());
  mapper->SetScalarRange(50, 180);
  mapper->ImmediateModeRenderingOn();

  vtkActor* actor = vtkActor::New();
  actor->SetMapper(mapper);

 // vtkProperty *prop =  actor->GetProperty();
  //prop->SetColor(1, 0.9, 0);
  //actor->GetProperty()->SetDiffuseColor(1, .49, .25);
    //   actor->GetProperty()->SetSpecular(.3);
     //  actor->GetProperty()->SetSpecularPower(20);

  // Create the render objects
  vtkRenderWindow* renWin = vtkRenderWindow::New();
  renWin->SetSize( 600, 600 );

  vtkRenderWindowInteractor* iren = vtkRenderWindowInteractor::New();
  iren->SetRenderWindow(renWin);

  vtkRenderer* ren = vtkRenderer::New();
  renWin->AddRenderer(ren);

  ren->AddActor(actor);

  iren->Initialize();
  iren->Start();

  // Tell the other process we are done
  ip->GetController()->TriggerRMI(1, 
                                  vtkMultiProcessController::BREAK_RMI_TAG); 

  // Cleanup
  iren->Delete();
  renWin->Delete();
  ip->Delete();
  append->Delete();
  v16->Delete();
  contour->Delete();
  actor->Delete();
  ren->Delete();
  mapper->Delete();

}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -