#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
VTK_MODULE_INIT(vtkRenderingOpenGL2)
using namespace std;
auto createball(float x, float y, float z, int r)
{
vtkSmartPointer sphereSource =
vtkSmartPointer::New();
sphereSource->SetCenter(x, y, z);
sphereSource->SetRadius(r);
sphereSource->Update();
vtkSmartPointer mapper =
vtkSmartPointer::New();
mapper->SetInputConnection(sphereSource->GetOutputPort());
vtkSmartPointer actor =
vtkSmartPointer::New();
actor->SetMapper(mapper);
return actor;
}
auto createline(double x1, double y1, double z1, double x2, double y2, double z2)
{
vtkSmartPointer lineSource =
vtkSmartPointer::New();
lineSource->SetPoint1(x1, y1, z1);
lineSource->SetPoint2(x2, y2, z2);
lineSource->Update();
// Visualize
vtkSmartPointer mapper =
vtkSmartPointer::New();
mapper->SetInputConnection(lineSource->GetOutputPort());
vtkSmartPointer actor =
vtkSmartPointer::New();
actor->SetMapper(mapper);
actor->GetProperty()->SetLineWidth(4);
return actor;
}
int main()
{
//设置圆
auto actor11 = createball(-12.0, -10.0, 0.0, 2.0);
auto actor12 = createball(-15.0, -4.0, 0.0, 2.0);
auto actor13 = createball(-18.0, 3.0, 0.0, 2.0);
auto actor21 = createball(-6.0, -2.0, 0.0, 2.0);
auto actor22 = createball(-8.0, 10.0, 0.0, 2.0);
auto actor23 = createball(-10.0, 25.0, 0.0, 2.0);
auto actor31 = createball(0.0, 0.0, 0.0, 2.0);
auto actor32 = createball(0.0, 12.0, 0.0, 2.0);
auto actor33 = createball(0.0, 27.0, 0.0, 2.0);
auto actor41 = createball(5.0, -2.0, 0.0, 2.0);
auto actor42 = createball(7.0, 10.0, 0.0, 2.0);
auto actor43 = createball(9.0, 23.0, 0.0, 2.0);
auto actor51 = createball(10.0, -6.0, 0.0, 2.0);
auto actor52 = createball(12.0, 0.0, 0.0, 2.0);
auto actor53 = createball(14.0, 10.0, 0.0, 2.0);
auto actor_ori = createball(0.0, -18.0, 0.0, 2.0);
//设置线
auto line_actor10 = createline(-12.0, -10.0, 0.0, 0.0, -18.0, 0.0);
auto line_actor11 = createline(-12.0, -10.0, 0.0, -15.0, -4.0, 0.0);
auto line_actor12 = createline(-15.0, -4.0, 0.0, -18.0, 3.0, 0.0);
auto line_actor20 = createline(-6.0, -2.0, 0.0, 0.0, -18.0, 0.0);
auto line_actor21 = createline(-6.0, -2.0, 0.0, -8.0, 10.0, 0.0);
auto line_actor22 = createline(-8.0, 10.0, 0.0, -10.0, 25.0, 0.0);
auto line_actor30 = createline(0.0, 0.0, 0.0, 0.0, -18.0, 0.0);
auto line_actor31 = createline(0.0, 0.0, 0.0, 0.0, 12.0, 0.0);
auto line_actor32 = createline(0.0, 12.0, 0.0, 0.0, 27.0, 0.0);
auto line_actor40 = createline(5.0, -2.0, 0.0, 0.0, -18.0, 0.0);
auto line_actor41 = createline(5.0, -2.0, 0.0, 7.0, 10.0, 0.0);
auto line_actor42 = createline(7.0, 10.0, 0.0, 9.0, 23.0, 0.0);
auto line_actor50 = createline(10.0, -6.0, 0.0, 0.0, -18.0, 0.0);
auto line_actor51 = createline(10.0, -6.0, 0.0, 12.0, 0.0, 0.0);
auto line_actor52 = createline(12.0, 0.0, 0.0, 14.0, 10.0, 0.0);
// A renderer and render window
vtkSmartPointer renderer =
vtkSmartPointer::New();
vtkSmartPointer renderWindow =
vtkSmartPointer::New();
renderWindow->AddRenderer(renderer);
// An interactor
vtkSmartPointer renderWindowInteractor =
vtkSmartPointer::New();
renderWindowInteractor->SetRenderWindow(renderWindow);
// Add the actors to the scene
renderer->AddActor(actor11);
renderer->AddActor(actor12);
renderer->AddActor(actor13);
renderer->AddActor(actor21);
renderer->AddActor(actor22);
renderer->AddActor(actor23);
renderer->AddActor(actor31);
renderer->AddActor(actor32);
renderer->AddActor(actor33);
renderer->AddActor(actor41);
renderer->AddActor(actor42);
renderer->AddActor(actor43);
renderer->AddActor(actor51);
renderer->AddActor(actor52);
renderer->AddActor(actor53);
renderer->AddActor(actor_ori);
renderer->AddActor(line_actor10);
renderer->AddActor(line_actor11);
renderer->AddActor(line_actor12);
renderer->AddActor(line_actor20);
renderer->AddActor(line_actor21);
renderer->AddActor(line_actor22);
renderer->AddActor(line_actor30);
renderer->AddActor(line_actor31);
renderer->AddActor(line_actor32);
renderer->AddActor(line_actor40);
renderer->AddActor(line_actor41);
renderer->AddActor(line_actor42);
renderer->AddActor(line_actor50);
renderer->AddActor(line_actor51);
renderer->AddActor(line_actor52);
renderer->SetBackground(0, 0, 0); // Background color white
// Render an image (lights and cameras are created automatically)
renderWindow->Render();
vtkSmartPointer style =
vtkSmartPointer::New();
renderWindowInteractor->SetInteractorStyle(style);
// Begin mouse interaction
renderWindowInteractor->Start();
return EXIT_SUCCESS;
}