#include "vtkActor.h"
#include "vtkXMLPolyDataReader.h"
#include "vtkCutter.h"
#include "vtkPlane.h"
#include "vtkPolyData.h"
#include "vtkPolyDataMapper.h"
#include "vtkPolyDataNormals.h"
#include "vtkProperty.h"
#include "vtkRenderWindow.h"
#include "vtkRenderWindowInteractor.h"
#include "vtkRenderer.h"
#include "vtkStripper.h"
#include "vtkTriangleFilter.h"
#include "vtkSmartPointer.h"
#include "vtkInteractorStyleTrackballCamera.h"
#include "vtkConeSource.h"
int main()
{
vtkSmartPointer<vtkConeSource> coneSource = vtkSmartPointer<vtkConeSource>::New();
coneSource->SetCenter(0, 0, 0);
coneSource->SetRadius(2);
coneSource->SetHeight(10);
coneSource->SetResolution(50);
coneSource->Update();
// second
vtkSmartPointer<vtkLineSource> line = vtkSmartPointer<vtkLineSource>::New();
line->SetPoint1(1.0, 0, 0);
line->SetPoint2(0, 1.0, 20);
vtkSmartPointer<vtkTubeFilter> tube = vtkSmartPointer<vtkTubeFilter>::New();
tube->SetInputConnection(line->GetOutputPort());
tube->SetRadius(2);
tube->SetNumberOfSides(50);
tube->SetCapping(1);
tube->Update();
// combine two poly data
vtkSmartPointer<vtkAppendPolyData> appendFilter =
vtkSmartPointer<vtkAppendPolyData>::New();
appendFilter->AddInputData(tube->GetOutput());
appendFilter->AddInputData(coneSource->GetOutput());
appendFilter->Update();
// Remove any duplicate points.
vtkSmartPointer<vtkCleanPolyData> cleanFilter =
vtkSmartPointer<vtkCleanPolyData>::New();
cleanFilter->SetInputConnection(appendFilter->GetOutputPort());
cleanFilter->Update();
//Create a mapper and actor
vtkSmartPointer<vtkPolyDataMapper> appendmapper =
vtkSmartPointer<vtkPolyDataMapper>::New();
appendmapper->SetInputConnection(cleanFilter->GetOutputPort());
vtkSmartPointer<vtkActor> appendactor =
vtkSmartPointer<vtkActor>::New();
appendactor->SetMapper(appendmapper);
//Create a renderer, render window, and interactor
vtkSmartPointer<vtkRenderer> renderer =
vtkSmartPointer<vtkRenderer>::New();
vtkSmartPointer<vtkRenderWindow> renderWindow =
vtkSmartPointer<vtkRenderWindow>::New();
renderWindow->AddRenderer(renderer);
vtkSmartPointer<vtkRenderWindowInteractor> renderWindowInteractor =
vtkSmartPointer<vtkRenderWindowInteractor>::New();
renderWindowInteractor->SetRenderWindow(renderWindow);
//Add the actors to the scene
renderer->AddActor(appendactor);
renderer->SetBackground(.3, .2, .1); // Background color dark red
//Render and interact
renderWindow->Render();
renderWindowInteractor->Start();
return EXIT_SUCCESS;
}