package require vtk
package require vtkinteraction
package require vtktesting

# Create the RenderWindow, Renderer and both Actors
#
vtkRenderer ren1
vtkRenderWindow renWin
    renWin AddRenderer ren1
vtkRenderWindowInteractor iren
    iren SetRenderWindow renWin

vtkSphereSource sphere
  sphere SetPhiResolution 15
  sphere SetThetaResolution 30

vtkPlane plane
  plane SetNormal 1 0 0

vtkCutter cut
  cut SetInputConnection [sphere GetOutputPort]
  cut SetCutFunction plane
  cut GenerateCutScalarsOn

vtkStripper strip
  strip SetInputConnection [cut GetOutputPort]

vtkPoints points
    points InsertPoint 0 1 0 0

vtkCellArray lines
    lines InsertNextCell 2;#number of points
    lines InsertCellPoint 0
    lines InsertCellPoint 0

vtkPolyData tip
    tip SetPoints points
    tip SetLines lines

vtkAppendPolyData appendPD
  appendPD AddInput [strip GetOutput]
  appendPD AddInput tip

# extrude profile to make coverage
#
vtkRuledSurfaceFilter extrude
    extrude SetInputConnection [appendPD GetOutputPort]
    extrude SetRuledModeToPointWalk

vtkCleanPolyData clean
  clean SetInputConnection [extrude GetOutputPort]
  clean ConvertPolysToLinesOff

vtkPolyDataMapper mapper
  mapper SetInputConnection [clean GetOutputPort]
  mapper ScalarVisibilityOff

vtkActor actor
  actor SetMapper mapper
  [actor GetProperty] SetOpacity .4

ren1 AddActor actor
renWin SetSize 200 200

renWin Render
# render the image
#
iren AddObserver UserEvent {wm deiconify .vtkInteract}
iren Initialize

# prevent the tk window from showing up then start the event loop
wm withdraw .

