# CubeAxesActor2D

VTKExamples/Java/Visualization/CubeAxesActor2D

### Description

vtkCubeAxesActor2D object draws axes on the bounding box of the data set and labels the axes with x-y-z coordinates. vtkPlatonicSolidSource object can generate each of the five Platonic solids: tetrahedron, cube, octahedron, icosahedron, and dodecahedron. Each of the solids is placed inside a sphere centered at the origin with radius 1.0.

Other Languages

See (Cxx)

### Code

CubeAxesActor2D.java

    import vtk.vtkActor;
    import vtk.vtkNamedColors;
    import vtk.vtkNativeLibrary;
    import vtk.vtkPolyDataMapper;
    import vtk.vtkRenderWindow;
    import vtk.vtkRenderWindowInteractor;
    import vtk.vtkRenderer;
    import vtk.vtkPlatonicSolidSource;
    import vtk.vtkPolyDataNormals;
    import vtk.vtkTextProperty;
    import vtk.vtkCubeAxesActor2D;
    import vtk.vtkLODActor;
    import vtk.vtkOutlineFilter;

    public class CubeAxesActor2D
    {
      // -----------------------------------------------------------------
      // Load VTK library and print which library was not properly loaded
      static
      {
        if (!vtkNativeLibrary.LoadAllNativeLibraries())
        {
          for (vtkNativeLibrary lib : vtkNativeLibrary.values())
          {
            if (!lib.IsLoaded())
            {
              System.out.println(lib.GetLibraryName() + " not loaded");
            }
          }
        }
        vtkNativeLibrary.DisableOutputWindow(null);
      }
      // -----------------------------------------------------------------

      public static void main(String s[])
      {
        vtkNamedColors colors = new vtkNamedColors();

        //For icosahedron_actor Color
        double icosahedronActorColor[] = new double[4];
        //For outline actor Color
        double outlineActorColor[] = new double[4];
        //Renderer Background Color
        double Bgcolor[] = new double[4];

        colors.GetColor("Magenta", icosahedronActorColor);
        colors.GetColor("Black", outlineActorColor);
        colors.GetColor("DarkSlateBlue", Bgcolor);

        vtkPlatonicSolidSource icosahedron = new vtkPlatonicSolidSource();
        icosahedron.SetSolidTypeToIcosahedron();

        // Create a vtkPolyDataNormals filter to calculate the normals of the data set.
        vtkPolyDataNormals normals = new vtkPolyDataNormals();
        normals.SetInputConnection(icosahedron.GetOutputPort());

        // Set up the associated mapper and actor.
        vtkPolyDataMapper icosahedron_mapper = new vtkPolyDataMapper();
        icosahedron_mapper.SetInputConnection(normals.GetOutputPort());
        icosahedron_mapper.ScalarVisibilityOff();

        vtkLODActor icosahedron_actor = new vtkLODActor();
        icosahedron_actor.SetMapper(icosahedron_mapper);
        icosahedron_actor.GetProperty().SetColor(icosahedronActorColor);

        // Create a vtkOutlineFilter to draw the bounding box of the data set.
        // Also create the associated mapper and actor.
        vtkOutlineFilter outline = new vtkOutlineFilter();
        outline.SetInputConnection(normals.GetOutputPort());

        vtkPolyDataMapper map_outline = new vtkPolyDataMapper();
        map_outline.SetInputConnection(outline.GetOutputPort());

        vtkActor outline_actor = new vtkActor();
        outline_actor.SetMapper(map_outline);
        outline_actor.GetProperty().SetColor(outlineActorColor);

        // Create the Renderers.  Assign them the appropriate viewport
        // coordinates, active camera, and light.

        vtkRenderer ren = new vtkRenderer();
        ren.SetViewport(0.0, 0.0, 0.5, 1.0);

        vtkRenderer ren2 = new vtkRenderer();
        ren2.SetViewport(0.5, 0.0, 1.0, 1.0);;
        ren2.SetActiveCamera(ren.GetActiveCamera());

        vtkRenderWindow renWin = new vtkRenderWindow();
        renWin.AddRenderer(ren);
        renWin.AddRenderer(ren2);
        renWin.SetWindowName("VTK - Cube Axes");
        renWin.SetSize(600, 300);

        vtkRenderWindowInteractor iren = new vtkRenderWindowInteractor();
        iren.SetRenderWindow(renWin);

        // Visualise
        ren.AddViewProp(icosahedron_actor);
        ren.AddViewProp(outline_actor);
        ren2.AddViewProp(icosahedron_actor);
        ren2.AddViewProp(outline_actor);

        ren.SetBackground(Bgcolor);
        ren2.SetBackground(Bgcolor);

        // Create a text property for both cube axes
        vtkTextProperty tprop = new vtkTextProperty();
        tprop.SetColor(1, 1, 1);
        tprop.ShadowOn();
        tprop.SetFontSize(20);

        //  Create a vtkCubeAxesActor2D.  Use the outer edges of the bounding box to
        // draw the axes.  Add the actor to the renderer.
        vtkCubeAxesActor2D axes = new vtkCubeAxesActor2D();
        axes.SetInputConnection(normals.GetOutputPort());
        axes.SetCamera(ren.GetActiveCamera());
        axes.SetLabelFormat("%6.4g");
        axes.SetFlyModeToOuterEdges();
        axes.SetAxisTitleTextProperty(tprop);
        axes.SetAxisLabelTextProperty(tprop);
        ren.AddViewProp(axes);

        //  Create a vtkCubeAxesActor2D.  Use the closest vertex to the camera to
        // determine where to draw the axes.  Add the actor to the renderer.
        vtkCubeAxesActor2D axes2 = new vtkCubeAxesActor2D();
        axes2.SetViewProp(icosahedron_actor);
        axes2.SetCamera(ren2.GetActiveCamera());
        axes2.SetLabelFormat("%6.4g");
        axes2.SetFlyModeToClosestTriad();
        axes2.ScalingOff();
        axes2.SetAxisTitleTextProperty(tprop);
        axes2.SetAxisLabelTextProperty(tprop);
        ren2.AddViewProp(axes2);

        ren.ResetCamera();
        renWin.Render();

        iren.Initialize();
        iren.Start();
      }
    }