// SPDX-FileCopyrightText: Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen // SPDX-License-Identifier: BSD-3-Clause #include "vtkActor.h" #include "vtkConeSource.h" #include "vtkDebugLeaks.h" #include "vtkGlyph3D.h" #include "vtkPolyData.h" #include "vtkPolyDataMapper.h" #include "vtkRegressionTestImage.h" #include "vtkRenderWindow.h" #include "vtkRenderWindowInteractor.h" #include "vtkRenderer.h" #include "vtkSphereSource.h" int Mace(int argc, char* argv[]) { vtkRenderer* renderer = vtkRenderer::New(); vtkRenderWindow* renWin = vtkRenderWindow::New(); renWin->AddRenderer(renderer); vtkRenderWindowInteractor* iren = vtkRenderWindowInteractor::New(); iren->SetRenderWindow(renWin); vtkSphereSource* sphere = vtkSphereSource::New(); sphere->SetThetaResolution(8); sphere->SetPhiResolution(8); vtkPolyDataMapper* sphereMapper = vtkPolyDataMapper::New(); sphereMapper->SetInputConnection(sphere->GetOutputPort()); vtkActor* sphereActor = vtkActor::New(); sphereActor->SetMapper(sphereMapper); vtkConeSource* cone = vtkConeSource::New(); cone->SetResolution(6); vtkGlyph3D* glyph = vtkGlyph3D::New(); glyph->SetInputConnection(sphere->GetOutputPort()); glyph->SetSourceConnection(cone->GetOutputPort()); glyph->SetVectorModeToUseNormal(); glyph->SetScaleModeToScaleByVector(); glyph->SetScaleFactor(0.25); vtkPolyDataMapper* spikeMapper = vtkPolyDataMapper::New(); spikeMapper->SetInputConnection(glyph->GetOutputPort()); vtkActor* spikeActor = vtkActor::New(); spikeActor->SetMapper(spikeMapper); renderer->AddActor(sphereActor); renderer->AddActor(spikeActor); renderer->SetBackground(1, 1, 1); renWin->SetSize(300, 300); // interact with data renWin->Render(); int retVal = vtkRegressionTestImage(renWin); if (retVal == vtkRegressionTester::DO_INTERACTOR) { iren->Start(); } // Clean up renderer->Delete(); renWin->Delete(); iren->Delete(); sphere->Delete(); sphereMapper->Delete(); sphereActor->Delete(); cone->Delete(); glyph->Delete(); spikeMapper->Delete(); spikeActor->Delete(); return !retVal; }