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<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°后,红色平面和绿色平面相交;

 

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

黑山老妖的笔记本

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值