[vtkusers] question ? [Writing triangles]
agatte
agatakrason at gmail.com
Tue Sep 4 12:46:49 EDT 2012
Hi All VTK ;)
I am trying to write triangle to txt file,
Format of file like this :
number_of_points
number_of_triangles
point[0]X point[0]Y point[0]Z
point[1]X point[1]Y point[1]Z
...
point[N]X point[N]Y point[N]Z
triangle[0]A triangle[0]B triangle[0]C
triangle[1]A triangle[1]B triangle[1]C
...
triangle[M]A triangle[M]B triangle[M]C
I followed this example :
http://www.vtk.org/Wiki/VTK/Examples/Cxx/PolyData/TriangleArea
I can not write triangle corectly.
Could anyone help me please ?
I don't know what is wrong with my code ?
Here my code :
int main(int argc, char *argv[])
{
// Polydata reader
vtkPolyDataReader* reader = vtkPolyDataReader::New();
reader->SetFileName("SimpleMesh.vtk");
reader->Update();
vtkPolyData*polydata = reader->GetOutput();
vtkPoints* points = polydata->GetPoints();
vtkCellArray* polys = polydata->GetPolys();
polydata->SetPoints(points);
polydata->SetPolys(polys);
// Write to txt file
const char* filename = "test.txt";
std::fstream infile;
infile.open(filename);
vtkIdType number_of_points, number_of_triangles;
number_of_points = polydata->GetNumberOfPoints();
infile<<number_of_points<<std::endl;
number_of_triangles = polydata->GetNumberOfCells();
infile<<number_of_triangles<<std::endl;
// Read points
for (vtkIdType i = 0; i < number_of_points; i++)
{
double p[3];
points->GetPoint(i,p);
infile <<p[0]<<" "<< p[1]<<"
"<<p[2];
infile<<" "<<std::endl;
}
vtkSmartPointer<vtkTriangle> triangle =
vtkSmartPointer<vtkTriangle>::New();
// HERE ??
for(vtkIdType i = 0; i < number_of_triangles; i++)
{
// vtkSmartPointer<vtkLine> line = vtkSmartPointer<vtkLine>::New();
// line->GetPointIds()->SetId(0,i);
// line->GetPointIds()->SetId(1,i+1);
// line->GetPointIds()->SetId(2,i+2);
// polys->InsertNextCell(line);
vtkIdType a,b,c;
a = i;
b = i+1;
c = i+2;
triangle->GetPointIds()->SetId(0,a);
triangle->GetPointIds()->SetId(1,b);
triangle->GetPointIds()->SetId(2,c);
polys->InsertNextCell(triangle);
// double p[3];
// triangle->GetPoints()->GetPoint(i,p);
// infile <<p[0]<<" "<< p[1]<<"
"<<p[2];
// infile<<" "<<std::endl;
}
polydata->SetPoints(points);
polydata->SetPolys(polys);
for(vtkIdType i = 0; i < number_of_triangles;i++)
{
vtkCell* cell = polydata->GetCell(i);
vtkTriangle* triangle = dynamic_cast<vtkTriangle*> (cell);
double p0[3];
double p1[3];
double p2[3];
triangle->GetPoints()->GetPoint(0,p0);
std::cout<<"p0: "<< p0[0]<<" "<<p0[1]<<"
"<<p0[2]<<std::endl;
infile<<p0[0]<<" "<<p0[1]<<"
"<<p0[2]<<std::endl;
/*
triangle->GetPoints()->GetPoint(1,p1);
std::cout<<"p1: "<<p1[0]<<" "<<p1[1] <<
" " <<p1[2] << std::endl;
infile<<p1[0]<<" "<<p1[1]<<"
"<<p1[2]<<std::endl;
triangle->GetPoints()->GetPoint(2,p2);
std::cout<<" "<<p2[0]<<" "<<p2[1]<<" "<<p2[2]<< std::endl;
infile<<p2[0]<<" "<<p2[1]<<" "<<p2[2]<<std::endl*/;
double area = vtkTriangle::TriangleArea(p0,p1,p2);
}
infile.close();
return EXIT_SUCCESS;
}
I would appreciate for any help.
agatte
--
View this message in context: http://vtk.1045678.n5.nabble.com/question-Writing-triangles-tp5715836.html
Sent from the VTK - Users mailing list archive at Nabble.com.
More information about the vtkusers
mailing list