VTK例子--三个相交的平面

VTK笔记-图形相关-平面-vtkPlaneSource_黑山老妖的博客的博客-CSDN博客_vtkplanevtkPlaneSource创建位于平面中的四边形阵列vtkPlaneSource创建一个由四边形组成的m x n数组,这些四边形排列为平面中的规则平铺。该平面是通过指定一个原点来定义的,然后指定另外两个与原点一起定义平面的两个轴的点。这些轴不必是正交的-所以你可以创建一个平行四边形(轴不能平行。)平面的分辨率(即细分的数量)由ivars X分辨率和Y分辨率控制。默认情况下,平面以原点为中心并垂直于z轴,宽度和高度的长度为1,分辨率设置为1。有三种方便的方法可以让你轻松地移动飞机。第一个SetNorhttps://blog.csdn.net/liushao1031177/article/details/117110232        在之前的例子中,可以绘制一个平面;现在使用vtkPlaneSource绘制三个相交的平面;

vtkNew planeSource_xy;
planeSource_xy->SetOrigin(-1, -1, 0.0);
planeSource_xy->SetPoint1(1, -1, 0);
planeSource_xy->SetPoint2(-1, 1, 0);
planeSource_xy->Update();

vtkNew planeMapper_xy;
planeMapper_xy->SetInputConnection(planeSource_xy->GetOutputPort());
vtkNew planeActor_xy;
planeActor_xy->SetMapper(planeMapper_xy);
planeActor_xy->GetProperty()->SetColor(0, 255, 0);

vtkNew planeSource_yz;
planeSource_yz->SetOrigin(0.0, -1, -1);
planeSource_yz->SetPoint1(0, 1, -1);
planeSource_yz->SetPoint2(0, -1, 1);
planeSource_yz->Update();

vtkNew planeMapper_yz;
planeMapper_yz->SetInputConnection(planeSource_yz->GetOutputPort());
vtkNew planeActor_yz;
planeActor_yz->SetMapper(planeMapper_yz);

vtkNew planeSource_xz;
planeSource_xz->SetOrigin(-1, 0, -1);
planeSource_xz->SetPoint1(1, 0, -1);
planeSource_xz->SetPoint2(-1, 0, 1);
planeSource_xz->Update();

vtkNew planeMapper_xz;
planeMapper_xz->SetInputConnection(planeSource_xz->GetOutputPort());
vtkNew planeActor_xz;
planeActor_xz->SetMapper(planeMapper_xz);
planeActor_xz->GetProperty()->SetColor(255, 0, 0);

vtkNew renderer;
renderer->AddActor(planeActor_xy);
renderer->AddActor(planeActor_yz);
renderer->AddActor(planeActor_xz);

vtkNew renderWindow;
renderWindow->AddRenderer(renderer);
renderWindow->SetWindowName("PlaneSourceDemo");
renderWindow->SetSize(640, 480);

vtkNew interactor;
interactor->SetRenderWindow(renderWindow);
renderWindow->Render();
renderer->GetActiveCamera()->SetPosition(1, 0, 0);
renderer->GetActiveCamera()->SetFocalPoint(0, 1, 0);
renderer->GetActiveCamera()->SetViewUp(0, 0, 1);
renderer->GetActiveCamera()->Azimuth(30);
renderer->GetActiveCamera()->Elevation(30);
renderer->ResetCamera();
renderWindow->Render();
interactor->Start();

VTK例子--三个相交的平面_第1张图片

 

 旋转红色平面,绕z轴旋转45°;

planeActor_xz->RotateWXYZ(45, 0, 0, 1);

VTK例子--三个相交的平面_第2张图片

 红色平面再绕(1,1,0)方向旋转45°和90°;(1,1,0)方向为初次旋转后,红色平面与绿色平面的交线;旋转90°后,红色平面和绿色平面相交;

VTK例子--三个相交的平面_第3张图片VTK例子--三个相交的平面_第4张图片

 

 

你可能感兴趣的:(VTK例子,平面)