[R] Calculating angle of a polyline

William Dunlap wdunlap at tibco.com
Tue Jan 30 18:05:37 CET 2018


I like to use complex numbers for 2-dimensional geometry.  E.g.,

> polyAngles2
function (xV, yV)
{
    stopifnot((length(xV) == length(yV)) && (length(xV) >= 3))
    z <- complex(re = xV, im = yV)
    c(NA, diff(Arg(diff(z))), NA) # radians, positive is counter-clockwise
}
> x <- c(0:3)
> y <- c(0,0,1,1)
> polyAngles2(x,y) / pi * 180
[1]  NA  45 -45  NA



Bill Dunlap
TIBCO Software
wdunlap tibco.com

On Tue, Jan 30, 2018 at 7:09 AM, Eric Berger <ericjberger at gmail.com> wrote:

> Assuming your polyline is defined by two vectors, one for the x
> coordinates, one for the y coordinates, you can try the following
>
> library(NISTunits)
> polyangles <- function(xV,yV) {
>   stopifnot( (length(xV)==length(yV)) && (length(xV) >= 3))
>   v <- function(i) { c( xV[i]-xV[i-1], yV[i]-yV[i-1])}
>   vlen <- function(v) { sqrt(sum(v*v)) }
>
>   lV <- rep(NA_real_,length(xV))
>   for ( i in 2:(length(xV)-1) )
>     lV[i] <- acos( sum(v(i)*v(i+1))/(vlen(v(i))*vlen(v(i+1))) )
>   angleV <- NISTunits::NISTradianTOdeg(lV)
>   angleV
> }
>
> # example
> x <- c(0:3)
> y <- c(0,0,1,1)
> polyangles( x, y )
>
> # NA 45.0 45.0 NA
>
> Note, I have included the NA's at the beginning and end of the polyline as
> a reminder that there is no angle defined there.
>
> HTH,
> Eric
>
>
> On Tue, Jan 30, 2018 at 4:34 PM, Jeff Newmiller <jdnewmil at dcn.davis.ca.us>
> wrote:
>
> > A polyline by definition has many angles, so your question is ill-formed.
> > And this is a question about math, not R, so is off topic here. I suggest
> > reading Wikipedia.
> > --
> > Sent from my phone. Please excuse my brevity.
> >
> > On January 29, 2018 11:10:02 PM PST, javad bayat <j.bayat194 at gmail.com>
> > wrote:
> > >Dear R users
> > >I am trying to find a formula to calculate the angle of a polyline. Is
> > >there a way to do this?
> > >Many thanks.
> >
> > ______________________________________________
> > 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.
> >
>
>         [[alternative HTML version deleted]]
>
> ______________________________________________
> 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.
>

	[[alternative HTML version deleted]]



More information about the R-help mailing list