# RotationAroundLine

VTKExamples/Python/PolyData/RotationAroundLine

### Description

NOTE: this example shows both the original and the rotated object using different colors. Not exactly equivalent to the C++ example with the same name.

### Code

RotationAroundLine.py

    import vtk

    # create two cones, rotate one of them.

    # create a rendering window and renderer
    ren = vtk.vtkRenderer()
    renWin = vtk.vtkRenderWindow()
    renWin.AddRenderer(ren)
    WIDTH = 640
    HEIGHT = 480
    renWin.SetSize(WIDTH, HEIGHT)

    # create a renderwindowinteractor
    iren = vtk.vtkRenderWindowInteractor()
    iren.SetRenderWindow(renWin)

    # create cone
    source = vtk.vtkConeSource()
    source.SetResolution(60)
    source.SetCenter(-2, 0, 0)

    # create a transform that rotates the cone
    transform = vtk.vtkTransform()
    transform.RotateWXYZ(45, 0, 1, 0)
    transformFilter = vtk.vtkTransformPolyDataFilter()
    transformFilter.SetTransform(transform)
    transformFilter.SetInputConnection(source.GetOutputPort())
    transformFilter.Update()

    # mapper for original cone
    coneMapper1 = vtk.vtkPolyDataMapper()
    if vtk.VTK_MAJOR_VERSION <= 5:
        coneMapper1.SetInput(source.GetOutput())
    else:
        coneMapper1.SetInputConnection(source.GetOutputPort())

    # another mapper for the rotated cone
    coneMapper2 = vtk.vtkPolyDataMapper()
    if vtk.VTK_MAJOR_VERSION <= 5:
        coneMapper2.SetInput(transformFilter.GetOutput())
    else:
        coneMapper2.SetInputConnection(transformFilter.GetOutputPort())

    # actor for original cone
    actor1 = vtk.vtkActor()
    actor1.SetMapper(coneMapper1)

    # actor for rotated cone
    actor2 = vtk.vtkActor()
    actor2.SetMapper(coneMapper2)

    # color the original cone red
    actor1.GetProperty().SetColor(1, 0, 0)  # (R,G,B)
    # color rotated cone blue
    actor2.GetProperty().SetColor(0, 0, 1)  # (R,G,B)

    # assign actor to the renderer
    ren.AddActor(actor1)
    ren.AddActor(actor2)

    # enable user interface interactor
    iren.Initialize()
    renWin.Render()
    iren.Start()