news 2026/5/16 8:26:14

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

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
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()
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/5 5:52:11

ResNet18技术揭秘:为什么它能精准识别1000类物体

ResNet18技术揭秘:为什么它能精准识别1000类物体 1. 引言:通用物体识别中的ResNet-18 在当今人工智能应用中,图像分类是计算机视觉最基础也最关键的一步。从智能相册自动打标签,到自动驾驶系统感知环境,背后都离不开…

作者头像 李华
网站建设 2026/5/9 11:52:24

ResNet18性能对比:CPU与GPU推理速度测试报告

ResNet18性能对比:CPU与GPU推理速度测试报告 1. 背景与测试目标 随着深度学习在通用物体识别领域的广泛应用,ResNet系列模型因其出色的精度与效率平衡,成为工业界和学术界的首选之一。其中,ResNet-18 作为轻量级代表&#xff0c…

作者头像 李华
网站建设 2026/5/16 20:52:59

ResNet18应用实例:零售货架商品识别系统

ResNet18应用实例:零售货架商品识别系统 1. 引言:通用物体识别与ResNet-18的工程价值 在智能零售、自动化巡检和视觉监控等场景中,快速、稳定、低成本的通用物体识别能力是实现智能化升级的关键基础。传统方案依赖云API调用或复杂部署流程&…

作者头像 李华
网站建设 2026/5/3 10:30:15

ResNet18性能优化:CPU推理速度提升5倍的详细步骤

ResNet18性能优化:CPU推理速度提升5倍的详细步骤 1. 背景与挑战:通用物体识别中的效率瓶颈 在边缘计算和本地化部署场景中,深度学习模型的推理效率直接决定了用户体验和系统可用性。尽管ResNet-18作为轻量级图像分类模型被广泛使用&#xf…

作者头像 李华
网站建设 2026/5/12 7:30:34

ResNet18技术详解:深度学习在CV中的应用

ResNet18技术详解:深度学习在CV中的应用 1. 引言:通用物体识别中的ResNet18 在计算机视觉(Computer Vision, CV)领域,图像分类是基础且关键的任务之一。从早期的SIFT特征分类器方法,到如今基于深度神经网…

作者头像 李华
网站建设 2026/5/9 7:59:07

ResNet18部署优化:提升服务稳定性的策略

ResNet18部署优化:提升服务稳定性的策略 1. 背景与挑战:通用物体识别中的稳定性需求 在AI服务落地过程中,模型推理的稳定性往往比精度更直接影响用户体验。尤其是在边缘设备或资源受限环境中,一个“看似准确”的模型若频繁崩溃、…

作者头像 李华