Hello, I am trying to modify the coordinates of points on the boundary of a triangulated surface (polydata made of triangle cells), in order to slightly expand some sections of the boundary in a direction that is perpendicular to local the boundary edge and parallel to the local boundary face. Basically in the green direction in this sketch.
I figured out I need to:
-
Select the boundary edges.
-
For each edge, select the two orange points and the triangle.
-
From the triangle, get the normal (the blue vector in my sketch).
-
From the edge, get the red vector.
-
With a scalar product between blue and red, get the green vector.
-
Check the correct direction of the green vector pointing outwards (I guess I can do this comparing the green vector with one vector obtained joining the center of the triangle with the center of the edge).
-
Move the coordinates of the points along a vector parallel to green and with a specified length.
(*) If I need to move just some section of the boundary, I guess I can “mark” the nodes to be moved with a scalar property.
This should do the trick, but I have the following problems.
(A) I can find all the boundary edges with vtkFeatureEdges() (with only BoundaryEdgesOn()), but as I understand it, this filter outputs a copy of the edges, not a reference to the original edges that is what I need.
(B) If I can select an edge, how can I select the points and the triangle?
Then I can easily get the coordinates and the normal, but I need help to solve (A) and (B).
Thanks very much!