You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
96 lines
2.8 KiB
96 lines
2.8 KiB
2 years ago
|
# This example demonstrates how to use 2D Delaunay triangulation.
|
||
|
# We create a fancy image of a 2D Delaunay triangulation. Points are
|
||
|
# randomly generated.
|
||
|
|
||
|
|
||
|
# first we load in the standard vtk packages into tcl
|
||
|
package require vtk
|
||
|
package require vtkinteraction
|
||
|
package require vtktesting
|
||
|
|
||
|
# Generate some random points
|
||
|
#
|
||
|
vtkMath math
|
||
|
vtkPoints points
|
||
|
for {set i 0} {$i<50} {incr i 1} {
|
||
|
eval points InsertPoint $i [math Random 0 1] [math Random 0 1] 0.0
|
||
|
}
|
||
|
|
||
|
# Create a polydata with the points we just created.
|
||
|
vtkPolyData profile
|
||
|
profile SetPoints points
|
||
|
|
||
|
# Perform a 2D Delaunay triangulation on them.
|
||
|
#
|
||
|
vtkDelaunay2D del
|
||
|
del SetInput profile
|
||
|
del SetTolerance 0.001
|
||
|
vtkPolyDataMapper mapMesh
|
||
|
mapMesh SetInputConnection [del GetOutputPort]
|
||
|
vtkActor meshActor
|
||
|
meshActor SetMapper mapMesh
|
||
|
eval [meshActor GetProperty] SetColor .1 .2 .4
|
||
|
|
||
|
# We will now create a nice looking mesh by wrapping the edges in tubes,
|
||
|
# and putting fat spheres at the points.
|
||
|
vtkExtractEdges extract
|
||
|
extract SetInputConnection [del GetOutputPort]
|
||
|
vtkTubeFilter tubes
|
||
|
tubes SetInputConnection [extract GetOutputPort]
|
||
|
tubes SetRadius 0.01
|
||
|
tubes SetNumberOfSides 6
|
||
|
vtkPolyDataMapper mapEdges
|
||
|
mapEdges SetInputConnection [tubes GetOutputPort]
|
||
|
vtkActor edgeActor
|
||
|
edgeActor SetMapper mapEdges
|
||
|
eval [edgeActor GetProperty] SetColor $peacock
|
||
|
[edgeActor GetProperty] SetSpecularColor 1 1 1
|
||
|
[edgeActor GetProperty] SetSpecular 0.3
|
||
|
[edgeActor GetProperty] SetSpecularPower 20
|
||
|
[edgeActor GetProperty] SetAmbient 0.2
|
||
|
[edgeActor GetProperty] SetDiffuse 0.8
|
||
|
|
||
|
vtkSphereSource ball
|
||
|
ball SetRadius 0.025
|
||
|
ball SetThetaResolution 12
|
||
|
ball SetPhiResolution 12
|
||
|
vtkGlyph3D balls
|
||
|
balls SetInputConnection [del GetOutputPort]
|
||
|
balls SetSourceConnection [ball GetOutputPort]
|
||
|
vtkPolyDataMapper mapBalls
|
||
|
mapBalls SetInputConnection [balls GetOutputPort]
|
||
|
vtkActor ballActor
|
||
|
ballActor SetMapper mapBalls
|
||
|
eval [ballActor GetProperty] SetColor $hot_pink
|
||
|
[ballActor GetProperty] SetSpecularColor 1 1 1
|
||
|
[ballActor GetProperty] SetSpecular 0.3
|
||
|
[ballActor GetProperty] SetSpecularPower 20
|
||
|
[ballActor GetProperty] SetAmbient 0.2
|
||
|
[ballActor GetProperty] SetDiffuse 0.8
|
||
|
|
||
|
# Create graphics objects
|
||
|
# Create the rendering window, renderer, and interactive renderer
|
||
|
vtkRenderer ren1
|
||
|
vtkRenderWindow renWin
|
||
|
renWin AddRenderer ren1
|
||
|
vtkRenderWindowInteractor iren
|
||
|
iren SetRenderWindow renWin
|
||
|
|
||
|
# Add the actors to the renderer, set the background and size
|
||
|
ren1 AddActor ballActor
|
||
|
ren1 AddActor edgeActor
|
||
|
ren1 SetBackground 1 1 1
|
||
|
renWin SetSize 150 150
|
||
|
|
||
|
# render the image
|
||
|
#
|
||
|
iren AddObserver UserEvent {wm deiconify .vtkInteract}
|
||
|
ren1 ResetCamera
|
||
|
[ren1 GetActiveCamera] Zoom 1.5
|
||
|
iren Initialize
|
||
|
|
||
|
# prevent the tk window from showing up then start the event loop
|
||
|
wm withdraw .
|
||
|
|
||
|
|