[vtkusers] getcellneighbours of polydata
rashedk
rashed.vtk at googlemail.com
Tue Jun 1 19:06:03 EDT 2010
Excellent Andy! All this now makes sense. Thanks for all your help. greatly
appreciated!
Rashed.
Andy Bauer wrote:
>
> I'm pretty sure that GetCellNeighbors is the function that you want. The
> confusion probably stems from the fact that people may define a neighbor
> of
> a cell differently. By specifying what points are shared between the
> cells,
> this clears up that confusion. As an example, if you have triangle cell A
> with point X, Y, and Z, you could find the "edge" neighbors (neighbors
> that
> share an edge of the triangle) by using GetCellNeighbor(A, {X,Y}, <list of
> cell ids>), GetCellNeighbor(A, {X,Z}, <list of cell ids>),
> GetCellNeighbor(A, {Y,Z}, <list of cell ids>). To get the "point"
> neighbors
> it would be GetCellNeighbor(A, {X}, <list of cell ids>),GetCellNeighbor(A,
> {Y}, <list of cell ids>),GetCellNeighbor(A, {Z}, <list of cell ids>).
>
> The GetCellNeighbor function doesn't require that the return cells don't
> use
> other points, just that the returned cells must use the list points in the
> input.
>
> Andy
>
> Date: Tue, 1 Jun 2010 03:56:18 -0700 (PDT)
>> From: rashedk <rashed.vtk at googlemail.com>
>> Subject: Re: [vtkusers] getcellneighbours of polydata
>> To: vtkusers at vtk.org
>> Message-ID: <28740248.post at talk.nabble.com>
>> Content-Type: text/plain; charset=us-ascii
>>
>>
>> It is strange why this function is called getcellneighbours, if you what
>> you
>> mentioned is correct. It is then really returning cells which use (ALL)
>> the
>> points specified. I am still looking for a function that would return
>> cellIds of a cell's neighbours, surely there must be some function out
>> there!
>>
>> Rashed.
>>
>>
>> Andy Bauer wrote:
>> >
>> > You may be getting confused by the fact that a cell is not considered
>> > to be its own neighbor. The reason your code didn't work is that you
>> > are passing in all the points of cellId to get its points. Unless you
>> > have another cell that hsa those same exact points (and maybe others)
>> > you won't get any cells.
>> >
>> > As an example, if you wanted to get all cells which use pointId,
>> > except for cellId the code would look like:
>> > vtkSmartPointer<vtkIdList> ptIds =
>> > vtkSmartPointer<vtkIdList>::New();
>> > sphereSource->GetOutput()->GetCellPoints(cellId, ptIds);
>> > vtkSmartPointer<vtkIdList> pointIds =
>> > vtkSmartPointer<vtkIdList>::New();
>> > pointIds->InsertNextId(ptIds->GetId(0));
>> >
>> > sphereSource->GetOutput()->GetCellNeighbors(cellId, pointIds,
>> > neighborCellIds);
>> > std::cout << "There are " << neighborCellIds->GetNumberOfIds() << "
>> > neighbors." << std::endl;
>> >
>> > If you wanted the neighbors of cellId to share more points (e.g. edge
>> > neighbor, face neighbor) you'd have to add in more points to pointIds.
>> >
>> > On Fri, May 28, 2010 at 12:38 PM, rashedk <rashed.vtk at
>> > googlemail.com <http://www.vtk.org/mailman/listinfo/vtkusers>> wrote:
>> >>*
>> > *>* Now that's interesting. It seems we are having the same problem
>> then.
>> > Does
>> > *>* that mean there isn't an easy way of getting a cell's neighbours?
>> > *>*
>> > *>* Rashed.
>> > *
>> > The documentation of this function:
>> > void vtkDataSet::GetCellNeighbors
>> >
>> > says:
>> > Topological inquiry to get all cells using list of points exclusive of
>> > cell specified (e.g., cellId). Note that the list consists of only
>> > cells that use ALL the points provided.
>> >
>> > I don't understand what that means? After looking at some use cases in
>> > VTK, I came up with this:
>> >
>> > vtkSmartPointer<vtkIdList> ptIds =
>> > vtkSmartPointer<vtkIdList>::New();
>> > sphereSource->GetOutput()->GetCellPoints(cellId, ptIds);
>> >
>> > sphereSource->GetOutput()->GetCellNeighbors(cellId, ptIds,
>> > neighborCellIds);
>> > std::cout << "There are " << neighborCellIds->GetNumberOfIds() << "
>> > neighbors." << std::endl;
>> >
>> > It doesn't segfault, but it says there are 0 neighbors, which is not
>> > true (it's a sphere!).
>> >
>> > Can anyone explain what is going on here?
>> >
>> > Thanks,
>> >
>>
>>
>
> _______________________________________________
> 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
>
>
--
View this message in context: http://old.nabble.com/getcellneighbours-of-polydata-tp28716990p28748449.html
Sent from the VTK - Users mailing list archive at Nabble.com.
More information about the vtkusers
mailing list