Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

find area of 3D polygon

Given a matrix nx3 that represents n points in 3D space. All points lie on a plane. The plane is given by its normal and a point lying on it. Is there a Matlab function or any Matlabby way to find the area directly from the matrix?

What i was trying to do is write a function that first computes the centroid,c, of the n-gon. Then form triangles : (1,2,c),(2,3,c),...,(n,1,c). Compute their area and sum up. But then i had to organise the polygon points in a cyclic order as they were unordered which i figured was hard. Is there a easy way to do so?

Is there a easier way in Matlab to just call some function on the matrix?

like image 566
giffy Avatar asked Jun 14 '15 01:06

giffy


1 Answers

Here is perhaps an easier method. First suppose that your plane is not parallel to the z-axis. Then project the polygon down to the xy-plane simply by removing the 3rd coordinate. Now compute the area A' in the xy-plane by the usual techniques.

If your plane makes an angle θ with the xy-plane, then your 3D area A = A' / cos θ.

If your plane is parallel to the z-axis, do the same computation w.r.t. the y-axis instead, projecting to the xz-plane.

like image 112
Joseph O'Rourke Avatar answered Nov 10 '22 17:11

Joseph O'Rourke