# access points of a mesh

**URL:** <https://discourse.vtk.org/t/access-points-of-a-mesh/4321>\
**Category:** Development\
**Created:** [September 29, 2020, 2:34pm UTC](https://discourse.vtk.org/t/access-points-of-a-mesh/4321 "2020-09-29T14:34:05Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![pierrectl](https://discourse.vtk.org/user_avatar/discourse.vtk.org/pierrectl/32/2286_2.png) [@pierrectl](https://discourse.vtk.org/u/pierrectl)\
**Post date:** [September 29, 2020, 2:34pm UTC](https://discourse.vtk.org/t/access-points-of-a-mesh/4321/1 "2020-09-29T14:34:05Z")

</div>

Hello everyone,  
I need to work with 3d points of a loaded mesh. Do you provide any example which shows how to access points of a mesh? Thank you for help!

---

<div class="post-metadata">

**Author:** ![bertikrueger](https://discourse.vtk.org/letter_avatar_proxy/v4/letter/b/ce73a5/32.png) [@bertikrueger](https://discourse.vtk.org/u/bertikrueger)\
**Post date:** [September 29, 2020, 11:57pm UTC](https://discourse.vtk.org/t/access-points-of-a-mesh/4321/2 "2020-09-29T23:57:07Z")

</div>

Hello Pierre.

I assume that you have loaded your mesh via a vtk-reader object like vtkOBJReader, vtkPLYReader or vtkSTLReader. So the reader output is of type vtkPolyData\*.

Then you can access the points with the GetPoint-Method of vtkPolyData.

Here is a short example:

```auto
vtkNew<vtkSTLReader> reader;
reader->SetFileName("myMesh.stl");
reader->Update();

vtkSmartPointer<vtkPolyData> mesh = reader->GetOutput();

for(vtkIdType i = 0; i < mesh->GetNumberOfPoints(); i++)
{
   double p[3];
   mesh->GetPoint(i, p); // get the i-th point of the mesh and store it in p[3]

   // do what you want with the point p[3] here
   // p[0] -> x-component, p[1] -> y-component, p[2] -> z-component
}

```

If you want to access the 3 points of each triangle of the mesh then you can do the following:

```auto
vtkSmartPointer<vtkPoints> points = mesh->GetPoints();
vtkSmartPointer<vtkDataArray> dataArray = points->GetData();

vtkIdType numberOfTriangles = mesh->GetNumberOfCells();

vtkNew<vtkIdList> faceIndex;
for(vtkIdType i = 0; i < numberOfTriangles; i++)
{
    mesh->GetCellPoints(i, faceIndex);

    vtkIdType vertexIndex;
    vtkVector3d vertex[3];

    for(int j = 0; j < 3; j++)
    {
        // get all three vertex indices of triangle number i
        vertexIndex = faceIndex->GetId(j);
        
        vertex[j][0] = dataArray->GetComponent(vertexIndex, 0);
        vertex[j][1] = dataArray->GetComponent(vertexIndex, 1);
        vertex[j][2] = dataArray->GetComponent(vertexIndex, 2);
    }

    // p0, p1, p2 are the points of the i-th triangle 
    vtkVector3d p0(vertex[0][0], vertex[0][1], vertex[0][2]);
    vtkVector3d p1(vertex[1][0], vertex[1][1], vertex[1][2]);
    vtkVector3d p2(vertex[2][0], vertex[2][1], vertex[2][2]);
}

```

Hope it helps.

---

<div class="post-metadata">

**Author:** ![pierrectl](https://discourse.vtk.org/user_avatar/discourse.vtk.org/pierrectl/32/2286_2.png) [@pierrectl](https://discourse.vtk.org/u/pierrectl)\
**Post date:** [September 30, 2020, 11:48am UTC](https://discourse.vtk.org/t/access-points-of-a-mesh/4321/3 "2020-09-30T11:48:27Z")

</div>

Thank you a lot Berti, it is exactly what I was looking for. Everything is now well integrated in my application.
