[R] Quantifying widths of polygons

Bert Gunter bgunter.4567 at gmail.com
Fri Sep 25 17:02:38 CEST 2015


This is not the right list for such substantive questions.

I suggest that you check out the "spatial" and perhaps the
"Environmetrics" Task views on CRAN and/or post to a statistical site
like stats.stackexchange.com or the R-sig-ecology mailing list
instead.

Cheers,
Bert


Bert Gunter

"Data is not information. Information is not knowledge. And knowledge
is certainly not wisdom."
   -- Clifford Stoll


On Fri, Sep 25, 2015 at 7:20 AM, Alexander Shenkin <ashenkin at ufl.edu> wrote:
> 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
>
>
> 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()
>
> ______________________________________________
> R-help at r-project.org mailing list -- To UNSUBSCRIBE and more, see
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
> and provide commented, minimal, self-contained, reproducible code.



More information about the R-help mailing list