Advertisement
Guest User

Untitled

a guest
May 31st, 2016
52
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.70 KB | None | 0 0
  1. library(animation)
  2. library(plot3D)
  3.  
  4. # Функция генерации матрицы в случайных промежутках
  5. getMatrix <- function(size, min, max){
  6. return(
  7. matrix(sample(min:max,size^2,replace=T),
  8. nrow = size,
  9. ncol = size)
  10. )
  11. }
  12.  
  13.  
  14. Laba1 <- function (size) {
  15.  
  16. # Матрицы времени - старта/финиша и скорости постройки
  17. time_start <-getMatrix(size, 0, 4)
  18. time_finish <-getMatrix(size, 4, 10)
  19. time_speed <-getMatrix(size, 1, 4)
  20.  
  21. # Максимально возможная высота здания для масштаба
  22. max_height <- max(time_finish)*4
  23.  
  24. # Высота зданий изначально 0
  25. z <- getMatrix(size, 0, 0)
  26.  
  27. # Цвета зданий
  28. pallete <- rainbow(size^2, alpha = 0.3)
  29.  
  30. # Подсчитываем количество кадров, как максимальная разница времени
  31. cadrs <- 0
  32. for(i in 1: size^2){
  33. needCadrs <- (time_finish[i]-time_start[i])
  34. if(needCadrs > cadrs){
  35. cadrs <- needCadrs
  36. }
  37. }
  38.  
  39.  
  40. # Анимация
  41. saveHTML({
  42.  
  43. for (i in 1:cadrs){
  44.  
  45. # Постройки анимации
  46. hist3D( z = z, border = "grey", space = 0.1, zlim=c(0, max_height), col=pallete, facets = T)
  47.  
  48. # Увеличение зданий на их высоту
  49. for (s in 1:size^2) {
  50. if(i >= time_start[s] && i <= time_finish[s]){
  51. z[s] <- time_start[s] + i*time_speed[s]
  52. }
  53. }
  54.  
  55. }
  56.  
  57. },
  58. img.name="laba1",
  59. htmlfile="laba1.html",
  60. imgdir="laba1",
  61. autoplay=F
  62. )
  63.  
  64. }
  65.  
  66. # Запуск
  67. Laba1(3)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement