日本免费高清视频-国产福利视频导航-黄色在线播放国产-天天操天天操天天操天天操|www.shdianci.com

學(xué)無先后,達(dá)者為師

網(wǎng)站首頁(yè) 編程語(yǔ)言 正文

如何使用Python?VTK繪制線條_python

作者:派大大大星? ? 更新時(shí)間: 2022-06-17 編程語(yǔ)言

主要函數(shù)介紹:

vtk.vtkPoints()?在VTK中用于定義點(diǎn)的類,使用points.InsertPoint(index, x, y, z)?即可插入點(diǎn)集。函數(shù)中,第一個(gè)參數(shù)是點(diǎn)的序號(hào),后面是三個(gè)參數(shù)是點(diǎn)的坐標(biāo)。

vtk.vtkLineSource()?在VTK中定義直線的類,通過SetPoints(points),輸入直線經(jīng)過的點(diǎn)。

vtk.vtkParametricSpline()?在VTK中定義曲線的類,通過SetPoints(points),輸入曲線經(jīng)過的點(diǎn)。

vtk.vtkParametricFunctionSource()?曲線插值擬合函數(shù),可以將輸入的點(diǎn)集擬合成一條曲線。有很多生成方法。我們可以簡(jiǎn)單的看一下VTK官方文檔介紹

S\CALAR_NONE - Scalars are not generated (default).
SCALAR_U - The scalar is set to the u-value.
SCALAR_V - The scalar is set to the v-value.
SCALAR_U0 - The scalar is set to 1 if u = (u_max - u_min)/2 = u_avg, 0 otherwise.
SCALAR_V0 - The scalar is set to 1 if v = (v_max - v_min)/2 = v_avg, 0 otherwise.
SCALAR_U0V0 - The scalar is set to 1 if u == u_avg, 2 if v == v_avg, 3 if u = u_avg && v = v_avg, 0 otherwise.
SCALAR_MODULUS - The scalar is set to (sqrt(uu+vv)), this is measured relative to (u_avg,v_avg).
SCALAR_PHASE - The scalar is set to (atan2(v,u)) (in degrees, 0 to 360), this is measured relative to (u_avg,v_avg).
SCALAR_QUADRANT - The scalar is set to 1, 2, 3 or 4. depending upon the quadrant of the point (u,v).
SCALAR_X - The scalar is set to the x-value.
SCALAR_Y - The scalar is set to the y-value.
SCALAR_Z - The scalar is set to the z-value.
SCALAR_DISTANCE - The scalar is set to (sqrt(xx+yy+z*z)). I.e. distance from the origin.
SCALAR_USER_DEFINED - The scalar is set to the value returned from EvaluateScalar().

actor.GetProperty().SetColor() 線條顏色配置

actor.GetProperty().SetLineWidth() 線條寬度配置

擬合曲線代碼:


import vtk

points = vtk.vtkPoints()  # 定義一個(gè)點(diǎn)工具
points.InsertPoint(0, 329, 338, 45)  # 使用InsertPoint可以插入點(diǎn)
# 注意:points.InsertPoint(a, b, c, d)
# 其中a表示點(diǎn)的序號(hào),(b,c,d)表示點(diǎn)的三維坐標(biāo)
points.InsertPoint(1, 328, 319, 46)
points.InsertPoint(2, 300, 329, 96)
# 定義曲線工具
# 將前面的幾個(gè)點(diǎn)插值擬合成一條曲線
spline = vtk.vtkParametricSpline()
spline.SetPoints(points)

splineSource = vtk.vtkParametricFunctionSource()
splineSource.SetParametricFunction(spline)
splineSource.Update()

splineMapper = vtk.vtkPolyDataMapper()
splineMapper.SetInputConnection(splineSource.GetOutputPort())

splineActor = vtk.vtkActor()
splineActor.SetMapper(splineMapper)
# 設(shè)置線條顏色
splineActor.GetProperty().SetColor(0.3800, 0.7000, 0.1600)
# 設(shè)置線條寬度
splineActor.GetProperty().SetLineWidth(5)

ren1 = vtk.vtkRenderer()
renWin = vtk.vtkRenderWindow()
renWin.AddRenderer(ren1)
iren = vtk.vtkRenderWindowInteractor()
iren.SetRenderWindow(renWin)
ren1.AddActor(splineActor)

ren1.SetBackground(1, 1, 1)
renWin.SetSize(250, 250)
renWin.Render()
iren.Start()

image.png

繪制直線代碼

import vtk

points = vtk.vtkPoints()  # 定義一個(gè)點(diǎn)工具
points.InsertPoint(0, 329, 338, 45)  # 使用InsertPoint可以插入點(diǎn)
# 注意:points.InsertPoint(a, b, c, d)
# 其中a表示點(diǎn)的序號(hào),(b,c,d)表示點(diǎn)的三維坐標(biāo)
points.InsertPoint(1, 328, 319, 46)
points.InsertPoint(2, 300, 329, 96)
# 定義直線工具

lineSource = vtk.vtkLineSource()
lineSource.SetPoints(points)

lineSource.Update()

lineMapper = vtk.vtkPolyDataMapper()
lineMapper.SetInputConnection(lineSource.GetOutputPort())

splineActor = vtk.vtkActor()
splineActor.SetMapper(lineMapper)
# 設(shè)置線條顏色
splineActor.GetProperty().SetColor(0.3800, 0.7000, 0.1600)
# 設(shè)置線條寬度
splineActor.GetProperty().SetLineWidth(5)

ren1 = vtk.vtkRenderer()
renWin = vtk.vtkRenderWindow()
renWin.AddRenderer(ren1)
iren = vtk.vtkRenderWindowInteractor()
iren.SetRenderWindow(renWin)
ren1.AddActor(splineActor)

ren1.SetBackground(1, 1, 1)
renWin.SetSize(250, 250)
renWin.Render()
iren.Start()

1636445384(1).jpg

原文鏈接:https://juejin.cn/post/7028480115742867470

欄目分類
最近更新