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

建设网站需要哪个语言编译器市场网络营销

建设网站需要哪个语言编译器,市场网络营销,wordpress鏁版嵁,支付宝小程序定制目录 前言: 效果: 实现步骤: Code: 前言: 本文介绍了Python VTK映射三维模型表面距离,通过如何使用VTK计算两个三维模型(stl)的表面距离,并将其距离值以颜色映射到模型,可用于对比 两相模型…

目录

前言:

效果:

实现步骤:

Code:


 

前言:

本文介绍了Python VTK映射三维模型表面距离,通过如何使用VTK计算两个三维模型(stl)的表面距离,并将其距离值以颜色映射到模型,可用于对比 两相模型的相似度;

效果:

我使用同一个stl 模型,旋转了一点,进行对比,原点是黄色,旋转最少:

 

实现步骤:

数据准备: 需要准备两个stl文件、Python需要安装vtk库

步骤一:数据读取 首先通过vtk.vtkSTLReader() 定义stl文件读取接口,再通过reader1.GetOutput() 就可以获得stl在vtk工作流的数据。

步骤二:去除重复点 通过vtk.vtkCleanPolyData() 可以去除模型中的重复点

步骤三:计算距离 使用 vtk.vtkDistancePolyDataFilter() ,使用上一步中过滤掉重复点后的数据作为输入。如distanceFilter.SetInputConnection(1, clean1.GetOutputPort()), 其中第一个参数就是输入数据的标号,从0开始计数;第二个参数就是输入的数据。我们将vtkDistancePolyDataFilter的输出到mapper就完成距离映射了。

步骤四:颜色配置 lut = vtk.vtkLookupTable() 相当于一个调色盘函数,通过对其参数改变可以,调整最终映射的颜色范围。 scalarBar = vtk.vtkScalarBarActor() 就是颜色条,按照前面的调色盘的结果将距离数值映射成颜色。

Code:

import vtkinput1 = vtk.vtkPolyData()
reader1 = vtk.vtkSTLReader()
reader1.SetFileName('leftlumen.stl')
reader1.Update()
input1 = reader1.GetOutput()  # 读取模型Ainput2 = vtk.vtkPolyData()
input2.DeepCopy(input1)pTransformSTL = vtk.vtkTransform()
pTransformSTL.RotateY(0.1)
pTransformSTL.Update()transFilter = vtk.vtkTransformPolyDataFilter()transFilter.SetInputData(input2)
transFilter.SetTransform(pTransformSTL)
transFilter.Update()# 数据合并,可以合并显示两个模型
clean1 = vtk.vtkCleanPolyData()
clean1.SetInputData(input1)clean2 = vtk.vtkCleanPolyData()
clean2.SetInputData(transFilter.GetOutput())distanceFilter = vtk.vtkDistancePolyDataFilter()distanceFilter.SetInputConnection(1, clean1.GetOutputPort())
distanceFilter.SetInputConnection(0, clean2.GetOutputPort())
distanceFilter.SignedDistanceOff()
distanceFilter.Update()  # 计算距离
distanceFilter.GetOutputPort()
mapper = vtk.vtkPolyDataMapper()  # 配置mapper
mapper.SetInputConnection(distanceFilter.GetOutputPort())
mapper.SetScalarRange(  # 设置颜色映射范围distanceFilter.GetOutput().GetPointData().GetScalars().GetRange()[0],distanceFilter.GetOutput().GetPointData().GetScalars().GetRange()[1])
actor = vtk.vtkActor()
actor.SetMapper(mapper)
actor1 = vtk.vtkActor()
actor1.SetMapper(mapper)
lut = vtk.vtkLookupTable()
lut.SetHueRange(0.2, 0.7)  # 映射的颜色变换参数(自己调颜色)
# lut.SetAlphaRange(1.0, 1.0)
# lut.SetValueRange(1.0, 1.0)
# lut.SetSaturationRange(1.0, 1.0)
# lut.SetNumberOfTableValues(256)
mapper.SetLookupTable(lut)
mapper2 = vtk.vtkPolyDataMapper()
mapper2.SetInputData((distanceFilter.GetSecondDistanceOutput()))
mapper2.SetScalarRange(  # 设置颜色映射范围distanceFilter.GetSecondDistanceOutput().GetPointData().GetScalars().GetRange()[0],distanceFilter.GetSecondDistanceOutput().GetPointData().GetScalars().GetRange()[1])actor2 = vtk.vtkActor()
actor2.SetMapper(mapper2)scalarBar = vtk.vtkScalarBarActor()  # 设置color_bar
scalarBar.SetLookupTable(mapper.GetLookupTable())
scalarBar.SetTitle("SD(mm)")
scalarBar.SetNumberOfLabels(5)  # 设置要显示的刻度标签数。自己设定色带的位置
scalarBar.SetMaximumNumberOfColors(10)
# scalarBar.GetPositionCoordinate().SetCoordinateSystemToNormalizedViewport()
# scalarBar.GetPositionCoordinate().SetValue(0.01, 0.49)  # 参数越小越靠左,第二个参数越大越往上
# scalarBar.SetWidth(0.16)
# scalarBar.SetHeight(0.5)
# scalarBar.SetTextPositionToPrecedeScalarBar()  # 标题和刻度标记是否应在标量栏之前(文字会出现在条形左边)
# # 设置标题和条形之间的边距
# scalarBar.SetVerticalTitleSeparation(10)
# # 设置标题颜色
scalarBar.DrawTickLabelsOn()
scalarBar.GetTitleTextProperty().SetColor(0, 0, 0)
scalarBar.GetLabelTextProperty().SetColor(0, 0, 0)
arender = vtk.vtkRenderer()
arender.SetViewport(0, 0.0, 1, 1.0)
renWin = vtk.vtkRenderWindow()
renWin.AddRenderer(arender)
iren = vtk.vtkRenderWindowInteractor()
iren.SetRenderWindow(renWin)
style = vtk.vtkInteractorStyleTrackballActor()
iren.SetInteractorStyle(style)
aCamera = vtk.vtkCamera()
aCamera.SetViewUp(0, 0, -1)
aCamera.SetPosition(0, -1, 0)
aCamera.ComputeViewPlaneNormal()
aCamera.Azimuth(30.0)
aCamera.Elevation(30.0)
aCamera.Dolly(1.5)arender.AddActor(actor)
# arender.AddActor(actor1)
arender.SetActiveCamera(aCamera)
arender.ResetCamera()
arender.SetBackground(1, 1, 1)
arender.ResetCameraClippingRange()
arender.AddActor2D(scalarBar)renWin.Render()
iren.Initialize()
iren.Start()

http://www.15wanjia.com/news/165781.html

相关文章:

  • 十大网站建设服务商沧州工商联网站建设
  • 网站建设利益分析中国建设银行网站软件
  • 老牌网站建宁波网站seo诊断工具
  • 建设银行自贡分行网站wordpress和帝国区别
  • 做期货要关注哪些网站wordpress 图标 png
  • 学院门户网站建设自助模板网站建设做seo
  • 设计资料网站网站服务流程
  • 上海网站设计方案民治网站建设
  • 徐州网站建设技术托管百度app下载最新版
  • 怎样在百度能搜到自己的网站网络系统简介
  • wordpress 多站点 插件做宠物网站需要实现什么功能
  • 百度指数 多少流量 网站名帝国cms网站地图生成
  • 企业大型网站开发医院网站建设的特点
  • 做图模板网站网站漂浮物怎么做
  • 长沙做网站推广公司咨询域名回收网站
  • 怎么查网站备案域名如何识别html5网站
  • 品牌网站建设哪里有h5页面制作app
  • 平邑做网站网络营销策划的产品层次有哪些
  • 网站开发售后服务能力wordpress美化背景
  • 360网站导航公司地址怎么做企业服务总线
  • 中山祥云做的网站怎么样百度百科免费注册网站域名可以用吗
  • 网站建设客户需求分析表重庆游戏网站开发
  • 喀什网站建设公司做球衣外贸用什么网站
  • 今科网站建设费用WordPress追番页面
  • 网站设计素养装修设计网站哪个好用
  • 唐山哪里有建设网站的做网站是不是要备案
  • 交网站建设 域名计入什么科目广州品牌网站建设公司
  • 石家庄网站建设外贸空间链接制作网站
  • 浅谈高校网站群的建设青岛app定制开发公司
  • 视频搜索引擎网站开发方法网页设计与网站建设实例教程答案