visquad.cxx

来自「VTK入门样例(种类齐全)」· CXX 代码 · 共 101 行

CXX
101
字号
#include "vtkRenderer.h"
#include "vtkRenderWindow.h"
#include "vtkRenderWindowInteractor.h"
#include "vtkQuadric.h"
#include "vtkSampleFunction.h"
#include "vtkContourFilter.h"
#include "vtkOutlineFilter.h"
#include "vtkPolyDataMapper.h"
#include "vtkActor.h"
#include "vtkProperty.h"
#include "vtkProperty2D.h"
#include "vtkTextProperty.h"
#include "vtkDataSetToDataObjectFilter.h"

#include "SaveImage.h"
#include "vtkParallelCoordinatesActor.h"

int main( int argc, char *argv[] )
{
  vtkRenderer *ren1 = vtkRenderer::New();
  vtkRenderWindow *renWin = vtkRenderWindow::New();
    renWin->AddRenderer(ren1);
  vtkRenderWindowInteractor *iren = vtkRenderWindowInteractor::New();
    iren->SetRenderWindow(renWin);
  renWin->SetSize( 300, 300 );
  
  // Quadric definition
  vtkQuadric *quadric = vtkQuadric::New();
    quadric->SetCoefficients(0.5,1,.2,0,.1,0,0,.2,0,0);

  vtkSampleFunction *sample = vtkSampleFunction::New();
    sample->SetSampleDimensions(30,30,30);
    sample->SetImplicitFunction(quadric);

  // Create five surfaces F(x,y,z) = constant between range specified
  vtkContourFilter *contours = vtkContourFilter::New();
    contours->SetInput((vtkDataSet *)sample->GetOutput());
    contours->GenerateValues(5, 0.0, 1.2);
    contours->Update();

  vtkPolyDataMapper *contMapper = vtkPolyDataMapper::New();
    contMapper->SetInput(contours->GetOutput());
    contMapper->SetScalarRange(0.0, 1.2);

  vtkActor *contActor = vtkActor::New();
    contActor->SetMapper(contMapper);

  // Create outline
  vtkOutlineFilter *outline = vtkOutlineFilter::New();
    outline->SetInput((vtkDataSet *)sample->GetOutput());

  vtkPolyDataMapper *outlineMapper = vtkPolyDataMapper::New();
    outlineMapper->SetInput(outline->GetOutput());

  vtkActor *outlineActor = vtkActor::New();
    outlineActor->SetMapper(outlineMapper);
    outlineActor->GetProperty()->SetColor(0,0,0);

vtkDataSetToDataObjectFilter *ds2do=vtkDataSetToDataObjectFilter::New();
    ds2do-> SetInputConnection(sample-> GetOutputPort());

vtkParallelCoordinatesActor *actor=vtkParallelCoordinatesActor::New();
    actor-> SetInput(ds2do-> GetOutput());
    actor-> SetTitle("Parallel Coordinates");
    actor-> SetIndependentVariablesToColumns();
    actor-> GetPositionCoordinate()-> SetValue( 0.05, 0.05, 0.0);
    actor-> GetPosition2Coordinate()-> SetValue( 0.95, 0.85, 0.0);
    actor-> GetProperty()-> SetColor( 1, 0, 0);
    actor-> GetTitleTextProperty()-> SetColor(0,0,1);
    actor-> GetLabelTextProperty()-> SetColor(0,0,1); 


  ren1->SetBackground(1,1,1);
  ren1->AddActor(contActor);
//  ren1->AddActor(actor);
//  ren1->AddActor(outlineActor);

  renWin->Render();

  SAVEIMAGE( renWin );

  // interact with data
  iren->Initialize();
  iren->Start();

  // Clean up
  ren1->Delete();
  renWin->Delete();
  iren->Delete();
  quadric->Delete();
  sample->Delete();
  contours->Delete();
  contMapper->Delete();
  contActor->Delete();
  outline->Delete();
  outlineMapper->Delete();
  outlineActor->Delete();

  return( 1 );
}

⌨️ 快捷键说明

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