RectilinearGrid

VTKExamples/Python/RectilinearGrid/RectilinearGrid


Description

Shows how to create a vtkRectilinearGrid.

Other Languages

See (Cxx), (Java)

Question

If you have a simple question about this example contact us at VTKExamplesProject If your question is more complex and may require extended discussion, please use the VTK Discourse Forum

Code

RectilinearGrid.py

import vtk


def main():
    colors = vtk.vtkNamedColors()

    x = [
        -1.22396, -1.17188, -1.11979, -1.06771, -1.01562, -0.963542,
        -0.911458, -0.859375, -0.807292, -0.755208, -0.703125, -0.651042,
        -0.598958, -0.546875, -0.494792, -0.442708, -0.390625, -0.338542,
        -0.286458, -0.234375, -0.182292, -0.130209, -0.078125, -0.026042,
        0.0260415, 0.078125, 0.130208, 0.182291, 0.234375, 0.286458,
        0.338542, 0.390625, 0.442708, 0.494792, 0.546875, 0.598958,
        0.651042, 0.703125, 0.755208, 0.807292, 0.859375, 0.911458,
        0.963542, 1.01562, 1.06771, 1.11979, 1.17188]

    y = [
        -1.25, -1.17188, -1.09375, -1.01562, -0.9375, -0.859375,
        -0.78125, -0.703125, -0.625, -0.546875, -0.46875, -0.390625,
        -0.3125, -0.234375, -0.15625, -0.078125, 0, 0.078125,
        0.15625, 0.234375, 0.3125, 0.390625, 0.46875, 0.546875,
        0.625, 0.703125, 0.78125, 0.859375, 0.9375, 1.01562,
        1.09375, 1.17188, 1.25]

    z = [
        0, 0.1, 0.2, 0.3, 0.4, 0.5,
        0.6, 0.7, 0.75, 0.8, 0.9, 1,
        1.1, 1.2, 1.3, 1.4, 1.5, 1.6,
        1.7, 1.75, 1.8, 1.9, 2, 2.1,
        2.2, 2.3, 2.4, 2.5, 2.6, 2.7,
        2.75, 2.8, 2.9, 3, 3.1, 3.2,
        3.3, 3.4, 3.5, 3.6, 3.7, 3.75,
        3.8, 3.9]

    # Create a rectilinear grid by defining three arrays specifying the
    # coordinates in the x-y-z directions.
    xCoords = vtk.vtkFloatArray()
    for i in x:
        xCoords.InsertNextValue(i)

    yCoords = vtk.vtkFloatArray()
    for i in y:
        yCoords.InsertNextValue(i)

    zCoords = vtk.vtkFloatArray()
    for i in z:
        zCoords.InsertNextValue(i)

    # The coordinates are assigned to the rectilinear grid. Make sure that
    # the number of values in each of the XCoordinates, YCoordinates,
    # and ZCoordinates is equal to what is defined in SetDimensions().
    #
    rgrid = vtk.vtkRectilinearGrid()
    rgrid.SetDimensions(len(x), len(y), len(z))
    rgrid.SetXCoordinates(xCoords)
    rgrid.SetYCoordinates(yCoords)
    rgrid.SetZCoordinates(zCoords)

    # Extract a plane from the grid to see what we've got.
    plane = vtk.vtkRectilinearGridGeometryFilter()
    plane.SetInputData(rgrid)
    plane.SetExtent(0, 46, 16, 16, 0, 43)

    rgridMapper = vtk.vtkPolyDataMapper()
    rgridMapper.SetInputConnection(plane.GetOutputPort())

    wireActor = vtk.vtkActor()
    wireActor.SetMapper(rgridMapper)
    wireActor.GetProperty().SetRepresentationToWireframe()
    wireActor.GetProperty().SetColor(colors.GetColor3d("Black"))
    wireActor.GetProperty().EdgeVisibilityOn()

    # Create the usual rendering stuff.
    renderer = vtk.vtkRenderer()
    renWin = vtk.vtkRenderWindow()
    renWin.AddRenderer(renderer)
    iren = vtk.vtkRenderWindowInteractor()
    iren.SetRenderWindow(renWin)

    renderer.AddActor(wireActor)
    renderer.SetBackground(colors.GetColor3d("AliceBlue"))
    renderer.ResetCamera()
    renderer.GetActiveCamera().Elevation(60.0)
    renderer.GetActiveCamera().Azimuth(30.0)
    renderer.GetActiveCamera().Zoom(1.0)

    renWin.SetSize(300, 300)

    # interact with data
    renWin.Render()
    iren.Start()


if __name__ == '__main__':
    main()