lib/utils.ex
defmodule Isotope.Utils do
@moduledoc """
Utilitary functions for working with noise maps.
"""
alias Isotope.Noise
@doc """
Shows the given noise map on the stdout using ANSI color codes.
> This won't work if your terminal doesn't support ANSI color codes.
```elixir
{:ok, noise} = Isotope.Noise.new()
noise |> Isotope.Noise.noise_map({50, 50})
|> Isotope.Utils.show_noisemap()
# Outputs noise visualization
:ok
```
"""
@spec show_noisemap(Noise.noisemap()) :: :ok
def show_noisemap(noisemap) do
Enum.each(noisemap, fn y ->
Enum.each(y, fn x ->
color = (x * 255) |> floor() |> abs() |> rem(255)
ansi_char = IO.ANSI.color(color) <> "▒"
IO.write(ansi_char)
end)
IO.puts("")
end)
end
end