网页资讯视频图片知道文库贴吧地图采购
进入贴吧全吧搜索

 
 
 
日一二三四五六
       
       
       
       
       
       

签到排名:今日本吧第个签到,

本吧因你更精彩,明天继续来努力!

本吧签到人数:0

一键签到
成为超级会员,使用一键签到
一键签到
本月漏签0次!
0
成为超级会员,赠送8张补签卡
如何使用?
点击日历上漏签日期,即可进行补签。
连续签到:天  累计签到:天
0
超级会员单次开通12个月以上,赠送连续签到卡3张
使用连续签到卡
12月25日漏签0天
vtk吧 关注:1,239贴子:10,464
  • 看贴

  • 图片

  • 吧主推荐

  • 游戏

  • 8回复贴,共1页
<<返回vtk吧
>0< 加载中...

求助,画不出等值线

  • 只看楼主
  • 收藏

  • 回复
  • 引火者
  • 学前班
    3
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
#include <vtkSmartPointer.h>
#include <vtkPoints.h>
#include <vtkTriangle.h>
#include <vtkCellArray.h>
#include <vtkPolyData.h>
#include <vtkIntArray.h>
#include <vtkPointData.h>
#include <vtkPolyDataMapper.h>
#include <vtkActor.h>
#include <vtkRenderer.h>
#include <vtkRenderWindow.h>
#include <vtkRenderWindowInteractor.h>
#include <vtkNamedColors.h>
#include <vtkProperty.h>
#include <vtkContourFilter.h>
#include <vtkOutputWindow.h>
#include <vtkObject.h>
int main(int, char* [])
{
vtkObject::SetGlobalWarningDisplay(1);
// 设置自定义输出窗口
vtkSmartPointer<vtkOutputWindow> outputWindow = vtkSmartPointer<vtkOutputWindow>::New();
vtkOutputWindow::SetInstance(outputWindow);
// 创建点
vtkSmartPointer<vtkPoints> points = vtkSmartPointer<vtkPoints>::New();
points->InsertNextPoint(0.0, 0.0, 0.0); // 点0
points->InsertNextPoint(1.0, 0.0, 0.0); // 点1
points->InsertNextPoint(1.0, 1.0, 0.0); // 点2
points->InsertNextPoint(0.0, 0.0, 0.0); // 点3
points->InsertNextPoint(1.0, 1.0, 0.0); // 点4
points->InsertNextPoint(0.0, 1.0, 0.0); // 点5
// 创建三角形
vtkSmartPointer<vtkTriangle> triangle1 = vtkSmartPointer<vtkTriangle>::New();
triangle1->GetPointIds()->SetId(0, 0);
triangle1->GetPointIds()->SetId(1, 1);
triangle1->GetPointIds()->SetId(2, 2);
vtkSmartPointer<vtkTriangle> triangle2 = vtkSmartPointer<vtkTriangle>::New();
triangle2->GetPointIds()->SetId(0, 3);
triangle2->GetPointIds()->SetId(1, 4);
triangle2->GetPointIds()->SetId(2, 5);
// 创建单元数组
vtkSmartPointer<vtkCellArray> triangles = vtkSmartPointer<vtkCellArray>::New();
triangles->InsertNextCell(triangle1);
triangles->InsertNextCell(triangle2);
// 创建PolyData
vtkSmartPointer<vtkPolyData> polyData = vtkSmartPointer<vtkPolyData>::New();
polyData->SetPoints(points);
polyData->SetPolys(triangles);
// 创建标量数组
vtkSmartPointer<vtkIntArray> scalars = vtkSmartPointer<vtkIntArray>::New();
scalars->SetNumberOfComponents(1);
scalars->SetName("Scalars");
// 设置每个点的标量值
scalars->InsertNextValue(0);
scalars->InsertNextValue(0);
scalars->InsertNextValue(0); // 三角形1
scalars->InsertNextValue(1);
scalars->InsertNextValue(1);
scalars->InsertNextValue(1); // 三角形2
polyData->GetPointData()->SetScalars(scalars);
// 创建mapper和actor用于原始数据
vtkSmartPointer<vtkPolyDataMapper> mapper = vtkSmartPointer<vtkPolyDataMapper>::New();
mapper->SetInputData(polyData);
mapper->ScalarVisibilityOn();
vtkSmartPointer<vtkActor> actor = vtkSmartPointer<vtkActor>::New();
actor->SetMapper(mapper);
// 创建renderer和renderWindow
vtkSmartPointer<vtkRenderer> renderer = vtkSmartPointer<vtkRenderer>::New();
vtkSmartPointer<vtkRenderWindow> renderWindow = vtkSmartPointer<vtkRenderWindow>::New();
renderWindow->AddRenderer(renderer);
// 创建renderWindowInteractor
vtkSmartPointer<vtkRenderWindowInteractor> renderWindowInteractor = vtkSmartPointer<vtkRenderWindowInteractor>::New();
renderWindowInteractor->SetRenderWindow(renderWindow);
// 创建等值线滤波器
vtkSmartPointer<vtkContourFilter> contourFilter = vtkSmartPointer<vtkContourFilter>::New();
contourFilter->SetInputData(polyData);
contourFilter->GenerateValues(2, 0, 1); // 生成两个等值线值
for (int i = 0; i < contourFilter->GetNumberOfContours(); i++) {
std::cout << "Contour value " << i << ": " << contourFilter->GetValue(i) << std::endl;
}
contourFilter->Update();
// 在这里添加调试输出
std::cout << "ContourFilter Output: " << contourFilter->GetOutput() << std::endl;
// 创建mapper和actor用于等值线
vtkSmartPointer<vtkPolyDataMapper> contourMapper = vtkSmartPointer<vtkPolyDataMapper>::New();
contourMapper->SetInputConnection(contourFilter->GetOutputPort());
contourMapper->ScalarVisibilityOff();
vtkSmartPointer<vtkActor> contourActor = vtkSmartPointer<vtkActor>::New();
contourActor->SetMapper(contourMapper);
contourActor->GetProperty()->SetColor(0.0, 0.0, 0.0); // 设置等值线颜色为黑色
// 添加actor到renderer
renderer->AddActor(actor);
// 添加actor到renderer
renderer->AddActor(contourActor);
renderer->SetBackground(1, 1, 1); // 设置背景颜色为白色
// 开始渲染循环
renderWindow->Render();
renderWindowInteractor->Start();
return EXIT_SUCCESS;
}


  • 引火者
  • 学前班
    3
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
我的scalar值都是分开的,求教为什么画不出等值线


2025-12-25 21:01:28
广告
不感兴趣
开通SVIP免广告
  • 引火者
  • 学前班
    3
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
自顶


  • 引火者
  • 学前班
    3
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
自顶啊


  • 引火者
  • 学前班
    3
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
自顶,有没有大神啊


  • 引火者
  • 学前班
    3
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
自顶,有没有大神啊


  • 专业三维可视化三维重建软件开发
  • 初一年级
    10
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
你可能用错了,使用vtkBandedPolyDataContourFilter


  • 多LV信源
  • 幼儿园
    2
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
你好, 你的问题, 解决了我吗? 我也遇到了


登录百度账号

扫二维码下载贴吧客户端

下载贴吧APP
看高清直播、视频!
  • 贴吧页面意见反馈
  • 违规贴吧举报反馈通道
  • 贴吧违规信息处理公示
  • 8回复贴,共1页
<<返回vtk吧
分享到:
©2025 Baidu贴吧协议|隐私政策|吧主制度|意见反馈|网络谣言警示