当前位置:网站首页>VTK例子--三個相交的平面

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

2022-06-11 00:11:00 黑山老妖的博客

VTK筆記-圖形相關-平面-vtkPlaneSource_黑山老妖的博客的博客-CSDN博客_vtkplanevtkPlaneSource創建比特於平面中的四邊形陣列vtkPlaneSource創建一個由四邊形組成的m x n數組,這些四邊形排列為平面中的規則平鋪。該平面是通過指定一個原點來定義的,然後指定另外兩個與原點一起定義平面的兩個軸的點。這些軸不必是正交的-所以你可以創建一個平行四邊形(軸不能平行。)平面的分辨率(即細分的數量)由ivars X分辨率和Y分辨率控制。默認情况下,平面以原點為中心並垂直於z軸,寬度和高度的長度為1,分辨率設置為1。有三種方便的方法可以讓你輕松地移動飛機。第一個SetNorhttps://blog.csdn.net/liushao1031177/article/details/117110232        在之前的例子中,可以繪制一個平面;現在使用vtkPlaneSource繪制三個相交的平面;

vtkNew<vtkPlaneSource> 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<vtkPolyDataMapper> planeMapper_xy;
planeMapper_xy->SetInputConnection(planeSource_xy->GetOutputPort());
vtkNew<vtkActor> planeActor_xy;
planeActor_xy->SetMapper(planeMapper_xy);
planeActor_xy->GetProperty()->SetColor(0, 255, 0);

vtkNew<vtkPlaneSource> 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<vtkPolyDataMapper> planeMapper_yz;
planeMapper_yz->SetInputConnection(planeSource_yz->GetOutputPort());
vtkNew<vtkActor> planeActor_yz;
planeActor_yz->SetMapper(planeMapper_yz);

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

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

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

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

vtkNew<vtkRenderWindowInteractor> 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();

 

 旋轉紅色平面,繞z軸旋轉45°;

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

 紅色平面再繞(1,1,0)方向旋轉45°和90°;(1,1,0)方向為初次旋轉後,紅色平面與綠色平面的交線;旋轉90°後,紅色平面和綠色平面相交;

 

 

原网站

版权声明
本文为[黑山老妖的博客]所创,转载请带上原文链接,感谢
https://yzsam.com/2022/162/202206102254058022.html