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.
95 lines
2.8 KiB
95 lines
2.8 KiB
# 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 .
|
|
|
|
|
|
|