[英]VTK: render concave polygon with vtkDelaunay2D
我想使用 vtkDelaunay2D 渲染一個凹多邊形。 我已經讀過它應該與 vtkDelaunay2D 一起使用,但事實並非如此。 為什么? 這是我的代碼:
import vtk
points = vtk.vtkPoints()
ls = [
[5, 5], [-5, 5], [-8, 0], [-5, -5], [5, -5], [2, 0]
]
for x, y in ls:
points.InsertNextPoint(x, y, 0)
aPolyData = vtk.vtkPolyData()
aPolyData.SetPoints(points)
delaunay = vtk.vtkDelaunay2D()
delaunay.SetInputData(aPolyData)
meshMapper = vtk.vtkPolyDataMapper()
meshMapper.SetInputConnection(delaunay.GetOutputPort())
colors = vtk.vtkNamedColors()
meshActor = vtk.vtkActor()
meshActor.SetMapper(meshMapper)
meshActor.GetProperty().EdgeVisibilityOn()
meshActor.GetProperty().SetEdgeColor(colors.GetColor3d("Peacock"))
meshActor.GetProperty().SetInterpolationToFlat()
renderer = vtk.vtkRenderer()
renderWindow = vtk.vtkRenderWindow()
renderWindow.AddRenderer(renderer)
renderWindowInteractor = vtk.vtkRenderWindowInteractor()
renderWindowInteractor.SetRenderWindow(renderWindow)
renderer.AddActor(meshActor)
renderer.SetBackground(colors.GetColor3d("Mint"))
renderWindow.SetSize(640, 480)
renderWindow.Render()
renderWindowInteractor.Start()
結果如下所示:
右側的三角形不應該存在。
那么為什么會這樣呢? 我該怎么做才能避免這種情況發生?
從文檔(特別是Warning
部分)來看,output 預計是凸的。
作為您示例的解決方法,減少過濾器的Offset
值會導致您想要的結果(例如delaunay.SetOffset(0.1)
)。 但由於它不是過濾器想要的,它可能會產生意想不到的結果。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.