When I want to calculate the coordinates of a location (e.g., a nest or burrow) based on distance and bearing from a grid point, this function helps me avoid writing down SOH-CAH-TOA every time. Just note that the bearing in this case is from the grid point (known location) to the unknown location.

polar2cart<-function(x,y,dist,bearing,as.deg=FALSE){

## Translate Polar coordinates into Cartesian coordinates

## based on starting location, distance, and bearing

## as.deg indicates if the bearing is in degrees (T) or radians (F)

if(as.deg){

##if bearing is in degrees, convert to radians

bearing=bearing*pi/180

}

newx<-x+dist*sin(bearing) ##X

newy<-y+dist*cos(bearing) ##Y

return(list("x"=newx,"y"=newy))

}

##Example

oldloc=c(0,5)

bearing=200 #degrees

dist=5

newloc<-polar2cart(oldloc[1],oldloc[2],dist,bearing,TRUE)

plot(oldloc[1],oldloc[2],xlim=c(-10,10),ylim=c(-10,10))

points(newloc$x,newloc$y,col="red")

*Related*

To

**leave a comment** for the author, please follow the link and comment on his blog:

** Quantitative Ecology**.

R-bloggers.com offers

**daily e-mail updates** about

R news and

tutorials on topics such as: visualization (

ggplot2,

Boxplots,

maps,

animation), programming (

RStudio,

Sweave,

LaTeX,

SQL,

Eclipse,

git,

hadoop,

Web Scraping) statistics (

regression,

PCA,

time series,

trading) and more...

If you got this far, why not

__subscribe for updates__ from the site? Choose your flavor:

e-mail,

twitter,

RSS, or

facebook...