python VTK vtkImplicitBoolean 布尔切割

 

VTK中包含可以执行布尔操作的接口有vtkImplicitBoolean,vtkBooleanOperationPolyDataFilter,vtkLoopBooleanPolyDataFilter。

布尔操作包括:布尔加,布尔减和布尔交。

 

 

 

code:

#!/usr/bin/env python"""
This example demonstrates how to use boolean combinations of implicitfunctions to create a model of an ice cream cone."""
# noinspection PyUnresolvedReferences
import vtkmodules.vtkInteractionStyle
# noinspection PyUnresolvedReferences
import vtkmodules.vtkRenderingOpenGL2
from vtkmodules.vtkCommonColor import vtkNamedColors
from vtkmodules.vtkCommonDataModel import (vtkCone,vtkImplicitBoolean,vtkPlane,vtkSphere
)
from vtkmodules.vtkFiltersCore import vtkContourFilter
from vtkmodules.vtkImagingHybrid import vtkSampleFunction
from vtkmodules.vtkRenderingCore import (vtkActor,vtkPolyDataMapper,vtkRenderWindow,vtkRenderWindowInteractor,vtkRenderer
)def main():colors = vtkNamedColors()# Create implicit function primitives. These have been carefully placed to# give the effect that we want. We are going to use various combinations of# these functions to create the shape we want for example, we use planes# intersected with a cone (which is infinite in extent) to get a finite# cone.#cone = vtkCone()cone.SetAngle(20)vertPlane = vtkPlane()vertPlane.SetOrigin(.1, 0, 0)vertPlane.SetNormal(-1, 0, 0)basePlane = vtkPlane()basePlane.SetOrigin(1.2, 0, 0)basePlane.SetNormal(1, 0, 0)iceCream = vtkSphere()iceCream.SetCenter(1.333, 0, 0)iceCream.SetRadius(0.5)bite = vtkSphere()bite.SetCenter(1.5, 0, 0.5)bite.SetRadius(0.25)# Combine primitives to build ice-cream cone. Clip the cone with planes.theCone = vtkImplicitBoolean()theCone.SetOperationTypeToIntersection()theCone.AddFunction(cone)theCone.AddFunction(vertPlane)theCone.AddFunction(basePlane)# Take a bite out of the ice cream.theCream = vtkImplicitBoolean()theCream.SetOperationTypeToDifference()theCream.AddFunction(iceCream)theCream.AddFunction(bite)# The sample function generates a distance function from the# implicit function (which in this case is the cone). This is# then contoured to get a polygonal surface.#theConeSample = vtkSampleFunction()theConeSample.SetImplicitFunction(theCone)theConeSample.SetModelBounds(-1, 1.5, -1.25, 1.25, -1.25, 1.25)theConeSample.SetSampleDimensions(128, 128, 128)theConeSample.ComputeNormalsOff()theConeSurface = vtkContourFilter()theConeSurface.SetInputConnection(theConeSample.GetOutputPort())theConeSurface.SetValue(0, 0.0)coneMapper = vtkPolyDataMapper()coneMapper.SetInputConnection(theConeSurface.GetOutputPort())coneMapper.ScalarVisibilityOff()coneActor = vtkActor()coneActor.SetMapper(coneMapper)coneActor.GetProperty().SetColor(colors.GetColor3d('Chocolate'))# The same here for the ice cream.#theCreamSample = vtkSampleFunction()theCreamSample.SetImplicitFunction(theCream)theCreamSample.SetModelBounds(0, 2.5, -1.25, 1.25, -1.25, 1.25)theCreamSample.SetSampleDimensions(128, 128, 128)theCreamSample.ComputeNormalsOff()theCreamSurface = vtkContourFilter()theCreamSurface.SetInputConnection(theCreamSample.GetOutputPort())theCreamSurface.SetValue(0, 0.0)creamMapper = vtkPolyDataMapper()creamMapper.SetInputConnection(theCreamSurface.GetOutputPort())creamMapper.ScalarVisibilityOff()creamActor = vtkActor()creamActor.SetMapper(creamMapper)creamActor.GetProperty().SetDiffuseColor(colors.GetColor3d('Mint'))creamActor.GetProperty().SetSpecular(.6)creamActor.GetProperty().SetSpecularPower(50)# Create the usual rendering stuff.#ren1 = vtkRenderer()renWin = vtkRenderWindow()renWin.AddRenderer(ren1)iren = vtkRenderWindowInteractor()iren.SetRenderWindow(renWin)# Add the actors to the renderer, set the background and size.#ren1.AddActor(coneActor)ren1.AddActor(creamActor)ren1.SetBackground(colors.GetColor3d('SlateGray'))renWin.SetSize(640, 480)renWin.SetWindowName('IceCream')ren1.ResetCamera()ren1.GetActiveCamera().Roll(90)ren1.GetActiveCamera().Dolly(1.25)ren1.ResetCameraClippingRange()iren.Initialize()# render the image#renWin.Render()iren.Start()if __name__ == '__main__':main()

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/28349.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

阿里云 OSS 静态网站托管

本文节选自我的博客:阿里云 OSS 静态网站托管 💖 作者简介:大家好,我是MilesChen,偏前端的全栈开发者。📝 CSDN主页:爱吃糖的猫🔥📣 我的博客:爱吃糖的猫&…

基于虚拟同步发电机控制的双机并联MATLAB仿真模型

使用MATLAB2021b打开 主要内容: 功率计算模块、虚拟同步发电机控制模块、电压合成模块、电压电流双环控制模块! 1.两台VSG并联,开始各自带负载10KW,在0.3秒的时候加入公共负载10KW,稳定后两台VSG可以均分公共负载的…

数据结构--时间复杂度与空间复杂度

数据结构–时间复杂度与空间复杂度 文章目录 数据结构--时间复杂度与空间复杂度时间复杂度一、什么是时间复杂度二、具体实例1.大O的渐进表示法2.二分查找的时间复杂度 空间复杂度一、什么是空间复杂度二、具体实例总结 时间复杂度 一、什么是时间复杂度 在计算机科学中&…

华为数通智选交换机S5735S-L24T4S-QA2无法SSH远程访问

以前都是按照华为S5700交换机开启SSH远程访问方法配置不同网段通过静态路由实现互通,华为S5700交换机开启ssh远程登陆,现在新买的华为数通智选交换机S5735S-L24T4S-QA2,也是按照这步骤配置,令人不解的是,竟然无法ssh访问,仔细看了配置也没有发现问题,在华为eNSP模拟器上验…

C++进阶—哈希/unordered系列关联式容器/底层结构(一篇文章学习哈希)

目录 0. 前言map/set和unordered_map/unordered_set 1. unordered系列关联式容器 1.1 unordered_map 1.1.2 unordered_map的接口说明 1. unordered_map的构造 2. unordered_map的容量 3. unordered_map的迭代器 4. unordered_map的元素访问 5. unordered_map的查询 6…

基于STM32的智能喂养系统

基于STM32的智能喂养系统 系统简介 自动检测环境温湿度,当温湿度低于阈值时自动打开加湿器;自动检测水位,当水位低于阈值时自动加水;自动检测有害气体,当检测到有害气体时自动打开风扇;同步状态到微信小程…

一文看懂《关于网络安全和信息化工作重要指示》

7月14日至15日,全国网络安全和信息化工作会议在京召开。《关于网络安全和信息化工作重要指示》也在会上得到解读与传达。 从近年来党的二十大等重大会议上网络安全和数据安全等相关话题多次被提及、我国陆续发布多部网络安全&数据安全相关政策法规等等&#xf…

机器学习1

核心梯度下降算法: import numpy as np from utils.features import prepare_for_trainingclass LinearRegression:def __init__(self,data,labels,polynomial_degree 0,sinusoid_degree 0,normalize_dataTrue):"""1.对数据进行预处理操作2.先得到…

【原创】实现ChatGPT中Transformer模型之输入处理

作者:黑夜路人 时间:2023年7月 Inputs Process(输入处理层)实现 我们看整个绿色框的整个位置,就是Inputs Process(输入处理层)。 在输入处理层,其实非常容易理解,主要就…

springboot与rabbitmq的整合【演示5种基本交换机】

前言: 👏作者简介:我是笑霸final,一名热爱技术的在校学生。 📝个人主页:个人主页1 || 笑霸final的主页2 📕系列专栏:后端专栏 📧如果文章知识点有错误的地方,…

C语言-ubuntu下的命令

目录 linux命令 【1】打开关闭终端 【2】终端 【3】ls命令 【4】cd 切换路径 【5】新建 【6】删除 【7】复制 【8】移动 【9】常用快捷键 【10】vi编辑器 【11】简单编程步骤 任务: linux命令 【1】打开关闭终端 打开终端: 1. 直接点击 …

数学建模的赛题类型

一、预测类 指通过分析已有的数据或者现象,找出其内在发展规律,然后对未来情形做出预测的过程。 根据已知条件和求解目的,往往将预测类问题分为:小样本内部预测,大样本内部预测。 解决预测类赛题的一般步骤&#xff…