How to calculate an irregular shape area?

7 visualizaciones (últimos 30 días)
Wenlong
Wenlong el 22 de Jun. de 2012
Editada: Karan Singh el 31 de En. de 2025
Dear all,
I have a shape model in 3D space. I project it onto a 2D plane. Now I have to calculate the area of its projection area. Since the area is irregular, how can I calculate it? Is there any method in matlab can help me to make it?
Many thanks for your help.
Best wishes Wenlong
  3 comentarios
Izaro
Izaro el 24 de Mayo de 2019
Movida: DGM el 12 de Dic. de 2024
I have the same problem. How do you solve it?
Thanks
Mathieu NOE
Mathieu NOE el 13 de Dic. de 2024
hello
as suggested by @Walter Roberson polyarea does the job even for irregular or concave shapes

Iniciar sesión para comentar.

Respuestas (1)

Karan Singh
Karan Singh el 31 de En. de 2025
Editada: Karan Singh el 31 de En. de 2025
Hi Wenlong and Izaro,
The answer is already covered in the comments above; however, I can assume that you might be working with different types of projections. A few come to mind:
  • If your projection is a scattered set of plots, you can use "alphaShape" to create a boundary and then compute the area. alphaShape
  • If it is a single polygon, you can use "boundary" and then "polyarea." polyarea
  • If it contains holes, use "polyshape" and "rmholes" to remove holes and get the area. Maybe useful depends on cases.
[x, y, z] = sphere(50);
vertices_3d = [x(:), y(:), z(:)];
vertices_2d = vertices_3d(:, 1:2); % projection
shp = alphaShape(vertices_2d, 1); %alphaShape
Warning: Duplicate data points have been detected and removed.
area_alpha = area(shp);
k = boundary(vertices_2d(:,1), vertices_2d(:,2), 0.8); % polyarea
boundary_vertices = vertices_2d(k, :);
area_poly = polyarea(boundary_vertices(:,1), boundary_vertices(:,2));
fprintf('Area via alphaShape: %.4f\n', area_alpha);
Area via alphaShape: 3.1333
fprintf('Area via boundary: %.4f\n', area_poly);
Area via boundary: 3.1333

Categorías

Más información sobre Bounding Regions en Help Center y File Exchange.

Community Treasure Hunt

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

Start Hunting!

Translated by