Есть ли у кого-нибудь умная идея, как создать n прямоугольных плиток из изображения, каждый разного размера без наложения. Приведенное ниже решение ограничено n = 4.
randomTiles <- function(w, h, n){
if(sample(c(TRUE, FALSE), 1)){
tl <- c(0, sample(10:w-10, 1), 0, sample(round(h/10):h-round(h/10), 1))
bl <- c(0, sample(tl[2]:w-round(w/10), 1), tl[4], h)
tr <- c(tl[2], w, 0, tl[4])
br <- c(bl[2], w, tl[4], h)
}else{
tl <- c(0, sample(10:w-10, 1), 0, sample(round(h/10):h-round(h/10), 1))
tr <- c(tl[2], w, 0, sample(tl[4]:h-round(h/10), 1))
bl <- c(0, tl[2], tl[4], h)
br <- c(tl[2], w, tr[4], h)
}
tileFrame <- data.frame(xleft = c(tl[1], bl[1], tr[1], br[1]),
ybottom = c(tl[3], bl[3], tr[3], br[3]),
xright = c(tl[2], bl[2], tr[2], br[2]),
ytop = c(tl[4], bl[4], tr[4], br[4]),
col = rgb(runif(4), runif(4), runif(4)))
return(tileFrame)
}
h <- 100
w <- 120
n <- 4
op <- par(mfrow = c(2,2))
for(i in 1:4){
plot(h, xlim = c(0, w), ylim = c(h, 0), type = "n", xlab = "WIDTH", ylab = "HIGHT")
tiles <- randomTiles(w = w, h = h, n = n)
rect(tiles[,1], tiles[,2], tiles[,3], tiles[,4], col = tiles[,5])
}
par(op)
Спасибо за любую подсказку ...