library(ggplot2)library(dplyr)smile <- expand.grid(x = 1:8, y = 1:8) %>% filter(!(x %in% c(1, max(x)) & y %in% c(1, max(y)))) %>% filter(!(x %in% c(2, max(x) - 1) & y %in% c(1, max(y)))) %>% filter(!(x %in% c(1, max(x)) & y %in% c(2, max(y) - 1)))ggplot() + geom_tile( data = smile, aes(x = x, y = y), width = 1, height = 1, size = 1, fill = "yellow", colour = "black" ) + coord_equal() + theme_void()
library(ggplot2)library(dplyr)smile <- expand.grid(x = 1:8, y = 1:8) %>% filter(!(x %in% c(1, max(x)) & y %in% c(1, max(y)))) %>% filter(!(x %in% c(2, max(x) - 1) & y %in% c(1, max(y)))) %>% filter(!(x %in% c(1, max(x)) & y %in% c(2, max(y) - 1)))ggplot() + geom_tile( data = smile, aes(x = x, y = y), width = 1, height = 1, size = 1, fill = "yellow", colour = "black" ) + coord_equal() + theme_void()

library(ggplot2)library(dplyr)smile <- expand.grid(x = 1:8, y = 1:8) %>% filter(!(x %in% c(1, max(x)) & y %in% c(1, max(y)))) %>% filter(!(x %in% c(2, max(x) - 1) & y %in% c(1, max(y)))) %>% filter(!(x %in% c(1, max(x)) & y %in% c(2, max(y) - 1)))eyes <- data.frame(x = c(3, 6), y = c(6, 6))ggplot() + geom_tile( data = smile, aes(x = x, y = y), width = 1, height = 1, size = 1, fill = "yellow", colour = "black" ) + geom_tile( data = eyes, aes(x = x, y = y), width = 1, height = 1, fill = "black", colour = "black" ) + coord_equal() + theme_void()

library(ggplot2)library(dplyr)smile <- expand.grid(x = 1:8, y = 1:8) %>% filter(!(x %in% c(1, max(x)) & y %in% c(1, max(y)))) %>% filter(!(x %in% c(2, max(x) - 1) & y %in% c(1, max(y)))) %>% filter(!(x %in% c(1, max(x)) & y %in% c(2, max(y) - 1)))eyes <- data.frame(x = c(3, 6), y = c(6, 6))mouth <- data.frame(x = 3:6, y = c(3, 2, 2, 3))ggplot() + geom_tile( data = smile, aes(x = x, y = y), width = 1, height = 1, size = 1, fill = "yellow", colour = "black" ) + geom_tile( data = eyes, aes(x = x, y = y), width = 1, height = 1, fill = "black", colour = "black" ) + geom_tile( data = mouth, aes(x = x, y = y), width = 1, height = 1, fill = "black", colour = "black" ) + coord_equal() + theme_void()


library(rayrender)generate_ground( material = diffuse(color = "#dd99ba") ) %>% render_scene()
library(rayrender)generate_ground( material = diffuse(color = "#dd99ba") ) %>% render_scene()
library(rayrender)generate_ground( material = diffuse(color = "#dd99ba") ) %>% add_object(sphere( material = diffuse(color = "#99badd") )) %>% render_scene()
library(rayrender)generate_ground( material = diffuse(color = "#dd99ba") ) %>% add_object(sphere( material = diffuse(color = "#99badd") )) %>% add_object(sphere( x = 2, radius = 0.5, material = dielectric(color = "#badd99") )) %>% render_scene( )
library(rayrender)generate_ground( material = diffuse(color = "#dd99ba") ) %>% add_object(sphere( material = diffuse(color = "#99badd") )) %>% add_object(sphere( x = 2, radius = 0.5, material = dielectric(color = "#badd99" )) %>% render_scene( fov = 40 )
library(rayrender)generate_ground( material = diffuse(color = "#dd99ba") ) %>% add_object(sphere( material = diffuse(color = "#99badd") )) %>% add_object(sphere( x = 2, radius = 0.5, material = dielectric(color = "#badd99") )) %>% add_object(cube( x = -2, z = -1, width = 1, material = metal(color = "#99ddba") )) %>% render_scene( fov = 40 )
library(rayrender)generate_ground( material = diffuse(color = "#dd99ba") ) %>% add_object(sphere( material = diffuse(color = "#99badd") )) %>% add_object(sphere( x = 2, radius = 0.5, material = dielectric(color = "#badd99") )) %>% add_object(cube( x = -2, z = -1, width = 1, material = metal(color = "#99ddba") )) %>% add_object(pig( y = 1, z = 1, scale = 0.4, angle = c(0, -60, 0) )) %>% render_scene( fov = 40 )
library(rayrender)generate_ground( material = diffuse(color = "#dd99ba") ) %>% add_object(sphere( material = diffuse(color = "#99badd") )) %>% add_object(sphere( x = 2, radius = 0.5, material = dielectric(color = "#badd99") )) %>% add_object(cube( x = -2, z = -1, width = 1, material = metal(color = "#99ddba") )) %>% add_object(pig( y = 1, z = 1, scale = 0.4, angle = c(0, -60, 0) )) %>% render_scene( fov = 40, lookfrom = c(-1, 4, 0) )
The environment is constrained, but decisions are made randomly, rather than by the artist.
library(ggplot2)library(ggforce)n <- 5ggplot() + geom_circle(aes( x0 = rnorm(n), y0 = rnorm(n), r = runif(n) )) + theme_void()

Additional complexity doesn't mean additional time or effort.
library(ggplot2)library(ggforce)n <- 100ggplot() + geom_circle(aes( x0 = rnorm(n), y0 = rnorm(n), r = runif(n) )) + theme_void()

generativeart packagelibrary(generativeart)formula <- list( x = quote(rnorm(5) * x_i - cos(y_i^2)), y = quote(rnorm(5) * y_i^2 + sin(x_i)))generate_img( formula = formula, polar = FALSE, nr_of_img = 1)
generativeart packagelibrary(generativeart)formula <- list( x = quote(rnorm(5) * x_i - cos(y_i^2)), y = quote(rnorm(5) * y_i^2 + sin(x_i)))generate_img( formula = formula, polar = FALSE, nr_of_img = 1)

generativeart packagelibrary(generativeart)formula <- list( x = quote(rnorm(5) * x_i - cos(y_i^2)), y = quote(rnorm(5) * y_i^2 + sin(x_i)))generate_img( formula = formula, polar = TRUE, nr_of_img = 2)
Seed: 2917

generativeart packagelibrary(generativeart)formula <- list( x = quote(rnorm(5) * x_i - cos(y_i^2)), y = quote(rnorm(5) * y_i^2 + sin(x_i)))generate_img( formula = formula, polar = TRUE, nr_of_img = 2)
Seed: 3553

generativeart packagelibrary(generativeart)formula <- list( x = quote(runif(5) * x_i - cos(y_i^2)), y = quote(rnorm(5) * y_i^2 + sin(x_i)))generate_img( formula = formula, polar = TRUE, nr_of_img = 1, color = "red")

flametree packagelibrary(flametree)flametree_grow( seed = 1234, time = 1, split = 2) %>% flametree_plot()

flametree packagelibrary(flametree)flametree_grow( seed = 1234, time = 2, split = 2) %>% flametree_plot()

flametree packagelibrary(flametree)flametree_grow( seed = 1234, time = 2, split = 4) %>% flametree_plot()

flametree packagelibrary(flametree)flametree_grow( seed = 1234, time = 5, split = 4 ) %>% flametree_plot( background = "pink", palette = "ggthemes::Classic Red-Green Light")


Keyboard shortcuts
| ↑, ←, Pg Up, k | Go to previous slide |
| ↓, →, Pg Dn, Space, j | Go to next slide |
| Home | Go to first slide |
| End | Go to last slide |
| Number + Return | Go to specific slide |
| b / m / f | Toggle blackout / mirrored / fullscreen mode |
| c | Clone slideshow |
| p | Toggle presenter mode |
| t | Restart the presentation timer |
| ?, h | Toggle this help |
| Esc | Back to slideshow |