This worksheet is a thought-experiment to see how some African nations camouflage patterns (often designed in the 1980’s or 1990’s) would look if rendered as a modern digital pattern, or as a new take on the legacy Portugese Lizard patterns of the 1970’s.

Zimbabwe

set.seed(123)
n <- 40

df <- expand.grid(x = 1:n, y = 1:n)

colors <- c("#CDC390", "#78543c", "#516444", "#404C34")  
df$color <- sample(colors, nrow(df), replace = TRUE)

ggplot(df, aes(x, y, fill = color)) +
  geom_raster() +
  scale_fill_identity() +
  theme_void()

n <- 100

df <- expand.grid(x = 1:n, y = 1:n)

# Generate stripe-like effect using sine waves + randomness
df <- df %>%
  mutate(
    stripe = sin(y / 5) + runif(nrow(df), -0.5, 0.5), 
    color_group = cut(stripe, breaks = 4, labels = FALSE)  
  )

df$color <- colors[df$color_group]

ggplot(df, aes(x, y, fill = color)) +
  geom_raster() +
  scale_fill_identity() +
  theme_void()

South Africa Soldier 2000 Pattern

set.seed(123)
n <- 40

df <- expand.grid(x = 1:n, y = 1:n)

colors <- c("#484647", "#796149", "#ACB799", "#5A7360", "#38503B")  
df$color <- sample(colors, nrow(df), replace = TRUE)

ggplot(df, aes(x, y, fill = color)) +
  geom_raster() +
  scale_fill_identity() +
  theme_void()

n <- 100

df <- expand.grid(x = 1:n, y = 1:n)

# Generate stripe-like effect using sine waves + randomness
df <- df %>%
  mutate(
    stripe = sin(y / 5) + runif(nrow(df), -0.5, 0.5), 
    color_group = cut(stripe, breaks = 4, labels = FALSE)  
  )

df$color <- colors[df$color_group]

ggplot(df, aes(x, y, fill = color)) +
  geom_raster() +
  scale_fill_identity() +
  theme_void()