Hi all,<br><br>I&#39;ve looked into the archive but still can&#39;t get vtkIterativeClosestPointTransform working. I only wish to align two point clouds, and print out the 6-degree-of-freedom result in any form. Would anyone come up with a hello-world level solution (in c++), or correct my code? 
<br><br>Thanks and Thanks and Thanks!<br><br>Arnie<br><br>My testing program follows.....<br><br>////////////////////////////////////<br>#include &lt;vtk/vtkPoints.h&gt;<br>#include &lt;vtk/vtkPolyData.h&gt;<br>#include &lt;vtk/vtkDataSet.h&gt;
<br>#include &lt;vtk/vtkLandmarkTransform.h&gt;<br>#include &lt;vtk/vtkIterativeClosestPointTransform.h&gt;<br><br>using namespace std;<br>//make_icp by Benedikt<br>vtkIterativeClosestPointTransform * make_icp(vtkDataSet * source, vtkDataSet *
<br>target, int iter)<br>{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; vtkIterativeClosestPointTransform * icp =<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; vtkIterativeClosestPointTransform::New();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; icp-&gt;SetSource(source);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; icp-&gt;SetTarget(target);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; icp-&gt;DebugOn();
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; icp-&gt;SetMaximumNumberOfIterations(iter);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; icp-&gt;SetMaximumNumberOfLandmarks(source-&gt;GetNumberOfPoints());<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; icp-&gt;SetCheckMeanDistance(1);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; icp-&gt;SetMaximumMeanDistance(
0.0000001);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; icp-&gt;GetLandmarkTransform()-&gt;SetModeToRigidBody();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; icp-&gt;Modified();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; icp-&gt;Update();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return icp;<br>};<br><br>int main(){<br>&nbsp; float x[8][3]={{0,0,0}, {1,0,0}, {1,1,0}, {0,1,0},
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {0,0,1}, {1,0,1}, {1,1,1}, {0,1,1}};<br>&nbsp; vtkPoints *points1 = vtkPoints::New();<br>&nbsp; vtkPolyData *cube1 = vtkPolyData::New();<br>&nbsp; vtkPoints *points2 = vtkPoints::New();<br>&nbsp; vtkPolyData *cube2 = vtkPolyData::New();
<br>&nbsp; for (int i=0; i&lt;8; i++) points1-&gt;InsertPoint(i,x[i]);<br>&nbsp; for (int i=0; i&lt;8; i++) points2-&gt;InsertPoint(i,x[i]);<br>&nbsp; cube1-&gt;SetPoints(points1);<br>&nbsp; cube2-&gt;SetPoints(points2);<br><br>&nbsp; vtkIterativeClosestPointTransform *icp = make_icp( cube1, cube2, 100 );
<br>&nbsp; icp -&gt;PrintSelf(std::cout,0);<br><br>&nbsp; points1-&gt;Delete();<br>&nbsp; points2-&gt;Delete();<br>}<br><br>//////////END OF CODE///////////<br><br><br><br><br>