<html>
  <head>
    <meta content="text/html; charset=ISO-8859-1"
      http-equiv="Content-Type">
  </head>
  <body bgcolor="#FFFFFF" text="#000000">
    Hi<br>
    <br>
    I would suggest to set the locator for you dataset.<br>
    <br>
    By default the locator is a vtkMergePoints locator, which might not
    be setup to work well for large data.<br>
    To check if this is the case, you could call Print(cout) on the
    locator after running the clean filter.<br>
    <br>
    If the parameters (Divisions) are the same, then it is not trying to
    compute good parameters for the dataset.<br>
    The number of divisions controls how many bins there are to put the
    points in each dimenions.<br>
    In my experience you will get good performance if you have around
    120 points per bin. You can try to set the divisions based on the
    bounding box of your dataset.<br>
    <br>
    If your data is not sampled very evenly spaced you might want to use
    an octree point locator:<br>
<a class="moz-txt-link-freetext" href="http://www.vtk.org/doc/nightly/html/classvtkIncrementalOctreePointLocator.html">http://www.vtk.org/doc/nightly/html/classvtkIncrementalOctreePointLocator.html</a><br>
    <br>
    e.g. something like this:<br>
    <br>
    loc = vtkIncrementalOctreePointLocator::New();<br>
    loc-&gt;<span class="Apple-style-span" style="border-collapse:
      separate; color: rgb(0, 0, 0); font-family: 'Times New Roman';
      font-style: normal; font-variant: normal; font-weight: normal;
      letter-spacing: normal; line-height: normal; orphans: 2;
      text-align: -webkit-auto; text-indent: 0px; text-transform: none;
      white-space: normal; widows: 2; word-spacing: 0px;
      -webkit-border-horizontal-spacing: 0px;
      -webkit-border-vertical-spacing: 0px;
      -webkit-text-decorations-in-effect: none;
      -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px;
      font-size: medium; "><span class="Apple-style-span"
        style="font-family: 'Lucida Grande', Verdana, Geneva, Arial,
        sans-serif; font-size: 13px; line-height: 16px; "><a class="el"
href="classvtkIncrementalOctreePointLocator.html#acba69b2b6f98df7dd733bcea37e2b953"
          style="color: rgb(61, 87, 140); font-weight: bold;
          text-decoration: underline; ">SetMaxPointsPerLeaf</a>(128);<br>
        loc-&gt;BuildLocator();<br>
      </span></span>clean-&gt;SetLocator(loc);<br>
    <br>
    <br>
    <br>
    On 1/4/2012 7:10 AM, rakesh patil wrote:
    <blockquote
cite="mid:CAOG35cneP2SB1f1CNazhnhO4kojYNmSiCzC4vcrGVku8PYcTvQ@mail.gmail.com"
      type="cite">Hello,<br>
      <br>
      I am facing problem in triangulation for few datasets. I have VTK
      compiled for 64-bit machine and some datasets get triangulated and
      some do not. I went through the doxygen help for vtkDelaunay2D
      which says that<br>
      <br>
      <b>The Delaunay triangulation can be numerically sensitive in some
        cases. To prevent problems, try to avoid injecting points that
        will result in triangles with bad aspect ratios (1000:1 or
        greater). In practice this means inserting points that are
        "widely dispersed", and enables smooth transition of triangle
        sizes throughout the mesh. (You may even want to add extra
        points to create a better point distribution.) If numerical
        problems are present, you will see a warning message to this
        effect at the end of the triangulation process.<br>
        <br>
      </b>Now how can I verify or make sure that there are no numerical
      problems in the input dataset? I am reading input dataset from a
      file. Is there any direct or indirect way to remove such problems
      if they exists?<br>
      <br>
      At very first point I thought of vtkCleanPolyData filter to use.
      But this takes very long time for large data. If this is the only
      way to remove numerical problems, then can vtkCleanPolyData filter
      be made to execute faster?<br>
      <br>
      Please suggest me something. Below is the code I am using<br>
      <br>
      #include &lt;iostream&gt;<br>
      #include &lt;vtkPoints.h&gt;<br>
      #include &lt;vtkDoubleArray.h&gt;<br>
      #include &lt;vtkPointData.h&gt;<br>
      #include &lt;vtkPolyData.h&gt;<br>
      #include &lt;vtkDelaunay2D.h&gt;<br>
      #include &lt;vtkCellArray.h&gt;<br>
      #include &lt;vtkSmartPointer.h&gt;<br>
      #include &lt;vtkPolyDataMapper.h&gt;<br>
      #include &lt;vtkRenderer.h&gt;<br>
      #include &lt;vtkRenderWindowInteractor.h&gt;<br>
      #include &lt;vtkRenderWindow.h&gt;<br>
      #include &lt;vtkCleanPolyData.h&gt;<br>
      <br>
      int main()<br>
      {<br>
      &nbsp;&nbsp;&nbsp; vtkPoints *points = vtkPoints::New();<br>
      &nbsp;&nbsp;&nbsp; vtkDoubleArray *scalarArray = vtkDoubleArray::New();<br>
      &nbsp;&nbsp;&nbsp; vtkCellArray *polyVertex = vtkCellArray::New();<br>
      &nbsp;&nbsp;&nbsp; <br>
      &nbsp;&nbsp;&nbsp; std::string filename="carto-gebco.pts";<br>
      <br>
      &nbsp;&nbsp;&nbsp; FILE *fp = fopen(filename.c_str(), "r");<br>
      &nbsp;&nbsp;&nbsp; if(!fp){<br>
      &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; std::cout &lt;&lt; "Unable to open file" &lt;&lt;
      std::endl;<br>
      &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; return -1 ;<br>
      &nbsp;&nbsp;&nbsp; }<br>
      <br>
      &nbsp;&nbsp;&nbsp; char buffer[256];<br>
      &nbsp;&nbsp;&nbsp; char str[256];<br>
      &nbsp;&nbsp;&nbsp; double xval, yval, zval;<br>
      &nbsp;&nbsp;&nbsp; vtkIdType i = 0;<br>
      &nbsp;&nbsp;&nbsp; <br>
      &nbsp;&nbsp;&nbsp; while(fgets(buffer, 256, fp)) //return false;<br>
      &nbsp;&nbsp;&nbsp; {<br>
      &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; str[0]='\0';<br>
      &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; sscanf(buffer, "%lf%lf%lf", &amp;xval, &amp;yval,
      &amp;zval);<br>
      <br>
      &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; points-&gt;InsertPoint(i, xval, <br>
      &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; yval,0);<br>
      &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; scalarArray-&gt;InsertTuple1(i, zval);<br>
      &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; polyVertex-&gt;InsertNextCell(1, &amp;i);<br>
      &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; <br>
      &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; i++;<br>
      &nbsp;&nbsp;&nbsp; }<br>
      &nbsp;&nbsp;&nbsp; std::cout &lt;&lt; "Completed reading input data" &lt;&lt;
      std::endl;<br>
      &nbsp;&nbsp;&nbsp; points-&gt;Modified();<br>
      &nbsp;&nbsp;&nbsp; scalarArray-&gt;Modified();<br>
      &nbsp;&nbsp;&nbsp; polyVertex-&gt;Modified();<br>
      <br>
      &nbsp;&nbsp;&nbsp; vtkPolyData *pd = vtkPolyData::New();<br>
      &nbsp;&nbsp;&nbsp; pd-&gt;SetPoints(points);<br>
      &nbsp;&nbsp;&nbsp; pd-&gt;GetPointData()-&gt;SetScalars(scalarArray);<br>
      &nbsp;&nbsp;&nbsp; pd-&gt;SetVerts(polyVertex);<br>
      &nbsp;&nbsp;&nbsp; <br>
      &nbsp;&nbsp;&nbsp; points-&gt;Delete();<br>
      &nbsp;&nbsp;&nbsp; scalarArray-&gt;Delete();<br>
      &nbsp;&nbsp;&nbsp; polyVertex-&gt;Delete();<br>
      <br>
      &nbsp;&nbsp;&nbsp; std::cout &lt;&lt; "Checking duplicate points" &lt;&lt;
      std::endl;<br>
      &nbsp;&nbsp;&nbsp; vtkSmartPointer&lt;vtkCleanPolyData&gt; cpd =
      vtkSmartPointer&lt;vtkCleanPolyData&gt;::New();<br>
      &nbsp;&nbsp;&nbsp; cpd-&gt;SetInput(pd);<br>
      &nbsp;&nbsp;&nbsp; pd-&gt;Delete();<br>
      &nbsp;&nbsp;&nbsp; cpd-&gt;SetTolerance(0.00001);<br>
      &nbsp;&nbsp;&nbsp; cpd-&gt;Update();<br>
      <br>
      &nbsp;&nbsp;&nbsp; std::cout &lt;&lt; "Triangulating data" &lt;&lt; std::endl;<br>
      &nbsp;&nbsp;&nbsp; vtkDelaunay2D *del = vtkDelaunay2D::New();<br>
      &nbsp;&nbsp;&nbsp; del-&gt;SetInputConnection(cpd-&gt;GetOutputPort());&nbsp;&nbsp;&nbsp; <br>
      &nbsp;&nbsp;&nbsp; del-&gt;SetTolerance(0.00001);<br>
      &nbsp;&nbsp;&nbsp; del-&gt;Update();<br>
      <br>
      &nbsp;&nbsp;&nbsp; std::cout &lt;&lt; "Completed triangulation" &lt;&lt;
      std::endl;<br>
      &nbsp;&nbsp;&nbsp; vtkSmartPointer&lt;vtkPolyDataMapper&gt; triangulatedMapper =<br>
      &nbsp;&nbsp;&nbsp; vtkSmartPointer&lt;vtkPolyDataMapper&gt;::New();<br>
      &nbsp;
      triangulatedMapper-&gt;SetInputConnection(del-&gt;GetOutputPort());<br>
      &nbsp; del-&gt;Delete();<br>
      &nbsp; vtkSmartPointer&lt;vtkActor&gt; triangulatedActor =<br>
      &nbsp;&nbsp;&nbsp; vtkSmartPointer&lt;vtkActor&gt;::New();<br>
      &nbsp; triangulatedActor-&gt;SetMapper(triangulatedMapper);<br>
      &nbsp;<br>
      &nbsp; // Create a renderer, render window, and interactor<br>
      &nbsp; vtkSmartPointer&lt;vtkRenderer&gt; renderer =<br>
      &nbsp;&nbsp;&nbsp; vtkSmartPointer&lt;vtkRenderer&gt;::New();<br>
      &nbsp; vtkSmartPointer&lt;vtkRenderWindow&gt; renderWindow =<br>
      &nbsp;&nbsp;&nbsp; vtkSmartPointer&lt;vtkRenderWindow&gt;::New();<br>
      &nbsp; renderWindow-&gt;AddRenderer(renderer);<br>
      &nbsp; vtkSmartPointer&lt;vtkRenderWindowInteractor&gt;
      renderWindowInteractor =<br>
      &nbsp;&nbsp;&nbsp; vtkSmartPointer&lt;vtkRenderWindowInteractor&gt;::New();<br>
      &nbsp; renderWindowInteractor-&gt;SetRenderWindow(renderWindow);<br>
      &nbsp;<br>
      &nbsp; // Add the actor to the scene<br>
      &nbsp; renderer-&gt;AddActor(triangulatedActor);<br>
      &nbsp;// renderer-&gt;AddActor(triangulatedActor);<br>
      &nbsp; renderer-&gt;SetBackground(.3, .6, .3); // Background color
      green<br>
      &nbsp;<br>
      &nbsp; // Render and interact<br>
      &nbsp; renderWindow-&gt;Render();<br>
      &nbsp; renderWindowInteractor-&gt;Start();<br>
      <br>
      &nbsp;&nbsp;&nbsp; fclose(fp);<br>
      &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; <br>
      &nbsp;&nbsp;&nbsp; return 0;<br>
      }<br>
      <br>
      Here is a sample input data<br>
      <br>
      <a moz-do-not-send="true" id="HyperLink1"
        href="http://www.fileflyer.com/view/dkhbrBR"
        style="display:inline-block;width:331px">http://www.fileflyer.com/view/dkhbrBR</a><br>
      <br>
      Thanks<br>
      <br>
      Regards<br>
      Rakesh Patil&nbsp;<b> <br>
      </b>
      <br>
      <fieldset class="mimeAttachmentHeader"></fieldset>
      <br>
      <pre wrap="">_______________________________________________
Powered by <a class="moz-txt-link-abbreviated" href="http://www.kitware.com">www.kitware.com</a>

Visit other Kitware open-source projects at <a class="moz-txt-link-freetext" href="http://www.kitware.com/opensource/opensource.html">http://www.kitware.com/opensource/opensource.html</a>

Please keep messages on-topic and check the VTK FAQ at: <a class="moz-txt-link-freetext" href="http://www.vtk.org/Wiki/VTK_FAQ">http://www.vtk.org/Wiki/VTK_FAQ</a>

Follow this link to subscribe/unsubscribe:
<a class="moz-txt-link-freetext" href="http://www.vtk.org/mailman/listinfo/vtkusers">http://www.vtk.org/mailman/listinfo/vtkusers</a>
</pre>
    </blockquote>
  </body>
</html>