当前位置: 首页 > wzjs >正文

显示佣金的网站是怎么做的seo哪里有培训

显示佣金的网站是怎么做的,seo哪里有培训,入侵网站做排名,让家里的电脑做网站服务器参考: VTK显示三维图像的二维切片 文章目录 实现类头文件实现类源文件如何调用项目git链接 以中心点坐标横切面 实现类头文件 /*** file MeshSliceController.h* brief 该头文件定义了 MeshSliceController 类,用于显示切面图。* details 该类负责处理与…

参考:
VTK显示三维图像的二维切片

文章目录

  • 实现类头文件
  • 实现类源文件
  • 如何调用
  • 项目git链接

以中心点坐标横切面

实现类头文件


/*** @file MeshSliceController.h* @brief 该头文件定义了 MeshSliceController 类,用于显示切面图。* @details 该类负责处理与网格切面相关的操作,包括创建切面、显示和隐藏切面,以及更新用于切面操作的网格数据。*          注意注释中提到的比例尺相关内容可能是文档编写错误,实际该类与比例尺无关。* @author qtree* @date 2025年5月14日*/
#ifndef MESHSLICECONTROLLER_H
#define MESHSLICECONTROLLER_H#include <vtkSmartPointer.h>
#include <vtkPolyData.h>
#include <vtkPlane.h>
#include <vtkCutter.h>
#include <vtkPolyDataMapper.h>
#include <vtkActor.h>
#include <vtkRenderer.h>/*** @enum SliceDirection* @brief 定义切面的方向枚举类型。*/
enum SliceDirection
{SLICE_X, ///< 沿 X 轴方向进行切面SLICE_Y, ///< 沿 Y 轴方向进行切面SLICE_Z  ///< 沿 Z 轴方向进行切面
};/*** @class MeshSliceController* @brief 用于管理和显示网格数据切面的类。** 该类提供了显示、隐藏切面,以及更新网格数据的功能。*/
class MeshSliceController
{
public:/*** @brief 构造函数。* @param renderer 用于渲染切面的渲染器。*/MeshSliceController(vtkSmartPointer<vtkRenderer> renderer);/*** @brief 根据指定方向显示切面。* @param direction 切面的方向,取值为 SliceDirection 枚举类型。*/void ShowSlice(SliceDirection direction);/*** @brief 隐藏当前显示的切面。*/void HideSlice();/*** @brief 更新用于切面操作的网格数据。* @param polyData 新的网格数据。*/void UpdatePolyData(vtkSmartPointer<vtkPolyData> polyData);/*** @brief 设置原始网格数据的 Actor。* @param actor 原始网格数据的 Actor。*/void SetOriginalActor(vtkSmartPointer<vtkActor> actor);private:vtkSmartPointer<vtkRenderer> renderer_; ///< 用于渲染切面的渲染器vtkSmartPointer<vtkPolyData> polyData_; ///< 用于切面操作的网格数据vtkSmartPointer<vtkPlane> slicePlane_;           ///< 定义切面的平面vtkSmartPointer<vtkCutter> cutter_;              ///< 用于切割网格数据的切割器vtkSmartPointer<vtkPolyDataMapper> sliceMapper_; ///< 切面数据的映射器vtkSmartPointer<vtkActor> sliceActor_;           ///< 用于显示切面的 ActorvtkSmartPointer<vtkActor> originalActor_; ///< 原始网格数据的 Actor
};#endif // MESHSLICECONTROLLER_H

实现类源文件

#include "MeshSliceController.h"
#include <vtkProperty.h>
#include <vtkBoundingBox.h>
#include <iostream> // 添加标准输出MeshSliceController::MeshSliceController(vtkSmartPointer<vtkRenderer> renderer): renderer_(renderer)
{std::cout << "[MeshSliceController] Constructor called." << std::endl;slicePlane_ = vtkSmartPointer<vtkPlane>::New();cutter_ = vtkSmartPointer<vtkCutter>::New();cutter_->SetCutFunction(slicePlane_);sliceMapper_ = vtkSmartPointer<vtkPolyDataMapper>::New();sliceMapper_->SetInputConnection(cutter_->GetOutputPort());sliceActor_ = vtkSmartPointer<vtkActor>::New();sliceActor_->SetMapper(sliceMapper_);sliceActor_->GetProperty()->SetColor(1.0, 0.0, 0.0); // 红色切面sliceActor_->GetProperty()->SetLineWidth(2.0);sliceActor_->GetProperty()->SetOpacity(1.0);
}void MeshSliceController::ShowSlice(SliceDirection direction)
{if (!polyData_){std::cerr << "[MeshSliceController] polyData_ is null. Cannot show slice." << std::endl;return;}if (originalActor_){std::cout << "[ShowSlice] Hiding original actor." << std::endl;originalActor_->VisibilityOff();}std::cout << "[MeshSliceController] ShowSlice called." << std::endl;double bounds[6];polyData_->GetBounds(bounds);double center[3] = {(bounds[0] + bounds[1]) / 2.0,(bounds[2] + bounds[3]) / 2.0,(bounds[4] + bounds[5]) / 2.0};std::cout << "PolyData bounds: ["<< bounds[0] << ", " << bounds[1] << ", "<< bounds[2] << ", " << bounds[3] << ", "<< bounds[4] << ", " << bounds[5] << "]" << std::endl;switch (direction){case SLICE_X:std::cout << "Slice along X-axis." << std::endl;slicePlane_->SetOrigin(center[0], center[1], center[2]);slicePlane_->SetNormal(1.0, 0.0, 0.0);break;case SLICE_Y:std::cout << "Slice along Y-axis." << std::endl;slicePlane_->SetOrigin(center[0], center[1], center[2]);slicePlane_->SetNormal(0.0, 1.0, 0.0);break;case SLICE_Z:std::cout << "Slice along Z-axis." << std::endl;slicePlane_->SetOrigin(center[0], center[1], center[2]);slicePlane_->SetNormal(0.0, 0.0, 1.0);break;default:std::cerr << "Unknown slice direction!" << std::endl;return;}std::cout << "Origin: (" << center[0] << ", " << center[1] << ", " << center[2] << ")" << std::endl;cutter_->Update();vtkSmartPointer<vtkPolyData> sliceOutput = cutter_->GetOutput();std::cout << "Number of points in slice: " << sliceOutput->GetNumberOfPoints() << std::endl;std::cout << "Number of cells in slice: " << sliceOutput->GetNumberOfCells() << std::endl;if (!renderer_->HasViewProp(sliceActor_)){std::cout << "[MeshSliceController] Adding slice actor to renderer." << std::endl;renderer_->AddActor(sliceActor_);}else{std::cout << "[ShowSlice] Slice actor already exists in renderer." << std::endl;}sliceMapper_->SetInputConnection(cutter_->GetOutputPort());sliceMapper_->Update();renderer_->Render();
}void MeshSliceController::HideSlice()
{if (originalActor_){std::cout << "[HideSlice] Restoring original actor visibility." << std::endl;originalActor_->VisibilityOn();}if (renderer_->HasViewProp(sliceActor_)){std::cout << "[HideSlice] Removing slice actor." << std::endl;renderer_->RemoveActor(sliceActor_);renderer_->Render();}
}void MeshSliceController::UpdatePolyData(vtkSmartPointer<vtkPolyData> polyData)
{std::cout << "[UpdatePolyData] Updating slice polyData, number of points: "<< (polyData ? polyData->GetNumberOfPoints() : 0) << std::endl;polyData_ = polyData;cutter_->SetInputData(polyData_); // 更新切割输入cutter_->Update();
}void MeshSliceController::SetOriginalActor(vtkSmartPointer<vtkActor> actor)
{originalActor_ = actor;
}

如何调用

头文件声明

// 切面图
std::unique_ptr<MeshSliceController> meshSliceController_;

构造函数初始化一次

// 切面图
meshSliceController_ = std::make_unique<MeshSliceController>(renderer_);
meshSliceController_->SetOriginalActor(testActor);
// 传入最终用于渲染的 polydata
meshSliceController_->UpdatePolyData(cylinderSource->GetOutput()); 

构造函数里xyz轴以及隐藏 切面按钮槽函数

connect(btnSliceX, &QPushButton::clicked, this, [=](){ meshSliceController_->ShowSlice(SLICE_X); renderWindow_->Render(); });connect(btnSliceY, &QPushButton::clicked, this, [=](){ meshSliceController_->ShowSlice(SLICE_Y); renderWindow_->Render(); });connect(btnSliceZ, &QPushButton::clicked, this, [=](){ meshSliceController_->ShowSlice(SLICE_Z); renderWindow_->Render(); });connect(hideSlice, &QPushButton::clicked, this, [=](){
if (meshSliceController_)meshSliceController_->HideSlice(); renderWindow_->Render(); });

更新PolyData,通常在加载新的ply和obj文件之后调用


// ✅ 更新切面数据
if (meshSliceController_)
{meshSliceController_->SetOriginalActor(ply_point_actor_);// 传入最终用于渲染的 polydatameshSliceController_->UpdatePolyData(vertexGlyphFilter->GetOutput()); 
}

项目git链接

gitee:https://gitee.com/strange-tree-qian/vtktest
github:https://github.com/qishuqian666/project-vtk-test

http://www.dtcms.com/wzjs/72976.html

相关文章:

  • 枣庄网站建设哪家强网络舆情
  • 网站设计怎么做图片透明度百度快速查询
  • 如何只做网站优化是什么意思?
  • 福建网站建建设方案2022最新免费的推广引流软件
  • b2c的电子信息网站日本樱花免m38vcom费vps
  • 深圳网站seo 乐云践新近期国际热点大事件
  • 怎样运营网站最全磁力搜索引擎
  • 新手学做网站这本书安徽网站关键字优化
  • 大庆建设公司网站营销策划公司 品牌策划公司
  • 青岛设计网站公司企业官网seo
  • 网站制作吧石狮seo
  • 厦门海沧区建设局网站灰色关键词排名代发
  • 织梦网站联系我们的地图怎么做电子商务网站开发
  • 成都十大景观设计公司seo需要付费吗
  • 物流公司响应式网站建设龙南黄页全部电话
  • 手机网站网站权重划分
  • 网络营销企业网站推广seo公司发展前景
  • 乌鲁木齐教育网南昌seo网站管理
  • 网站设计 珠海北京百度推广代理公司
  • 如何利用js来做网站表单郴州seo网络优化
  • 番号网站怎么做友情链接的作用
  • 昆明做凡科网站百度官网app下载
  • 大型网站开发教你如何建立网站
  • 钓鱼网站怎么做的成都短视频代运营
  • 网络规划设计师考试全程指导(第2版) pdf河北seo技术交流
  • 河北省网站建设公司苏州网站建设
  • 为什么我的网站百度不收录手机网页设计制作网站
  • 南通网站建设公司互联网培训
  • 网站建设的主要产品海外引流推广平台
  • 什么网站做推广比较好想做网络推广的公司