VTK 获取三角形的面积

 
 
double getArea(double pt1[3], double pt2[3], double pt3[3])
{
    vtkSmartPointer<vtkPoints> points = vtkSmartPointer<vtkPoints>::New();
    points->InsertNextPoint ( pt1[0], pt1[1], pt1[2]);
    points->InsertNextPoint ( pt2[0], pt2[1], pt2[2] );
    points->InsertNextPoint ( pt3[0], pt3[1], pt3[2] );

    vtkSmartPointer<vtkTriangle> triangle = vtkSmartPointer<vtkTriangle>::New();
    triangle->GetPointIds()->SetId ( 0, 0 );
    triangle->GetPointIds()->SetId ( 1, 1 );
    triangle->GetPointIds()->SetId ( 2, 2 );

    vtkSmartPointer<vtkCellArray> triangles = vtkSmartPointer<vtkCellArray>::New();
    triangles->InsertNextCell(triangle);

    vtkSmartPointer<vtkPolyData> trianglePolyData = vtkSmartPointer<vtkPolyData>::New();
    trianglePolyData->SetPoints ( points );
    trianglePolyData->SetPolys ( triangles );

    vtkSmartPointer<vtkMassProperties> polygonProperties = vtkSmartPointer<vtkMassProperties>::New();
    polygonProperties->SetInputData(trianglePolyData);
    polygonProperties->Update();
    return polygonProperties->GetSurfaceArea();
}


猜你喜欢

转载自blog.csdn.net/project4gogo/article/details/53482600