#include <vtkCylinderSource.h>
#include <vtkLineSource.h>
#include <vtkPolyData.h>
#include <vtkSmartPointer.h>
#include <vtkPolyDataMapper.h>
#include <vtkActor.h>
#include <vtkRenderWindow.h>
#include <vtkRenderer.h>
#include <vtkRenderWindowInteractor.h>
#include <vtkProperty.h>
#include <vtkTubeFilter.h>
#include "vtkTruncatedConeSource .h"
int main(int, char* [])
{
//倒角
vtkSmartPointer<vtkTruncatedConeSource> cylinderSource1 =
vtkSmartPointer<vtkTruncatedConeSource>::New();
cylinderSource1->SetLength(0.4);
cylinderSource1->SetRadius1(6.5);
cylinderSource1->SetRadius2(4.8);
double center[3] = { 0,0, 6.6};
cylinderSource1->SetCenter(center);
//基台
vtkSmartPointer<vtkTruncatedConeSource> cylinderSource2 =
vtkSmartPointer<vtkTruncatedConeSource>::New();
cylinderSource2->SetLength(1.4);
cylinderSource2->SetRadius1(4.8);
cylinderSource2->SetRadius2(6.5);
double center1[3] = { 0,0, 5.7 };
cylinderSource2->SetCenter(center1);
//骨内
vtkSmartPointer<vtkTruncatedConeSource> cylinderSource3 =
vtkSmartPointer<vtkTruncatedConeSource>::New();
cylinderSource3->SetLength(10);
cylinderSource3->SetRadius1(4.2);
cylinderSource3->SetRadius2(4.8);
vtkSmartPointer<vtkPolyDataMapper> cylinderMapper1 =
vtkSmartPointer<vtkPolyDataMapper>::New();
cylinderMapper1->SetInputConnection(cylinderSource1->GetOutputPort());
vtkSmartPointer<vtkPolyDataMapper> cylinderMapper2 =
vtkSmartPointer<vtkPolyDataMapper>::New();
cylinderMapper2->SetInputConnection(cylinderSource2->GetOutputPort());
vtkSmartPointer<vtkPolyDataMapper> cylinderMapper3 =
vtkSmartPointer<vtkPolyDataMapper>::New();
cylinderMapper3->SetInputConnection(cylinderSource3->GetOutputPort());
vtkSmartPointer<vtkActor> cylinderActor1 =
vtkSmartPointer<vtkActor>::New();
cylinderActor1->SetMapper(cylinderMapper1);
vtkSmartPointer<vtkActor> cylinderActor2 =
vtkSmartPointer<vtkActor>::New();
cylinderActor2->SetMapper(cylinderMapper2);
vtkSmartPointer<vtkActor> cylinderActor3 =
vtkSmartPointer<vtkActor>::New();
cylinderActor3->SetMapper(cylinderMapper3);
vtkSmartPointer<vtkRenderer> renderer1 =
vtkSmartPointer<vtkRenderer>::New();
renderer1->AddActor(cylinderActor1);
renderer1->AddActor(cylinderActor2);
renderer1->AddActor(cylinderActor3);
vtkSmartPointer<vtkRenderWindow> renderWindow =
vtkSmartPointer<vtkRenderWindow>::New();
renderWindow->SetSize(600, 600);
renderWindow->AddRenderer(renderer1);
vtkSmartPointer<vtkRenderWindowInteractor> renderWindowInteractor =
vtkSmartPointer<vtkRenderWindowInteractor>::New();
renderWindowInteractor->SetRenderWindow(renderWindow);
renderWindow->Render();
renderWindowInteractor->Start();
return EXIT_SUCCESS;
}