After obtaining and examining a traceback, I found the segmentation fault was occurring in vtkHexahedron::InterpolationFunctions, which apparently expects the double*weights to be an array of 8 doubles. This is aggravating, since the documentation says nothing about the expected length of *weights. The example at <a href="http://www.cmake.org/Wiki/VTK/Examples/Cxx/PolyData/PointInsideObject2">http://www.cmake.org/Wiki/VTK/Examples/Cxx/PolyData/PointInsideObject2</a> uses double weights[3], which also makes no sense since there&#39;s no way to make a 3-dimensional cell with only 3 faces/vertices. Can anyone tell me exactly what&#39;s expected to be passed to vtkPointSet::FindCell()??<br>
<br>traceback:<br><br>#0  0x00000031c31885ee in vtkHexahedron::InterpolationFunctions (<br>    pcoords=0x7fffffffd8a0, sf=0x0)<br>    at /usr/src/debug/VTK/Filtering/vtkHexahedron.cxx:202<br>#1  0x00000031c3189bdf in vtkHexahedron::EvaluatePosition (<br>
    this=&lt;value optimized out&gt;, x=&lt;value optimized out&gt;, <br>    closestPoint=&lt;value optimized out&gt;, subId=&lt;value optimized out&gt;, <br>    pcoords=0x7fffffffd8a0, dist2=@0x7fffffffd7f8, weights=0x0)<br>
    at /usr/src/debug/VTK/Filtering/vtkHexahedron.cxx:82<br>#2  0x00000031c320927f in vtkPointSet::FindCell (this=0x6250d0, <br>    x=&lt;value optimized out&gt;, cell=0x0, gencell=&lt;value optimized out&gt;, <br>    cellId=43508, tol2=&lt;value optimized out&gt;, subId=&lt;value optimized out&gt;, <br>
    pcoords=0x7fffffffd8a0, weights=0x0)<br>    at /usr/src/debug/VTK/Filtering/vtkPointSet.cxx:217<br>#3  0x0000000000401187 in vtkBlenderTexture::SamplePoint (this=0x6238a0, <br>    x=0.01, y=0, z=0, array=0) at vtkFindCellTest.cpp:73<br>
#4  0x0000000000401420 in main (argc=1, argv=0x7fffffffdb38)<br>    at vtkFindCellTest.cpp:111<br><br><br><div class="gmail_quote">On Thu, Oct 21, 2010 at 4:00 PM, John Haiducek <span dir="ltr">&lt;<a href="mailto:jhaiduce@gmail.com">jhaiduce@gmail.com</a>&gt;</span> wrote:<br>
<blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">I&#39;m writing a program that samples points from a VTKUnstructuredGrid
dataset by using calls to vtkDataSet::FindPoint(). Every call to
FindPoint results in a segmentation fault. Any help would be
appreciated.<br><br>John<br>
<br>[code]<br>#include &lt;sstream&gt;<br>#include &lt;iostream&gt;<br><br>#include &lt;cstddef&gt;<br>#include &quot;vtkDataSetReader.h&quot;<br>#include &quot;vtkSmartPointer.h&quot;<br>#include &quot;vtkDataSet.h&quot;<br>


#include &quot;vtkGenericCell.h&quot;<br>#include &quot;vtkPointData.h&quot;<br><br>class vtkBlenderTexture<br>{<br>    private:<br>        vtkSmartPointer &lt;vtkDataSet&gt; dataset;<br>        int dims[3];<br>        <br>


        void load_vtk(char* filename);<br>        char vtkfilename[240];<br>        vtkGenericCell *gencell;<br>        <br>    public:<br>        <br>        vtkBlenderTexture();<br>        <br>        double SamplePoint(double x, double y, double z, int array);<br>


        <br>        void SetInputFilename(char* filename);<br>        <br>        char* GetInputFilename();<br>};<br><br>void vtkBlenderTexture::load_vtk(char filename[240])<br>        {<br>            strcpy(vtkfilename,filename);<br>


            vtkSmartPointer&lt;vtkDataSetReader&gt; reader = vtkSmartPointer&lt;vtkDataSetReader&gt;::New();<br>            reader-&gt;SetFileName(filename);<br>            if(reader-&gt;IsFileValid(&quot;unstructured_grid&quot;)||reader-&gt;IsFileValid(&quot;structured_grid&quot;))<br>


            {<br>                reader-&gt;Update();<br>                dataset=reader-&gt;GetOutput();<br>                cout &lt;&lt; &quot;Done reading &quot;&lt;&lt; filename &lt;&lt;endl;<br>            }<br>            else<br>


            {<br>                cout &lt;&lt; &quot;Invalid VTK file &quot;&lt;&lt;filename&lt;&lt;endl;<br>                dataset=NULL;<br>            }<br>        }<br>        <br>vtkBlenderTexture::vtkBlenderTexture()<br>


        {<br>                gencell = vtkGenericCell::New();<br>        }<br>        <br>double vtkBlenderTexture::SamplePoint(double x, double y, double z, int array)<br>        {<br>            double value=0;<br>            if(dataset!=NULL)<br>


            {<br>                double pos[3]={x,y,z};<br>                double pcoords[3];<br>                vtkIdType cellId=NULL;<br>                int subId;<br>                double * weights;<br>                cellId = dataset-&gt;FindCell(pos,NULL,gencell,cellId,0.01,subId,pcoords,weights);<br>


                if(cellId&gt;=0)<br>                {<br>                    vtkIdList*pointIds;<br>                    dataset-&gt;GetCellPoints(cellId,pointIds);<br>                    value = dataset-&gt;GetPointData()-&gt;GetScalars()-&gt;GetComponent(pointIds-&gt;GetId(0),array);<br>


                }<br>            }<br>                <br>            return value;<br>        }<br>        <br>void vtkBlenderTexture::SetInputFilename(char filename[240])<br>        {<br>            load_vtk(filename);<br>


        }<br>        <br>char* vtkBlenderTexture::GetInputFilename()<br>        {<br>            return vtkfilename;<br>        }<br><br><br>int main( int argc, const char* argv[] )<br>{<br>    vtkBlenderTexture * texobj = new vtkBlenderTexture();<br>


    <br>    char filename[240]=&quot;/home/haiduced/PumpStudy/pumpstudy.vtk&quot;;<br>    texobj-&gt;SetInputFilename(filename);<br>    double value = texobj-&gt;SamplePoint(0.01, 0, 0,0);<br>    cout &lt;&lt; value &lt;&lt; endl;<br>


    return 0;<br>}<br>[/code]
</blockquote></div><br>