<P>
hi everone,<BR>
i was working on contour plot, and iam sending the code below.<BR>
iam encountering crashes for reasons, iam not sure.<BR>
it happens only on some kinds of data.i have even put for what data it crashes<BR>
please help me.<BR>
thank you,<BR>
david michell<BR>
<BR>
#define VTK_USE_ANSI_STDLIB<BR>
<BR>
#include "vtk/vtkUnstructuredGrid.h"<BR>
<BR>
#include "vtk/vtkPolyDataMapper.h"<BR>
<BR>
#include "vtk/vtkActor.h"<BR>
<BR>
#include "vtk/vtkRenderer.h"<BR>
<BR>
#include "vtk/vtkRenderWindow.h"<BR>
<BR>
#include "vtk/vtkRenderWindowInteractor.h"<BR>
<BR>
#include "vtk/vtkIdType.h"<BR>
<BR>
#include "vtk/vtkCellArray.h"<BR>
<BR>
#include "vtk/vtkPoints.h"<BR>
<BR>
#include "vtk/vtkDoubleArray.h"<BR>
<BR>
#include "vtk/vtkFloatArray.h"<BR>
<BR>
#include "vtk/vtkProperty.h"<BR>
<BR>
#include "vtk/vtkContourFilter.h"<BR>
<BR>
#include "vtk/vtkContourGrid.h"<BR>
<BR>
#include "vtk/vtkExtractVOI.h"<BR>
<BR>
#include "vtk/vtkGaussianSplatter.h"<BR>
<BR>
#include "vtk/vtkPointData.h"<BR>
<BR>
#include "vtk/vtkPixel.h"<BR>
<BR>
#include "vtk/vtkPolyVertex.h"<BR>
<BR>
#include "vtk/vtkShepardMethod.h"<BR>
<BR>
#include "vtk/vtkLookupTable.h"<BR>
<BR>
#include "vtk/vtkDelaunay2D.h"<BR>
<BR>
#include "vtk/vtkDelaunay3D.h"<BR>
<BR>
#include "vtk/vtkPolyData.h"<BR>
<BR>
#include "vtk/vtkDataSetMapper.h"<BR>
<BR>
#include "vtk/vtkPolyDataNormals.h"<BR>
<BR>
#include "vtk/vtkButterflySubdivisionFilter.h"<BR>
<BR>
#include "vtk/vtkReverseSense.h"<BR>
<BR>
#include "vtk/vtkSurfaceReconstructionFilter.h"<BR>
<BR>
#include "vtk/vtkContourFilter.h"<BR>
<BR>
#include "vtk/vtkDataSetToImageFilter.h"<BR>
<BR>
#include "vtk/vtkPolyDataToImageStencil.h"<BR>
<BR>
#include "vtk/vtkGeometryFilter.h"<BR>
<BR>
#include "vtk/vtkStripper.h"<BR>
<BR>
#include "vtk/vtkLinkEdgels.h"<BR>
<BR>
#include "vtk/vtkThreshold.h"<BR>
<BR>
#include "vtk/vtkMarchingContourFilter.h"<BR>
<BR>
#include "vtk/vtkMarchingSquares.h"<BR>
<BR>
#include "vtk/vtkImageData.h"<BR>
<BR>
#include "stdio.h"<BR>
<BR>
#include "vtk/vtkCardinalSpline.h"<BR>
<BR>
#include "vtk/vtkIdType.h"<BR>
<BR>
int main(int argc,char* argv[])<BR>
<BR>
{<BR>
<BR>
vtkRenderer *ren=vtkRenderer::New();<BR>
<BR>
vtkRenderWindow *win=vtkRenderWindow::New();<BR>
<BR>
win->AddRenderer(ren);<BR>
<BR>
vtkRenderWindowInteractor *iren=vtkRenderWindowInteractor::New();<BR>
<BR>
win->SetInteractor(iren);<BR>
<BR>
iren->Initialize();<BR>
<BR>
<BR>
<BR>
<BR>
<BR>
vtkPoints *points=vtkPoints::New();<BR>
<BR>
<BR>
<BR>
vtkDoubleArray *scalar=vtkDoubleArray::New();<BR>
<BR>
<BR>
int i,counter;<BR>
<BR>
double temp;<BR>
<BR>
double *data;<BR>
<BR>
<BR>
int npts=10000;<BR>
<BR>
<BR>
points->SetNumberOfPoints(npts);<BR>
<BR>
scalar->SetNumberOfTuples(npts);<BR>
<BR>
data=new double[npts*3];<BR>
<BR>
<BR>
<BR>
for (i=0;i<npts;i++)<BR>
<BR>
{<BR>
<BR>
data[i*3]=sin(i*22.0/7); <BR>
data[i*3+1]=cos(i/1.0)*sin(i/1.0); <BR>
<BR>
//uncomment the two following lines to reproduce crash<BR>
//data[i*3]=i/1000.0;<BR>
//data[i*3+1]=cos(i/1000.0);<BR>
<BR>
data[i*3+2]=0.0;//leave this as 0.0<BR>
<BR>
points->InsertPoint(i,data[i*3],data[i*3+1],data[i*3+2]);<BR>
<BR>
double temp=i%1000;<BR>
<BR>
scalar->InsertValue(i,temp);<BR>
<BR>
}<BR>
<BR>
vtkPolyData *m_spData=vtkPolyData::New();<BR>
<BR>
m_spData->Allocate(npts*3);<BR>
<BR>
m_spData->SetPoints(points);<BR>
<BR>
m_spData->GetPointData()->SetScalars(scalar);<BR>
<BR>
m_spData->Modified();<BR>
<BR>
m_spData->Update();<BR>
<BR>
<BR>
<BR>
vtkDelaunay2D *del=vtkDelaunay2D::New();<BR>
<BR>
del->SetInput(m_spData);<BR>
<BR>
del->SetTolerance(0.000001);<BR>
<BR>
del->Update();<BR>
<BR>
vtkPolyData *temp1=del->GetOutput();<BR>
<BR>
/* i want the contour lines to be curved, so iam doing this */ <BR>
<BR>
/* but what happens to the scalars during subdivision??? */<BR>
<BR>
/* IS THERE SOME OTHER WAY TO GET CURVY LINES */<BR>
<BR>
/* sometimes it even crashes depending on the input data, is there some way to avoid this filter<BR>
<BR>
and pass the output of delaunay2D to marchingcontourfilter <BR>
<BR>
and then do something to the output of marchingcontourfilter <BR>
<BR>
to get curvy lines */<BR>
<BR>
vtkButterflySubdivisionFilter *butr=vtkButterflySubdivisionFilter::New();<BR>
<BR>
butr->SetInput(temp1);<BR>
<BR>
butr->SetNumberOfSubdivisions(3);<BR>
<BR>
butr->Update();<BR>
<BR>
<BR>
vtkPolyData *temp2=butr->GetOutput();<BR>
<BR>
vtkMarchingContourFilter *contour2D=vtkMarchingContourFilter::New();<BR>
<BR>
contour2D->SetInput(temp2);<BR>
<BR>
contour2D->GenerateValues(10,0.0,10.0);<BR>
<BR>
contour2D->Update();<BR>
<BR>
<BR>
<BR>
vtkPolyDataMapper *mapper=vtkPolyDataMapper::New();<BR>
<BR>
mapper->SetInput(contour2D->GetOutput());<BR>
<BR>
<BR>
vtkActor *surface=vtkActor::New();<BR>
<BR>
surface->SetMapper(mapper);<BR>
<BR>
ren->AddActor(surface);<BR>
<BR>
<BR>
<BR>
iren->Start();<BR>
<BR>
return 1;<BR>
<BR>
}<BR>
<BR>
</P>
<br><br>
<A target="_blank" HREF="http://clients.rediff.com/signature/track_sig.asp"><IMG SRC="http://ads.rediff.com/RealMedia/ads/adstream_nx.cgi/www.rediffmail.com/inbox.htm@Bottom" BORDER=0 VSPACE=0 HSPACE=0></a>