VTK/Tutorials/TriangleGeometryVertices: Difference between revisions
From KitwarePublic
Jump to navigationJump to search
Daviddoria (talk | contribs) m (Write a file of triangle corners (+vertices) moved to Triangle - Geometry + Vertices: Changed structure of polydata examples) |
Daviddoria (talk | contribs) No edit summary |
||
Line 1: | Line 1: | ||
This example writes the coordinates of the corners of a triangle to a vtp file. There is now geometry (points) as well as topology (vertices). If you open this file in Paraview, you will now see the points immediately. | This example writes the coordinates of the corners of a triangle to a vtp file. There is now geometry (points) as well as topology (vertices). If you open this file in Paraview, you will now see the points immediately. | ||
==TriangleVertices.cxx== | |||
<source lang="cpp"> | <source lang="cpp"> | ||
#include "vtkCellArray.h" | #include "vtkCellArray.h" | ||
#include "vtkSmartPointer.h" | |||
#include "vtkPoints.h" | #include "vtkPoints.h" | ||
#include "vtkXMLPolyDataWriter.h" | #include "vtkXMLPolyDataWriter.h" | ||
#include "vtkPolyData.h" | #include "vtkPolyData.h" | ||
int main() | |||
{ | { | ||
//Setup point coordinates | |||
double X[3] = {1.0, 0.0, 0.0}; | |||
} | double Y[3] = {0.0, 0.0, 1.0}; | ||
double Z[3] = {0.0, 0.0, 0.0}; | |||
//Create points and add a vertex at each point. Really what you are doing is adding | |||
//cells to the polydata, and the cells only contain 1 element, so they are, by definition, | |||
//0-D topology (vertices). | |||
vtkSmartPointer<vtkPoints> Points = vtkSmartPointer<vtkPoints>::New(); | |||
vtkSmartPointer<vtkCellArray> Vertices = vtkSmartPointer<vtkCellArray>::New(); | |||
for ( unsigned int i = 0; i < 3; ++i ) | |||
{ | |||
//Declare a variable to store the index of the point that gets added. This behaves just like an unsigned int. | |||
vtkIdType pid[1]; | |||
//Add a point to the polydata and save its index, which we will use to create the vertex on that point. | |||
pid[0] = Points->InsertNextPoint ( X[i], Y[i], Z[i] ); | |||
//create a vertex cell on the point that was just added. | |||
Vertices->InsertNextCell ( 1,pid ); | |||
} | |||
//create a polydata object | |||
vtkSmartPointer<vtkPolyData> polydata = vtkSmartPointer<vtkPolyData>::New(); | |||
//set the points and vertices we created as the geometry and topology of the polydata | |||
polydata->SetPoints ( Points ); | |||
polydata->SetVerts ( Vertices ); | |||
//write the polydata to a file | |||
vtkSmartPointer<vtkXMLPolyDataWriter> writer = vtkSmartPointer<vtkXMLPolyDataWriter>::New(); | |||
writer->SetFileName ( "TriangleVerts.vtp" ); | |||
writer->SetInput ( polydata ); | |||
writer->Write(); | |||
} | } | ||
</source> | |||
==CMakeLists.txt== | |||
<source lang="text"> | |||
cmake_minimum_required(VERSION 2.6) | |||
PROJECT(TriangleVertices) | |||
FIND_PACKAGE(VTK REQUIRED) | |||
INCLUDE(${VTK_USE_FILE}) | |||
ADD_EXECUTABLE(TriangleVertices TriangleVertices.cxx) | |||
TARGET_LINK_LIBRARIES(TriangleVertices vtkHybrid) | |||
</source> | </source> |
Revision as of 18:27, 22 October 2009
This example writes the coordinates of the corners of a triangle to a vtp file. There is now geometry (points) as well as topology (vertices). If you open this file in Paraview, you will now see the points immediately.
TriangleVertices.cxx
<source lang="cpp">
- include "vtkCellArray.h"
- include "vtkSmartPointer.h"
- include "vtkPoints.h"
- include "vtkXMLPolyDataWriter.h"
- include "vtkPolyData.h"
int main() {
//Setup point coordinates double X[3] = {1.0, 0.0, 0.0}; double Y[3] = {0.0, 0.0, 1.0}; double Z[3] = {0.0, 0.0, 0.0};
//Create points and add a vertex at each point. Really what you are doing is adding //cells to the polydata, and the cells only contain 1 element, so they are, by definition, //0-D topology (vertices). vtkSmartPointer<vtkPoints> Points = vtkSmartPointer<vtkPoints>::New(); vtkSmartPointer<vtkCellArray> Vertices = vtkSmartPointer<vtkCellArray>::New();
for ( unsigned int i = 0; i < 3; ++i ) { //Declare a variable to store the index of the point that gets added. This behaves just like an unsigned int. vtkIdType pid[1]; //Add a point to the polydata and save its index, which we will use to create the vertex on that point. pid[0] = Points->InsertNextPoint ( X[i], Y[i], Z[i] ); //create a vertex cell on the point that was just added. Vertices->InsertNextCell ( 1,pid ); }
//create a polydata object vtkSmartPointer<vtkPolyData> polydata = vtkSmartPointer<vtkPolyData>::New();
//set the points and vertices we created as the geometry and topology of the polydata polydata->SetPoints ( Points ); polydata->SetVerts ( Vertices );
//write the polydata to a file vtkSmartPointer<vtkXMLPolyDataWriter> writer = vtkSmartPointer<vtkXMLPolyDataWriter>::New(); writer->SetFileName ( "TriangleVerts.vtp" ); writer->SetInput ( polydata ); writer->Write();
}
</source>
CMakeLists.txt
<source lang="text"> cmake_minimum_required(VERSION 2.6)
PROJECT(TriangleVertices)
FIND_PACKAGE(VTK REQUIRED) INCLUDE(${VTK_USE_FILE})
ADD_EXECUTABLE(TriangleVertices TriangleVertices.cxx) TARGET_LINK_LIBRARIES(TriangleVertices vtkHybrid)
</source>