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

ExponentialCosine 复杂的二维数学函数映射为3D曲面

一:主要的知识点

1、说明

本文只是教程内容的一小段,因博客字数限制,故进行拆分。主教程链接:vtk教程——逐行解析官网所有Python示例-CSDN博客

2、知识点纪要

本段代码主要涉及的有①vtkWarpScalar根据标量值沿着发现方向进行形变


二:代码及注释

import vtkmodules.vtkRenderingOpenGL2 import vtkmodules.vtkInteractionStyle from vtkmodules.vtkCommonColor import vtkNamedColors from vtkmodules.vtkRenderingCore import ( vtkActor, vtkDataSetMapper, vtkRenderWindow, vtkRenderWindowInteractor, vtkRenderer ) from vtkmodules.vtkFiltersSources import vtkPlaneSource from vtkmodules.vtkCommonTransforms import vtkTransform from vtkmodules.vtkFiltersGeneral import vtkTransformPolyDataFilter, vtkWarpScalar from vtkmodules.vtkCommonCore import vtkPoints, vtkDoubleArray from vtkmodules.vtkCommonDataModel import vtkPolyData import math def main(): colors = vtkNamedColors() ren = vtkRenderer() renWin = vtkRenderWindow() renWin.AddRenderer(ren) iren = vtkRenderWindowInteractor() iren.SetRenderWindow(renWin) plane = vtkPlaneSource() plane.SetResolution(300, 300) transform = vtkTransform() transform.Scale(10.0, 10.0, 1.0) transF = vtkTransformPolyDataFilter() transF.SetInputConnection(plane.GetOutputPort()) transF.SetTransform(transform) transF.Update() inputPd = transF.GetOutput() numPts = inputPd.GetNumberOfPoints() newPts = vtkPoints() newPts.SetNumberOfPoints(numPts) derivs = vtkDoubleArray() derivs.SetNumberOfTuples(numPts) bessel = vtkPolyData() bessel.CopyStructure(inputPd) # 将inputPd的拓扑结构复制到bessel中 bessel.SetPoints(newPts) bessel.GetPointData().SetScalars(derivs) x = [0.0] * 3 for i in range(0, numPts): inputPd.GetPoint(i, x) r = math.sqrt(float(x[0] * x[0]) + x[1] * x[1]) x[2] = math.exp(-r) * math.cos(10.0 * r) newPts.SetPoint(i, x) deriv = -math.exp(-r) * (math.cos(10.0 * r) + 10.0 * math.sin(10.0 * r)) derivs.SetValue(i, deriv) """ vtkWarpScalar 与vtkWarpVector不同,其是按照"标量场"来形变 用于根据点的标量值(scalar data)对几何体进行沿法线方向的形变 """ warp = vtkWarpScalar() warp.SetInputData(bessel) """ 启用XYPlane模式, 当 XYPlaneOn() 被调用时,vtkWarpScalar 过滤器会被指示只沿着与XY平面垂直的方向(即Z轴方向)移动顶点 默认情况下,vtkWarpScalar 会沿着几何体的表面法线方向(Normal)进行位移 """ warp.XYPlaneOn() warp.SetScaleFactor(0.5) mapper = vtkDataSetMapper() mapper.SetInputConnection(warp.GetOutputPort()) tmp = bessel.GetScalarRange() mapper.SetScalarRange(tmp[0], tmp[1]) carpet = vtkActor() carpet.SetMapper(mapper) # Assign our actor to the renderer. ren.AddActor(carpet) ren.SetBackground(colors.GetColor3d('Beige')) renWin.SetSize(640, 480) renWin.SetWindowName('ExponentialCosine') # draw the resulting scene ren.ResetCamera() ren.GetActiveCamera().Zoom(1.35) ren.GetActiveCamera().Elevation(-55) ren.GetActiveCamera().Azimuth(25) ren.ResetCameraClippingRange() renWin.Render() iren.Start() if __name__ == '__main__': main()
http://www.jsqmd.com/news/232043/

相关文章:

  • STC89C52控制蜂鸣器演奏乐曲完整指南
  • ResNet18实战:教育智能教具识别系统
  • ResNet18优化实战:量化加速推理的完整步骤
  • 通俗解释波形发生器设计中的频率控制
  • ResNet18实战:智能监控系统物体识别部署案例
  • ResNet18实战:构建高稳定性识别服务的关键
  • ResNet18应用解析:智能交通管理系统
  • ResNet18实战教程:服装分类系统开发
  • ResNet18性能测试:CPU环境下的推理速度对比
  • ResNet18应用案例:智能垃圾分类系统
  • 多层板PCB生产流程实例分析:常见缺陷及改善措施
  • ResNet18部署详解:Kubernetes集群部署方案
  • ResNet18入门指南:零代码实现物体识别WebUI
  • ResNet18应用实例:零售货架商品识别系统
  • ResNet18性能测试:批量处理能力评测
  • ResNet18性能优化:CPU推理速度提升5倍的详细步骤
  • ResNet18代码实例:Python调用图像分类API详细教程
  • 无源蜂鸣器驱动电路工作原理深度剖析
  • ResNet18物体识别详解:模型部署常见问题
  • 超详细版:并行计算加速科学仿真的实战案例
  • ResNet18优化教程:早停策略应用
  • ResNet18实战:智能家居物品识别系统
  • ResNet18实战教程:工业机器人视觉系统搭建
  • ResNet18性能对比:与ResNet50差异分析
  • 工业高温环境下蜂鸣器驱动电路稳定性研究
  • 嵌入式Linux中ioctl接口的完整指南
  • ResNet18应用开发:零售客流量分析系统
  • 整流二极管温升问题:桥式电路操作指南
  • ResNet18应用教程:智能农业的作物监测
  • ResNet18性能优化:提升吞吐量的关键技术