Wagner Jorge Wagner Jorge - 3 months ago 25
R Question

Random number inside regular polygon

I need to generate

n
points inside of n-gon distributed uniformly. Additionally I want to store in matrix
nx2
.

I thank your help.

Answer

You can use spsample in sp package:

library(sp)

pol <- matrix(c(0 ,0 ,2 ,0 ,2 ,2 ,0 , 2, 0, 0), byrow = T, ncol = 2)
pol <- Polygon(pol)
spsample(pol, 100, type = "random")

Example:

pol <- matrix(c(5 ,1.5 ,1 ,8 ,3 ,12 ,8 , 10, 14, 5), byrow = T, ncol = 2)
pol <- Polygon(pol)
s <- spsample(pol, 1000, type = "random")
pol@coords %>% as.data.frame() %>% set_names(c("x", "y")) %>%
  ggplot(aes(x, y)) + geom_polygon(color = "black") + 
  geom_point(data = s@coords %>% data.frame() %>% set_names(c("x", "y")), colour = "white")

enter image description here

Comments