Hi David,<div>I am using the VTK version from the Ubuntu repositories and just checked to see that it is indeed 5.6.</div><div>Thanks,</div><div><div>Brett<br><br><div class="gmail_quote">On Mon, Apr 30, 2012 at 6:14 PM, David Gobbi <span dir="ltr">&lt;<a href="mailto:david.gobbi@gmail.com" target="_blank">david.gobbi@gmail.com</a>&gt;</span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">I can see that maybe in VTK 5.6 or earlier you might see results like<br>
that, but not in VTK 5.8 or 5.10.  I just tested VTK 5.10 to be sure.<br>
What version of VTK are you using?<br>
<span class="HOEnZb"><font color="#888888"><br>
 - David<br>
</font></span><div class="HOEnZb"><div class="h5"><br>
<br>
<br>
On Mon, Apr 30, 2012 at 10:33 AM, Brett Tully &lt;<a href="mailto:brett.tully@oxyntix.com">brett.tully@oxyntix.com</a>&gt; wrote:<br>
&gt; I am not sure if this is a bug, by design, or just an intricacy of Python<br>
&gt; wrappers, but I have found a difference between VTK points depending on if<br>
&gt; they are created by passing in x, y, z coordinates, or by passing a 3<br>
&gt; element array [x, y, z]. The first method gives a true double precision<br>
&gt; point as requested by SetDataTypeToDouble, where as the second method still<br>
&gt; results in a single precision point. I have fixed our code to ensure double<br>
&gt; precision, but I thought I would post it here for future reference.<br>
&gt;<br>
&gt; Brett<br>
&gt;<br>
&gt; import vtk<br>
&gt; vtk_points = vtk.vtkPoints()<br>
&gt; vtk_points.SetDataTypeToDouble()<br>
&gt; e = [0.0, 0.0065, 0.0]<br>
&gt;<br>
&gt; # pass in the point using its individual components<br>
&gt; e1_id = vtk_points.InsertNextPoint(e[0], e[1], e[2])<br>
&gt; p_e1 = vtk_points.GetPoint(e1_id)<br>
&gt;<br>
&gt; # pass in the point as an array<br>
&gt; e2_id = vtk_points.InsertNextPoint(e)<br>
&gt; p_e2 = vtk_points.GetPoint(e2_id)<br>
&gt;<br>
&gt; # check the difference between the two methods<br>
&gt; print p_e1, p_e2<br>
&gt; print (p_e1[0] - p_e2[0]), (p_e1[1] - p_e2[1]), (p_e1[2] - p_e2[2])<br>
&gt;<br>
&gt; # gives<br>
&gt; # (0.0, 0.0065, 0.0) (0.0, 0.006500000134110451, 0.0)<br>
&gt; # 0.0 -1.34110451043e-10 0.0<br>
&gt;<br>
&gt; On Tue, Apr 3, 2012 at 1:43 PM, David Gobbi &lt;<a href="mailto:david.gobbi@gmail.com">david.gobbi@gmail.com</a>&gt; wrote:<br>
&gt;&gt;<br>
&gt;&gt; Hi Brett,<br>
&gt;&gt;<br>
&gt;&gt; The default type of vtkPoints is &quot;float&quot;.  If you need more precision,<br>
&gt;&gt; then you can change the precision to &quot;double&quot;:<br>
&gt;&gt;<br>
&gt;&gt; vtk_points = vtk.vtkPoints()<br>
&gt;&gt; vtk_points.SetDataTypeToDouble()<br>
&gt;&gt;<br>
&gt;&gt; This is true in both C++ and Python.<br>
&gt;&gt;<br>
&gt;&gt;  - David<br>
&gt;&gt;<br>
&gt;&gt;<br>
&gt;&gt; On Tue, Apr 3, 2012 at 6:22 AM, Brett Tully &lt;<a href="mailto:brett.tully@oxyntix.com">brett.tully@oxyntix.com</a>&gt;<br>
&gt;&gt; wrote:<br>
&gt;&gt; &gt; Dear all,<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; I am finding that vtkPoints.InsertNextPoint when called from python does<br>
&gt;&gt; &gt; not<br>
&gt;&gt; &gt; return a point where I want it -- it seems to be out by ~1e-10 -- is<br>
&gt;&gt; &gt; there a<br>
&gt;&gt; &gt; way to set the tolerance of this function or improve its location to be<br>
&gt;&gt; &gt; more<br>
&gt;&gt; &gt; precise than 1e-10? Or is this due to python floats?<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; Thanks,<br>
&gt;&gt; &gt; Brett.<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; I.e. the following python:<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; import vtk<br>
&gt;&gt; &gt; vtk_points = vtk.vtkPoints()<br>
&gt;&gt; &gt; e = [0.0, 0.0065, 0.0]<br>
&gt;&gt; &gt; e_id = vtk_points.InsertNextPoint(*e)<br>
&gt;&gt; &gt; p_e = vtk_points.GetPoint(e_id)<br>
&gt;&gt; &gt; print p_e, e<br>
&gt;&gt; &gt; print (e[0] - p_e[0]), (e[1] - p_e[1]), (e[2] - p_e[2])<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; # gives<br>
&gt;&gt; &gt; # (0.0, 0.006500000134110451, 0.0) [0.0, 0.0065, 0.0]<br>
&gt;&gt; &gt; # 0.0 -1.34110451043e-10 0.0<br>
&gt;<br>
&gt;<br>
</div></div></blockquote></div><br></div></div>