[vtk-developers] Bugs in vtkWedge

Tadeu Manoel tadeu at esss.com.br
Fri May 12 14:49:02 EDT 2006


There is a bug in vtkWedge::EvaluatePosition, it can tell a point is inside
when in reality it is outside.

E.g, try to create a vtkWedge with the following points:
(8,0,0), (16,0,0), (16,8,0), (8,0,8), (16,0,8), (16,8,8)

And try to EvaluatePosition for point (17,6,4). It will return 1, telling it
is inside.

A solution is to change the following code:

  if ( pcoords[0] >= -0.001 && pcoords[0] <= 1.001 &&
  pcoords[1] >= -0.001 && pcoords[1] <= 1.001 &&
  pcoords[2] >= -0.001 && pcoords[2] <= 1.001 )

To:

   if ( pcoords[0] >= -0.001 && pcoords[1] >= -0.001 &&
       (pcoords[0] + pcoords[1]) <= 1.001 &&
        pcoords[2] >= -0.001 && pcoords[2] <= 1.001 )



There is another bug in its faces array (and with GetFace and GetFaceArray):
The faces normals are pointing inside, instead of outside (as of all other
3D cells).
Instead of:

static int faces[5][4] = { {0,1,2,-1}, {3,5,4,-1},
                           {0,3,4,1}, {1,4,5,2}, {2,5,3,0} };

It should be:

static int faces[5][4] = { {0,2,1,-1}, {3,4,5,-1},
                           {0,1,4,3}, {1,2,5,4}, {2,0,3,5} };



--
Edson Tadeu M. Manoel
ESSS - Engineering Simulation and Scientific Software
http://www.esss.com.br
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://public.kitware.com/pipermail/vtk-developers/attachments/20060512/a8c9fe44/attachment.html>


More information about the vtk-developers mailing list