[vtkusers] Triangle Geometry and Vertices

David Gobbi david.gobbi at gmail.com
Sun Dec 12 16:17:11 EST 2010


Hi Paulo,

You can use vtkMeshQuality to compute the quality of a mesh, but I don't
think there is anything in VTK for improving the quality of a mesh.
 Hopefully someone will tell me that I'm wrong about this...

  David


On Sun, Dec 12, 2010 at 1:58 PM, Paulo Henrique Junqueira Amorim <
paulojamorim at gmail.com> wrote:
> Thank's David and Jim.
>
> Generate a triangle is really what I wanted.
>
> By the same token, there is some way from a vtkPolyData, generate a mesh
of
> triangles more regular?
>
> I would like to improve the mesh for use in finite elements.
>
> Ragards,
> Paulo
>
>
>
> On 12 December 2010 14:04, David Gobbi <david.gobbi at gmail.com> wrote:
>>
>> I'm going to throw in a little addition.  You say "triangle verts" so
>> I'm guessing
>> you want your cells to be triangles, not verts.  If that is the case,
>> the code you
>> really need is as follows:
>>
>>  ids = vtkIdList()
>>  ids.SetNumberOfIds(3)
>>
>>  for i in xrange(3):
>>     ids.SetId(i, i)
>>     points.InsertNextPoint(X[i],Y[i],Z[i])
>>
>>  vertices.InsertNextCell(ids) # call for every cell, not for every point
>>
>>  polydata = vtkPolyData()
>>  polydata.SetPoints(points)
>>  polydata.SetPolys(vertices)  # use SetPolys for triangles
>>  polydata.Update()
>>
>> The above code will create a polydata that has one triangle.
>>
>>  David
>>
>>
>> On Sun, Dec 12, 2010 at 8:43 AM, David Gobbi <david.gobbi at gmail.com>
>> wrote:
>> >
>> > On Sun, Dec 12, 2010 at 6:39 AM, Jim Peterson <jimcp at cox.net> wrote:
>> >>
>> >> Paulo,
>> >> I am no Python expert, but if I understand the sequence of events, you
>> >> should create the polydata object before writing the file.
>> >>
>> >> Hope that helps,
>> >> Jim
>> >
>> > What Jim said.  Also, the id list is never filled in.  The following
>> > code is wrong:
>> >
>> > ids = vtkIdList()
>> > ids.SetNumberOfIds(3)
>> >
>> > for i in xrange(3):
>> >     ids.SetId(i, i)
>> >     points.InsertNextPoint(X[i],Y[i],Z[i])
>> >     vertices.InsertNextCell(ids)
>> >
>> > To fix it, you have two choices.  You can have all three verts in the
>> > same cell:
>> >
>> > ids = vtkIdList()
>> > ids.SetNumberOfIds(3)
>> >
>> > for i in xrange(3):
>> >     ids.SetId(i, i)
>> >     points.InsertNextPoint(X[i],Y[i],Z[i])
>> >
>> > vertices.InsertNextCell(ids)
>> > Or you can have each vert in its own cell:
>> >
>> > ids = vtkIdList()
>> > ids.SetNumberOfIds(1)
>> >
>> > for i in xrange(3):
>> >     ids.SetId(0, i)
>> >     points.InsertNextPoint(X[i],Y[i],Z[i])
>> >     vertices.InsertNextCell(ids)
>> >
>> > In the "for" loop, you were calling vertices.InsertNextCell(ids)
>> > when "ids" still had some unititialized values, since the three
>> > ids values were not filled in until the third loop iteration.
>> >
>> >   - David
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.vtk.org/pipermail/vtkusers/attachments/20101212/a7d63e5b/attachment.htm>


More information about the vtkusers mailing list