I'm trying to visualize some scalar field data using VTK (Paraview, and some hand-rolled scripts), but I'm having trouble outputting my data in VTK format. I tried using the VTK Legacy ASCII format with the code below. It works correctly when my spacing is 0.1 or greater, but when I decrease the spacing (I've tried .08, .05, .01 and lower), The isosurfaces VTK generate are incorrect. It looks as if the dimensions of the data are miscalculated, because I get bumpy, off-axis sheets offset from the true isosurface as shown here: <a href="http://www.cs.utah.edu/~benjones/isoFail.png">http://www.cs.utah.edu/~benjones/isoFail.png</a> . The true isosurface is a triangel mesh created by contouring the same data I'm dumping below. Why might the code/sample data below be giving me these errors?<div>
<br></div><div>Output code:</div><div><br></div><div><div> std::ofstream out(filename);</div><div> </div><div> out << "# vtk DataFile Version 3.0" << std::endl;</div><div> out << "Signed distance/biharmonic visualizer" << std::endl;</div>
<div> out << "ASCII" << std::endl;</div><div> out << "DATASET STRUCTURED_POINTS" << std::endl;</div><div> out << "DIMENSIONS " << nx << " " << ny << " " << nz << std::endl;</div>
<div> out << "ORIGIN 0.0 0.0 0.0" << std::endl;</div><div> out << "SPACING " << h << " " << h << " " << h << std::endl;</div>
<div> out << "POINT_DATA " << nx*ny*nz << std::endl;</div><div> out << "SCALARS signedDistance double 1" << std::endl;</div><div> out << "LOOKUP_TABLE default" << std::endl;</div>
<div> for(size_t i = 0; i < nx; ++i)</div><div> for(size_t j = 0; j < ny; ++j)</div><div> for(size_t k = 0; k < nz; ++k)</div><div><span class="Apple-tab-span" style="white-space:pre">        </span>out << tempPhi(i,j,k) << std::endl;</div>
<div> //out << "POINT_DATA " << nx*ny*nz << std::endl;</div><div> out << "SCALARS biharmonic double 1" << std::endl;</div><div> out << "LOOKUP_TABLE default" << std::endl;</div>
<div> for(size_t i = 0; i < nx; ++i)</div><div> for(size_t j = 0; j < ny; ++j)</div><div> for(size_t k = 0; k < nz; ++k)</div><div> out << biharmonic(i,j,k) << std::endl;</div><div> out.close();</div>
</div><div><br></div><div><br></div><div><br></div><div>Sample file:</div><div><br></div><div><br></div><div><div># vtk DataFile Version 3.0</div><div>Signed distance/biharmonic visualizer</div><div>ASCII</div><div>DATASET STRUCTURED_POINTS</div>
<div>DIMENSIONS 54 58 52</div><div>ORIGIN 0.0 0.0 0.0</div><div>SPACING 0.05 0.05 0.05</div><div>POINT_DATA 162864</div><div>SCALARS signedDistance double</div><div>LOOKUP_TABLE default</div><div>1.79769e+308</div><div>1.79769e+308</div>
<div>1.79769e+308</div></div><div>...</div><div>...</div><div><div>1.79769e+308</div><div>1.79769e+308</div><div>SCALARS biharmonic double</div><div>LOOKUP_TABLE default</div><div>0</div><div>0</div></div><div>...</div><div>
...</div><div>0</div><div>0</div><div><br></div>