Re: Hello, How I can calculate an area (or surface) of a points list? And perimeter?
- To: mathgroup@smc.vnet.net
- Subject: [mg11748] Re: Hello, How I can calculate an area (or surface) of a points list? And perimeter?
- From: jtischer@pitagoras.univalle.edu.co
- Date: Thu, 26 Mar 1998 03:09:16 -0500
- Organization: Deja News - The Leader in Internet Discussion
- References: <6esdr8$5d5@smc.vnet.net>
Hi Joan,
have you thought about using DelaunayTriangulation
(<<DiscreteMath`ComputationalGeometry`)? That does the job, if your
surface is projectable onto a plane. In that case you first project
your points, then use DelaunayTriangulation to get a nice triangulation
of the plane point set, and finally add up the areas of the resulting
(three-dimensional) triangles. An example follows:
In[1]:= li= Table[With[{x=Random[],y=Random[]},{x,y,2Sin[x y]}],{50}];
In[2]:= proj=li[[Range[50],{1,2}]];
In[3]:= <<DiscreteMath`
In[4]:= dt=DelaunayTriangulation[proj];
(*You can plot your surface with TriangularSurfacePlot[li], also in
DiscreteMath`ComputationalGeometry.*)
In[5]:= tri[n_,m_]:={n,m,First[Intersection[dt[[n,2]],dt[[m,2]]]]}
In[6]:= tri[{n_,li_List}]:=tri[n,#]&/@li
In[7]:= triangulos=Union[Sort/@Flatten[tri/@dt,1]];
In[8]:= norm[x_] = Sqrt[x . x];
In[9]:= dist[x_,y_]:=norm[x-y]
In[10]:= area[{x_, y_, z_}] :=
With[{a = dist[x, y], b = dist[y, z], c = dist[z, x]},
1/4 Sqrt[(a + b - c)(a - b + c)(-a + b + c)(a + b + c)]]
In[11]:= area[{n_Integer,m_Integer,o_Integer}]:=
area[{li[[n]],li[[m]],li[[o]]}]
In[12]:= Plus@@area/@triangulos
Out[12]= 1.5032
(* End of example *)
As to the perimeter, if what you want is the length of the surrounding
polygon, the idea is to search for connecting segments which occur just
once in the triangles. If you need it and don't see how to do it, let
me know.
Jurgen
In article <6esdr8$5d5@smc.vnet.net>,
joan_garcia@hotmail.com (Joan Garcia) wrote:
>
> Hello,
>
> I don't know how I can calculate an area (or surface) of a points list.
> How I can to do this?
>
> I have a points list, this list define a surface (similar a star), I
> want know the surface.
>
> Thanks
>
>
-----== Posted via Deja News, The Leader in Internet Discussion ==-----
http://www.dejanews.com/ Now offering spam-free web-based newsreading