ProjectSphere
VTKExamples/Java/Visualization/ProjectSphere
Description¶
vtkProjectSphereFilter object is a filter to 'unroll' a sphere. The unroll longitude is -180.
Other Languages
See (Cxx)
Code¶
ProjectSphere.java
import vtk.vtkActor; import vtk.vtkNamedColors; import vtk.vtkNativeLibrary; import vtk.vtkRenderWindow; import vtk.vtkRenderWindowInteractor; import vtk.vtkRenderer; import vtk.vtkProjectSphereFilter; import vtk.vtkElevationFilter; import vtk.vtkParametricSuperEllipsoid; import vtk.vtkParametricFunctionSource; import vtk.vtkPolyData; import vtk.vtkPolyDataMapper; public class ProjectSphere { // ----------------------------------------------------------------- // 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 args[]) { vtkNamedColors colors = new vtkNamedColors(); //Renderer Background Color double leftRenderercolor[] = new double[4]; double rightRenderercolor[] = new double[4]; colors.GetColor("Tan", leftRenderercolor); colors.GetColor("LightSlateGray", rightRenderercolor); vtkParametricSuperEllipsoid surface = new vtkParametricSuperEllipsoid(); surface.SetN1(2.0); surface.SetN2(0.5); vtkParametricFunctionSource source = new vtkParametricFunctionSource(); source.SetParametricFunction(surface); vtkElevationFilter elevationFilter = new vtkElevationFilter(); elevationFilter.SetInputConnection(source.GetOutputPort()); elevationFilter.SetLowPoint(0.0, 0.0, -4.0); elevationFilter.SetHighPoint(0.0, 0.0, 4.0); elevationFilter.Update(); // Deep copy the point data since in some versions of VTK, the ProjectSphereFilter modifies the input point data vtkPolyData pd1 = new vtkPolyData(); pd1.DeepCopy(elevationFilter.GetOutput()); vtkProjectSphereFilter sphereProject1 = new vtkProjectSphereFilter(); sphereProject1.SetInputConnection(elevationFilter.GetOutputPort()); sphereProject1.Update(); vtkPolyDataMapper mapper1 = new vtkPolyDataMapper(); mapper1.SetInputConnection(sphereProject1.GetOutputPort()); mapper1.SetScalarRange(sphereProject1.GetOutput().GetPointData().GetScalars().GetRange()); vtkActor actor1 = new vtkActor(); actor1.SetMapper(mapper1); vtkPolyDataMapper mapper2 = new vtkPolyDataMapper(); mapper2.SetInputData(pd1); mapper2.SetScalarRange(pd1.GetPointData().GetScalars().GetRange()); vtkActor actor2 = new vtkActor(); actor2.SetMapper(mapper2); // A render window vtkRenderWindow renderWindow = new vtkRenderWindow(); // Define viewport ranges // (xmin, ymin, xmax, ymax) double leftViewport[] = new double[] {0.0, 0.0, 0.5, 1.0}; double rightViewport[] = new double[] {0.5, 0.0, 1.0, 1.0}; // Setup both renderers vtkRenderer leftRenderer = new vtkRenderer(); renderWindow.AddRenderer(leftRenderer); leftRenderer.SetViewport(leftViewport); leftRenderer.SetBackground(.6, .5, .4); vtkRenderer rightRenderer = new vtkRenderer(); renderWindow.AddRenderer(rightRenderer); rightRenderer.SetViewport(rightViewport); rightRenderer.SetBackground(.4, .5, .6); leftRenderer.AddActor(actor2); rightRenderer.AddActor(actor1); vtkRenderWindowInteractor iren = new vtkRenderWindowInteractor(); iren.SetRenderWindow(renderWindow); leftRenderer.GetActiveCamera().Azimuth(30); leftRenderer.GetActiveCamera().Elevation(-30); leftRenderer.ResetCamera(); renderWindow.SetSize(640, 480); renderWindow.Render(); iren.Initialize(); iren.Start(); } }