<div>Hello all,</div>
<div>&nbsp;</div>
<div>I&#39;m a relatively new VTK developer.&nbsp; I am using Java as the gui for my VTK applications.&nbsp; I had a hard time getting started and finding examples written in Java.&nbsp; I have ported a dozen examples to Java to get familiar with it.&nbsp; I wanted to post my examples so other Java enthusiasts could get up to speed on VTK a bit more easily.&nbsp; I hope this helps. 
</div>
<div>&nbsp;</div>
<div>Best Regards,</div>
<div>Todd</div>
<div>&nbsp;</div>
<div>&nbsp;</div>
<div>&nbsp;</div>
<div>
<p>package examples;</p>
<p>import vtk.*;</p>
<p>import javax.swing.*;<br>import java.awt.*;<br>import java.awt.event.WindowAdapter;<br>import java.awt.event.WindowEvent;</p>
<p>/**<br>&nbsp;* This example demonstrates the use of vtkCardinalSpline.<br>&nbsp;* It creates random points and connects them with a spline<br>&nbsp;*/<br>public class CSpline extends JPanel {</p>
<p>//from vtk.util.colors import tomato, banana</p>
<p>&nbsp; public CSpline () {<br>&nbsp;&nbsp;&nbsp; setLayout(new BorderLayout());<br>&nbsp;&nbsp;&nbsp; vtkPanel renWin = new vtkPanel();<br>&nbsp;&nbsp;&nbsp; vtkRenderer renderer = renWin.GetRenderer();</p>
<p>&nbsp;&nbsp;&nbsp; int numberOfInputPoints = 20;</p>
<p>&nbsp;&nbsp;&nbsp; // One spline for each direction.<br>&nbsp;&nbsp;&nbsp; vtkCardinalSpline aSplineX, aSplineY, aSplineZ;<br>&nbsp;&nbsp;&nbsp; aSplineX = new vtkCardinalSpline();<br>&nbsp;&nbsp;&nbsp; aSplineY = new vtkCardinalSpline();<br>&nbsp;&nbsp;&nbsp; aSplineZ = new vtkCardinalSpline();
</p>
<p>/*&nbsp; Generate random (pivot) points and add the corresponding<br>&nbsp;*&nbsp; coordinates to the splines.<br>&nbsp;*&nbsp; aSplineX will interpolate the x values of the points<br>&nbsp;*&nbsp; aSplineY will interpolate the y values of the points<br>
&nbsp;*&nbsp; aSplineZ will interpolate the z values of the points */<br>&nbsp;&nbsp;&nbsp; vtkMath math=new vtkMath();<br>&nbsp;&nbsp;&nbsp; vtkPoints inputPoints = new vtkPoints();<br>&nbsp;&nbsp;&nbsp; for (int i=0; i&lt;numberOfInputPoints; i++) {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; double x = math.Random
(0, 1);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; double y = math.Random(0, 1);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; double z = math.Random(0, 1);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; aSplineX.AddPoint(i, x);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; aSplineY.AddPoint(i, y);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; aSplineZ.AddPoint(i, z);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; inputPoints.InsertPoint(i, x, y, z);
<br>&nbsp;&nbsp;&nbsp; } //i loop</p>
<p>&nbsp;&nbsp;&nbsp; // The following section will create glyphs for the pivot points<br>&nbsp;&nbsp;&nbsp; // in order to make the effect of the spline more clear.</p>
<p>&nbsp;&nbsp;&nbsp; // Create a polydata to be glyphed.<br>&nbsp;&nbsp;&nbsp; vtkPolyData inputData = new vtkPolyData();<br>&nbsp;&nbsp;&nbsp; inputData.SetPoints(inputPoints);</p>
<p>&nbsp;&nbsp;&nbsp; // Use sphere as glyph source.<br>&nbsp;&nbsp;&nbsp; vtkSphereSource balls = new vtkSphereSource();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; balls.SetRadius(.01);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; balls.SetPhiResolution(10);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; balls.SetThetaResolution(10);</p>
<p>&nbsp;&nbsp;&nbsp; vtkGlyph3D glyphPoints = new vtkGlyph3D();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; glyphPoints.SetInput(inputData);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; glyphPoints.SetSource(balls.GetOutput());</p>
<p>&nbsp;&nbsp;&nbsp; vtkPolyDataMapper glyphMapper = new vtkPolyDataMapper();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; glyphMapper.SetInputConnection(glyphPoints.GetOutputPort());</p>
<p>&nbsp;&nbsp;&nbsp; vtkActor glyph = new vtkActor();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; glyph.SetMapper(glyphMapper);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; glyph.GetProperty().SetDiffuseColor(0.0, 1.0, 0.0);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; glyph.GetProperty().SetSpecular(.3);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; glyph.GetProperty().SetSpecularPower(30);
</p>
<p>&nbsp;&nbsp;&nbsp; // Generate the polyline for the spline.<br>&nbsp;&nbsp;&nbsp; vtkPoints points = new vtkPoints();<br>&nbsp;&nbsp;&nbsp; vtkPolyData profileData = new vtkPolyData();</p>
<p>&nbsp;&nbsp;&nbsp; // Number of points on the spline<br>&nbsp;&nbsp;&nbsp; int numberOfOutputPoints = 400;</p>
<p>&nbsp;&nbsp;&nbsp; // Interpolate x, y and z by using the three spline filters and<br>&nbsp;&nbsp;&nbsp; // create new points<br>&nbsp;&nbsp;&nbsp; double t;<br>&nbsp;&nbsp;&nbsp; for (int i=0; i&lt;numberOfOutputPoints; i++) {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; t = (double)(numberOfInputPoints-1)/(double)(numberOfOutputPoints-1)*(double)i;
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; points.InsertPoint(i, aSplineX.Evaluate(t), aSplineY.Evaluate(t),<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; aSplineZ.Evaluate(t));<br>&nbsp;&nbsp;&nbsp; }//i loop</p>
<p>&nbsp;&nbsp;&nbsp; // Create the polyline.<br>&nbsp;&nbsp;&nbsp; vtkCellArray lines = new vtkCellArray();<br>&nbsp;&nbsp;&nbsp; lines.InsertNextCell(numberOfOutputPoints);<br>&nbsp;&nbsp;&nbsp; for (int i=0; i&lt;numberOfOutputPoints; i++) lines.InsertCellPoint(i);</p>
<p>&nbsp;&nbsp;&nbsp; profileData.SetPoints(points);<br>&nbsp;&nbsp;&nbsp; profileData.SetLines(lines);</p>
<p>&nbsp;&nbsp;&nbsp; // Add thickness to the resulting line.<br>&nbsp;&nbsp;&nbsp; vtkTubeFilter profileTubes = new vtkTubeFilter();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; profileTubes.SetNumberOfSides(8);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; profileTubes.SetInput(profileData);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; profileTubes.SetRadius
(.005);</p>
<p>&nbsp;&nbsp;&nbsp; vtkPolyDataMapper profileMapper = new vtkPolyDataMapper();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; profileMapper.SetInputConnection(profileTubes.GetOutputPort());</p>
<p>&nbsp;&nbsp;&nbsp; vtkActor profile = new vtkActor();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; profile.SetMapper(profileMapper);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; profile.GetProperty().SetDiffuseColor(1.0, 0.0, 0.0);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; profile.GetProperty().SetSpecular(.3);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; profile.GetProperty
().SetSpecularPower(30);</p>
<p>&nbsp; renderer.AddActor(glyph);<br>&nbsp; renderer.AddActor(profile);<br>&nbsp; renderer.SetBackground(1,1,1);</p>
<p>&nbsp; add(renWin, BorderLayout.CENTER);</p>
<p>&nbsp; }//constructor</p>
<p>&nbsp;&nbsp;&nbsp; /**<br>&nbsp;&nbsp;&nbsp;&nbsp; * main method<br>&nbsp;&nbsp;&nbsp;&nbsp; */<br>&nbsp;&nbsp;&nbsp; public static void main(String s[]) {</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; CSpline panel = new CSpline();</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; JFrame frame = new JFrame(&quot;CSpline&quot;);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; frame.addWindowListener(new WindowAdapter() {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public void windowClosing(WindowEvent e) {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.exit(0);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; });<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; frame.getContentPane().add(&quot;Center&quot;, panel);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; frame.pack();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; frame.setVisible(true);<br>&nbsp;&nbsp;&nbsp; }//main</p>
<p>} //class CSpline<br></p></div>