[R] Calculating angle of a polyline

Eric Berger ericjberger at gmail.com
Tue Jan 30 16:09:31 CET 2018


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]]



More information about the R-help mailing list