How to calculate an irregular shape area?

6 visualizzazioni (ultimi 30 giorni)
Wenlong
Wenlong il 22 Giu 2012
Modificato: Karan Singh il 31 Gen 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 Commenti
Izaro
Izaro il 24 Mag 2019
Spostato: DGM il 12 Dic 2024
I have the same problem. How do you solve it?
Thanks
Mathieu NOE
Mathieu NOE il 13 Dic 2024
hello
as suggested by @Walter Roberson polyarea does the job even for irregular or concave shapes

Accedi per commentare.

Risposte (1)

Karan Singh
Karan Singh il 31 Gen 2025
Modificato: Karan Singh il 31 Gen 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

Categorie

Scopri di più su Bounding Regions 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