[R-sig-eco] Quantifying widths of polygons

Alexander Shenkin ashenkin at ufl.edu
Wed Sep 30 12:10:08 CEST 2015


Hello all,

I am working with data on tree crowns, and this data describes points 
(verticies) around the polyhedron of the crown volume (think of the 
crown as a single volume with vertices and faces).  I can calculate 
maximum z distance between any 2 points (maximum depth) and maximum x/y 
distance (maximum width).  These are useful metrics.  I would also like 
to quantify an "average" width of the polygon in 2D space (x/y only), as 
well as a metric that would describe the "eccentricity" of the polygon. 
  But, I'm not sure how to go about doing that.

In general, I've made the polyhedrons and polygons into convex shapes.

I have considered getting a centroid, intersecting lines every 10 
degrees (for example) going through the centroid with the x/y polygon 
owin in spatstat, and then analyzing those line lengths.  But, I'm not 
sure that's the right way to go, and maybe there are already tools out 
there to do this. Any thoughts anyone might have would be very welcome!

Thanks,
Allie

(btw, I posted this on R-help (and on R-sig-ecology with no response), 
and it was suggested that a list such as this would be more 
appropriate... apologies for the cross-post)


library(rgl)
library(spatstat)
library(geometry)
  x = 
c(1.9,-1.4,1.5,1.8,2.2,0.2,0.6,-0.9,-3.7,1.3,-1.9,-3.4,3.7,2.1,-2.0,-1.9)
y = 
c(-3.1,3.0,1.1,-1.3,1.0,0.0,1.4,1.6,2.3,-3.6,-1.5,-1.3,0.3,-2.1,0.2,-0.3)
z = c(5.5,4.5,4.3,4.8,6.7,5.8,7.4,6.2,3.5,2.9,4.0,3.7,3.2,3.0,3.1,8.4)
depth = max(z) - min(z)
width_max = max(dist(matrix(c(x,y),ncol=2)))

xy_win = owin(poly=list(x=x,y=y))
conv_win = convexhull(xy_win)
# from here, maybe draw lines every 10 degrees through a centroid?
# avg_width = ??
# eccentricity = ??

# 3D plot of crown polyhedron (convex)
ps = data.frame(x=x,y=y,z=z)
crown.surf = t(convhulln(matrix(c(x,y,z),ncol=3)))
open3d()
rgl.triangles(ps[crown.surf,1],ps[crown.surf,2],ps[crown.surf,3],col=heat.colors(nrow(ps)),alpha=.2)
axes3d()



More information about the R-sig-ecology mailing list