[vtkusers] How to extract area of (triangle) Cells?

Bill Lorensen bill.lorensen at gmail.com
Fri Dec 18 11:45:27 EST 2009


David D and David E D,

Turns out vtkMeshQuality is fone. Once I understood the code.

And the problem is David D's.

Try changing:
 qualityArray->GetValue(i);
to
val =  qualityArray->GetValue(i);

Shame,

Bill


On Fri, Dec 18, 2009 at 11:32 AM, Bill Lorensen <bill.lorensen at gmail.com> wrote:
> Davie E D,
>
> It intends to add to the cell data, and it is trying, but it does not
> end up in the output cell data. I'm tracking it down now.
>
> Keep you posted,
>
> Bill
>
> On Fri, Dec 18, 2009 at 11:29 AM, David E DeMarle
> <dave.demarle at kitware.com> wrote:
>> I suppose the reason it is not there in the first place is the design
>> goal of not adding overhead. That class is pretty deep down in VTK.
>> Adding a method to the class grows the class's function lookup table
>> which makes vtkTriangle's infinitesimally slower to use. Since there
>> are usually many Triangles, and they are used in many places that
>> infinitesimal overhead can add up. Thus, adding that convenience
>> method then was left to user's application which can do it externally
>> to the class.
>>
>> That said I still don't have a problem with adding it. Others can say
>> no if they think the added overhead is not worth the added
>> convenience.
>>
>> David E DeMarle
>> Kitware, Inc.
>> R&D Engineer
>> 28 Corporate Drive
>> Clifton Park, NY 12065-8662
>> Phone: 518-371-3971 x109
>>
>> On Fri, Dec 18, 2009 at 11:01 AM, Bill Lorensen <bill.lorensen at gmail.com> wrote:
>>> David,
>>>
>>> I looked at the source for vtkMeshQuality and I think you have
>>> uncovered a bug. I see vtkDoubleArray named "Quality" added to the
>>> cell data, but I do not see where any data is added to the array.
>>>
>>> I noticed that that Graphics/Texting/Cxx/MeshQuality does not access
>>> the CellData.
>>>
>>> If it's not tested it's broken,
>>>
>>> Bill
>>>
>>> On Fri, Dec 18, 2009 at 8:10 AM, David Doria <daviddoria+vtk at gmail.com> wrote:
>>>> On Thu, Dec 17, 2009 at 11:14 AM, Bryn Lloyd <blloyd at vision.ee.ethz.ch>
>>>> wrote:
>>>>>
>>>>> David,
>>>>>
>>>>> Not sure, but it works in paraview doesn't it?
>>>>>
>>>>> 1. Maybe inverted triangles (there was an issue in the past with inverted
>>>>> tets).
>>>>>
>>>>> 2. Maybe you don't have triangles, but strips?
>>>>>
>>>>> /Bryn
>>>>>
>>>>
>>>> Bryn,
>>>> Hmm, I tried it with a sphere source run through vtkTriangleFilter. This
>>>> should produce good triangles, right?
>>>>   vtkSmartPointer<vtkSphereSource> sphereSource =
>>>> vtkSmartPointer<vtkSphereSource>::New();
>>>>   sphereSource->Update();
>>>>
>>>>   vtkSmartPointer<vtkTriangleFilter> triangleFilter =
>>>> vtkSmartPointer<vtkTriangleFilter>::New();
>>>>   triangleFilter->SetInputConnection(sphereSource->GetOutputPort());
>>>>   triangleFilter->Update();
>>>>
>>>>   //vtkPolyData* mesh = sphereSource->GetOutput();
>>>>   vtkPolyData* mesh = triangleFilter->GetOutput();
>>>>   cout << "There are " << mesh->GetNumberOfCells() << " cells." << endl;
>>>>
>>>>   vtkSmartPointer<vtkMeshQuality> qualityFilter =
>>>> vtkSmartPointer<vtkMeshQuality>::New();
>>>>   qualityFilter->SetInput(mesh);
>>>>   qualityFilter->SetTriangleQualityMeasureToArea();
>>>>   qualityFilter->Update();
>>>>
>>>>   vtkDataSet* qualityMesh = qualityFilter->GetOutput();
>>>>   vtkSmartPointer<vtkDoubleArray> qualityArray =
>>>> vtkDoubleArray::SafeDownCast(qualityMesh->GetCellData()->GetArray("Quality"));
>>>>
>>>>   cout << "There are " << qualityArray->GetNumberOfTuples() << " values." <<
>>>> endl;
>>>>
>>>>   for(unsigned int i = 0; i < qualityArray->GetNumberOfTuples(); i++)
>>>>     {
>>>>     double val;
>>>>     qualityArray->GetValue(i);
>>>>     cout << "value " << i << " : " << val << endl;
>>>>     }
>>>> The output is still
>>>> ...
>>>> value 90 : 5.77804e-269
>>>> value 91 : 5.77804e-269
>>>> value 92 : 5.77804e-269
>>>> ...
>>>> Any thoughts?
>>>> Thanks,
>>>>
>>>> David
>>>> _______________________________________________
>>>> Powered by www.kitware.com
>>>>
>>>> Visit other Kitware open-source projects at
>>>> http://www.kitware.com/opensource/opensource.html
>>>>
>>>> Please keep messages on-topic and check the VTK FAQ at:
>>>> http://www.vtk.org/Wiki/VTK_FAQ
>>>>
>>>> Follow this link to subscribe/unsubscribe:
>>>> http://www.vtk.org/mailman/listinfo/vtkusers
>>>>
>>>>
>>> _______________________________________________
>>> Powered by www.kitware.com
>>>
>>> Visit other Kitware open-source projects at http://www.kitware.com/opensource/opensource.html
>>>
>>> Please keep messages on-topic and check the VTK FAQ at: http://www.vtk.org/Wiki/VTK_FAQ
>>>
>>> Follow this link to subscribe/unsubscribe:
>>> http://www.vtk.org/mailman/listinfo/vtkusers
>>>
>>
>



More information about the vtkusers mailing list