How is vertex normal defined for 3-D surface triangulation?

8 Ansichten (letzte 30 Tage)
Bruce Elliott
Bruce Elliott am 17 Mär. 2020
Kommentiert: Bruce Elliott am 18 Mär. 2020
Does the vertexNormal method of a triangulation object return the normalized numerical average of the adjacent face normal vectors? I believe that's a common definition, but I'd like to confirm it.
Thanks.
  2 Kommentare
darova
darova am 18 Mär. 2020
You can check this with norm()
Bruce Elliott
Bruce Elliott am 18 Mär. 2020
Well yes, that's true!
I did it, and found that the differences between the built-in vertexNormal vectors and those I computed by averaging the normal vectors of the adjacent faces were at the level of machine precision. In other words, they were the same, as expected.
For the curious, here is the code I used:
[F,P] = freeBoundary(delaunayTriangulation(rand(50,1),rand(50,1),rand(50,1)));
TR = triangulation(F,P);
normVecsBuiltIn = vertexNormal(TR);
vtxAtt = vertexAttachments(TR);
fprintf('\n');
for vertIdx = 1:size(TR.Points,1)
adjFaces = vtxAtt{vertIdx};
meanNorm = mean(faceNormal(TR,adjFaces'));
meanNorm = meanNorm/norm(meanNorm);
diffVec = normVecsBuiltIn(vertIdx,:)-meanNorm;
fprintf('Vert. ID: %2u - Vect. Diff: %e\n',vertIdx,norm(diffVec));
end

Melden Sie sich an, um zu kommentieren.

Antworten (0)

Kategorien

Mehr zu Delaunay Triangulation finden Sie in Help Center und File Exchange

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by