📄 task3.cxx
字号:
/*========================================================================= Program: Visualization Toolkit Module: $RCSfile: task3.cxx,v $ Language: C++ Date: $Date: 2002/09/30 20:37:43 $ Version: $Revision: 1.6 $ Copyright (c) 1993-2002 Ken Martin, Will Schroeder, Bill Lorensen All rights reserved. See Copyright.txt or http://www.kitware.com/Copyright.htm for details. This software is distributed WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the above copyright notice for more information.=========================================================================*/#include "TaskParallelismWithPorts.h"#include "vtkAppendPolyData.h"#include "vtkImageData.h"#include "vtkInputPort.h"#include "vtkPolyData.h"#include "vtkPolyDataMapper.h"#include "vtkRenderWindow.h"#include "vtkRenderWindowInteractor.h"// Task 3 for TaskParallelismWithPorts.// See TaskParallelismWithPorts.cxx for more information.void task3(double data){ double extent = data; int iextent = static_cast<int>(data); // The pipeline // Synthetic image source. vtkRTAnalyticSource* source1 = vtkRTAnalyticSource::New(); source1->SetWholeExtent (-1*iextent, iextent, -1*iextent, iextent, -1*iextent, iextent ); source1->SetCenter(0, 0, 0); source1->SetStandardDeviation( 0.5 ); source1->SetMaximum( 255.0 ); source1->SetXFreq( 60 ); source1->SetXMag( 10 ); source1->SetYFreq( 30 ); source1->SetYMag( 18 ); source1->SetZFreq( 40 ); source1->SetZMag( 5 ); source1->GetOutput()->SetSpacing(2.0/extent,2.0/extent,2.0/extent); // Iso-surfacing. vtkContourFilter* contour = vtkContourFilter::New(); contour->SetInput(source1->GetOutput()); contour->SetNumberOfContours(1); contour->SetValue(0, 220); // Magnitude of the gradient vector. vtkImageGradientMagnitude* magn = vtkImageGradientMagnitude::New(); magn->SetDimensionality(3); magn->SetInput(source1->GetOutput()); // Probe magnitude with iso-surface. vtkProbeFilter* probe = vtkProbeFilter::New(); probe->SetInput(contour->GetOutput()); probe->SetSource(magn->GetOutput()); probe->SpatialMatchOn(); // Input port vtkInputPort* ip = vtkInputPort::New(); ip->SetRemoteProcessId(1); ip->SetTag(11); // Append the local and remote data vtkAppendPolyData* append = vtkAppendPolyData::New(); append->AddInput(ip->GetPolyDataOutput()); append->AddInput(probe->GetPolyDataOutput()); // Rendering objects. vtkPolyDataMapper* mapper = vtkPolyDataMapper::New(); mapper->SetInput(append->GetOutput()); mapper->SetScalarRange(50, 180); mapper->ImmediateModeRenderingOn(); vtkActor* actor = vtkActor::New(); actor->SetMapper(mapper); // Create the render objects vtkRenderWindow* renWin = vtkRenderWindow::New(); renWin->SetSize( WINDOW_WIDTH, WINDOW_HEIGHT ); 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(); source1->Delete(); contour->Delete(); magn->Delete(); probe->Delete(); actor->Delete(); ren->Delete(); mapper->Delete();}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -