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

VTK+其他布尔运算库

文章目录

    • 一、vtkBool
      • 1.1 安装
      • 1.2 使用
      • 1.3 效果
    • 二、CGAL

本文的主要内容:VTK内置的布尔运算类具有稳定性差、计算时间长等缺点,为了避免使用VTK内置的布尔运算,本文简单介绍了两个比较实用的库用于替代,主要涉及vtkBool和CGAL库的使用方法。
哪些人适合阅读本文:有一定VTK基础的人。

一、vtkBool

vtkbool是VTK 布尔运算功能的扩展,主要用于多边形网格上的布尔运算,比VTK自带的布尔运算更稳定。源代码地址:https://github.com/zippy84/vtkbool

1.1 安装

如果想要从源代码安装的,可以直接查看源码页面的安装步骤。如果想直接使用的话只需要下面四个文件:
![[vtkbool files.png|240]]


1.2 使用

在使用vtkBool的时候只需要在CmakeList.txt加入vtkbool的头文件、lib文件、dll文件就可以了:

# 使用vtkbool
include_directories("vtkbool-bin")
find_library(VTKBOOL_LIBRARY_RELEASE vtkBool.lib "vtkbool-bin")
file(COPY "vtkbool-bin/vtkBool.dll" DESTINATION "Release")

一个简单的使用demo:

#include <vtkSmartPointer.h>
#include <vtkCubeSource.h>
#include <vtkCylinderSource.h>
#include <vtkRenderer.h>
#include <vtkRenderWindow.h>
#include <vtkRenderWindowInteractor.h>
#include <vtkPolyDataMapper.h>
#include "vtkPolyDataBooleanFilter.h"
int main (int argc, char *argv[]) {auto cube = vtkSmartPointer<vtkCubeSource>::New();cube->SetYLength(.5);auto cy = vtkSmartPointer<vtkCylinderSource>::New();cy->SetResolution(32);cy->SetHeight(1.0);cy->SetCenter(0, 0, 0);auto bf = vtkSmartPointer<vtkPolyDataBooleanFilter>::New();bf->SetInputConnection(0, cube->GetOutputPort());bf->SetInputConnection(1, cy->GetOutputPort());bf->SetOperModeToUnion();//bf->SetOperModeToDifference();//bf->SetOperModeToIntersection();bf->Update();vtkNew<vtkPolyDataMapper> mapper;mapper->SetInputData(bf->GetOutput());mapper->SetScalarVisibility(false);vtkNew<vtkActor> actor;actor->SetMapper(mapper);vtkNew<vtkRenderer> renderer;vtkNew<vtkRenderWindow> renWin;renWin->AddRenderer(renderer);renWin->SetWindowName("bool");vtkNew<vtkRenderWindowInteractor> iren;iren->SetRenderWindow(renWin);renderer->AddActor(actor);renderer->ResetCamera();renWin->SetSize(600, 600);renWin->Render();iren->Start();return EXIT_SUCCESS;
}

1.3 效果

运行demo程序,通过修改bool运算规则可以得到Union,Difference,Intersection的效果。

bf->SetOperModeToUnion();
//bf->SetOperModeToDifference();
//bf->SetOperModeToIntersection();
  • Union
    ![[vtkbool union.png|350]]
  • Diference
    ![[vtkbool difference.png|348]]
  • Intersection
    ![[vtkbool interaction.png|348]]

二、CGAL


http://www.mrgr.cn/news/43048.html

相关文章:

  • 【游戏模组】重返德军总部2009高清重置MOD,建模和材质全部重置,并且支持光追效果,游戏画质大提升
  • 华为OD机试 - 核酸最快检测效率 - 动态规划、背包问题(Python/JS/C/C++ 2024 E卷 200分)
  • 如何写出更牛更系统的验证激励
  • 如何使用ssm实现果蔬商品管理系统的设计与实现+vue
  • 【微服务】负载均衡 - LoadBalancer(day4)
  • 【可答疑】基于51单片机的数字时钟(含仿真、代码、报告等)
  • 通过 Caddy2 部署 WebDAV 服务器
  • 利用 Python 爬虫采集 1688商品详情
  • JVM 内存区域划分
  • 冥想第一千三百天(1300)
  • C语言复习概要(二)
  • 如何编写一个优雅的commit message
  • jQuery 选择器
  • 脱口秀演员调侃王楚钦引争议
  • 如何通过js加载css和html
  • vue项目开发中造成内存泄漏的情况以及如何避免
  • 华为OD机试 - 最长的密码(Python/JS/C/C++ 2024 E卷 100分)
  • FFT 分析进阶-笔记
  • CSS3新增属性(15个案例+代码+效果图)
  • C++、Ruby和JavaScript