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.
97 lines
2.6 KiB
97 lines
2.6 KiB
package require vtk
|
|
package require vtkinteraction
|
|
|
|
# create tensor ellipsoids
|
|
# Create the RenderWindow, Renderer and interactive renderer
|
|
#
|
|
vtkRenderer ren1
|
|
vtkRenderWindow renWin
|
|
renWin AddRenderer ren1
|
|
vtkRenderWindowInteractor iren
|
|
iren SetRenderWindow renWin
|
|
|
|
#
|
|
# Create tensor ellipsoids
|
|
#
|
|
# generate tensors
|
|
vtkPointLoad ptLoad
|
|
ptLoad SetLoadValue 100.0
|
|
ptLoad SetSampleDimensions 6 6 6
|
|
ptLoad ComputeEffectiveStressOn
|
|
ptLoad SetModelBounds -10 10 -10 10 -10 10
|
|
|
|
# extract plane of data
|
|
vtkImageDataGeometryFilter plane
|
|
plane SetInputConnection [ptLoad GetOutputPort]
|
|
plane SetExtent 2 2 0 99 0 99
|
|
|
|
# Generate ellipsoids
|
|
vtkSphereSource sphere
|
|
sphere SetThetaResolution 8
|
|
sphere SetPhiResolution 8
|
|
vtkTensorGlyph ellipsoids
|
|
ellipsoids SetInputConnection [ptLoad GetOutputPort]
|
|
ellipsoids SetSourceConnection [sphere GetOutputPort]
|
|
ellipsoids SetScaleFactor 10
|
|
ellipsoids ClampScalingOn
|
|
|
|
vtkPolyDataNormals ellipNormals
|
|
ellipNormals SetInputConnection [ellipsoids GetOutputPort]
|
|
|
|
# Map contour
|
|
vtkLogLookupTable lut
|
|
lut SetHueRange .6667 0.0
|
|
vtkPolyDataMapper ellipMapper
|
|
ellipMapper SetInputConnection [ellipNormals GetOutputPort]
|
|
ellipMapper SetLookupTable lut
|
|
plane Update;#force update for scalar range
|
|
eval ellipMapper SetScalarRange [[plane GetOutput] GetScalarRange]
|
|
|
|
vtkActor ellipActor
|
|
ellipActor SetMapper ellipMapper
|
|
#
|
|
# Create outline around data
|
|
#
|
|
vtkOutlineFilter outline
|
|
outline SetInputConnection [ptLoad GetOutputPort]
|
|
|
|
vtkPolyDataMapper outlineMapper
|
|
outlineMapper SetInputConnection [outline GetOutputPort]
|
|
|
|
vtkActor outlineActor
|
|
outlineActor SetMapper outlineMapper
|
|
eval [outlineActor GetProperty] SetColor 0 0 0
|
|
|
|
#
|
|
# Create cone indicating application of load
|
|
#
|
|
vtkConeSource coneSrc
|
|
coneSrc SetRadius .5
|
|
coneSrc SetHeight 2
|
|
vtkPolyDataMapper coneMap
|
|
coneMap SetInputConnection [coneSrc GetOutputPort]
|
|
vtkActor coneActor
|
|
coneActor SetMapper coneMap;
|
|
coneActor SetPosition 0 0 11
|
|
coneActor RotateY 90
|
|
eval [coneActor GetProperty] SetColor 1 0 0
|
|
|
|
vtkCamera camera
|
|
camera SetFocalPoint 0.113766 -1.13665 -1.01919
|
|
camera SetPosition -29.4886 -63.1488 26.5807
|
|
camera SetViewAngle 24.4617
|
|
camera SetViewUp 0.17138 0.331163 0.927879
|
|
camera SetClippingRange 1 100
|
|
|
|
ren1 AddActor ellipActor
|
|
ren1 AddActor outlineActor
|
|
ren1 AddActor coneActor
|
|
ren1 SetBackground 1.0 1.0 1.0
|
|
ren1 SetActiveCamera camera
|
|
|
|
renWin SetSize 400 400
|
|
renWin Render
|
|
iren AddObserver UserEvent {wm deiconify .vtkInteract}
|
|
|
|
# prevent the tk window from showing up then start the event loop
|
|
wm withdraw .
|
|
|