Azzera filtri
Azzera filtri

how to find the area of the triangles formed as a result of delaunay triangulation

43 visualizzazioni (ultimi 30 giorni)
I have applied delaunay triangulation to my image. i have got 160 triangles. i need to find area of each triangle. Kindly help me with code. only after i can proceed with my prooj.i am new to matlab.

Risposta accettata

Roger Stafford
Roger Stafford il 3 Mar 2014
If a triangle is in two dimensional space with vertices at (x1,y1), (x2,y2), and (x3,y3), its area is given by:
area = 1/2*abs((x2-x1)*(y3-y1)-(x3-x1)*(y2-y1));
or
area = 1/2*abs(det([x1,y1,1;x2,y2,1;x3,y3,1]));
If it is in three dimensions with vertices at P1 = [x1,y1,z1], P2 = [x2,y2,z2], P3 = [x3,y3,z3], its area is:
area = 1/2*norm(cross(P2-P1,P3-P1));
These formulas are more accurate for numerical computation than those which depend on the lengths of the three sides of the triangle.
Of course you must adapt these formulas for use with your 160 triangles, either using the necessary for-loop or possibly a vectorized expression.

Più risposte (1)

Christopher Rock
Christopher Rock il 2 Ago 2018
Vectorised code based off Roger Stafford's answer.
function A = triarea(t, p)
% A = TRIAREA(t, p) area of triangles in triangulation
Xt = reshape(p(t, 1), size(t)); % X coordinates of vertices in triangulation
Yt = reshape(p(t, 2), size(t)); % Y coordinates of vertices in triangulation
A = 0.5 * abs((Xt(:, 2) - Xt(:, 1)) .* (Yt(:, 3) - Yt(:, 1)) - ...
(Xt(:, 3) - Xt(:, 1)) .* (Yt(:, 2) - Yt(:, 1)));

Categorie

Scopri di più su Delaunay Triangulation in Help Center e File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by