Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- library(animation)
- library(plot3D)
- # Функция генерации матрицы в случайных промежутках
- getMatrix <- function(size, min, max){
- return(
- matrix(sample(min:max,size^2,replace=T),
- nrow = size,
- ncol = size)
- )
- }
- Laba1 <- function (size) {
- # Матрицы времени - старта/финиша и скорости постройки
- time_start <-getMatrix(size, 0, 4)
- time_finish <-getMatrix(size, 4, 10)
- time_speed <-getMatrix(size, 1, 4)
- # Максимально возможная высота здания для масштаба
- max_height <- max(time_finish)*4
- # Высота зданий изначально 0
- z <- getMatrix(size, 0, 0)
- # Цвета зданий
- pallete <- rainbow(size^2, alpha = 0.3)
- # Подсчитываем количество кадров, как максимальная разница времени
- cadrs <- 0
- for(i in 1: size^2){
- needCadrs <- (time_finish[i]-time_start[i])
- if(needCadrs > cadrs){
- cadrs <- needCadrs
- }
- }
- # Анимация
- saveHTML({
- for (i in 1:cadrs){
- # Постройки анимации
- hist3D( z = z, border = "grey", space = 0.1, zlim=c(0, max_height), col=pallete, facets = T)
- # Увеличение зданий на их высоту
- for (s in 1:size^2) {
- if(i >= time_start[s] && i <= time_finish[s]){
- z[s] <- time_start[s] + i*time_speed[s]
- }
- }
- }
- },
- img.name="laba1",
- htmlfile="laba1.html",
- imgdir="laba1",
- autoplay=F
- )
- }
- # Запуск
- Laba1(3)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement