Welcome to my field notes!
Field notes are notes I leave myself as I go through my day to day work. The hope is that other people will also find these notes useful. Note that these notes are unfiltered and unverified.
Generative Art in Julia
Something that coincideded with my desire to learn Julia was my desire to create some generative art, so it would be awesome if I could marry the two and really do some creative coding in Julia.
Luxor.jl + Javis.jl
Luxor.jl
- These two pair together for static and animated charts. Seems very well featured and the tutorials are great. I think for generative art this combo will serve us best whereas
Compose.jl
is really more about visualization. This tutorial is pretty amazing! - This seems more amenable to being Julian, i.e. using features such as broadcasting
- Luxor is great, the tutorial material is pretty gold standard.
- Shapes
- Wrap more complicated geoms around functions with parameters
Javis.jl
- Ran into a bit of a hiccup with one of the dependencies on my cloud instance
Gtk.jl
which required a display, so I needed to installxvfb
to clear that precompilation issue, and then add it to the docker entrypoint. - Doesn’t yet fully support
Pluto.jl
but some things can be hacked around. - We create Luxor.jl functions that construct objects, and then Javis
Objects
essentially are rendered for each frame from closures defined through those Luxor objects. - Concepts
Object
calls a function that draws something onto the canvas.Object
consists ofFrames
, afunc
drawing function, and an optionalAnimation
Frames
can be defined as a range (1:100
), same as previous (:same
) orRFrames
relative to the previous index.- Don’t define a frame range > than the background.
- Okay after than brouhaha with the display required on cloud servers, this package is growing quite fast on me. I’m still amazed at how fast things just render!
- You can add LaTeX whereas Luxor.jl does not offer this functionality. It does require some npm package involving mathjax though.
Compose.jl
- Takes inspiration from R’s
{grid}
compose(a, b)
returns a new tree rooted ata
withb
as child.- There is a Forms gallery a Properties gallery, and a Transforms gallery that are all pretty featured
- Seems pretty well featured for SVG Graphics but no direct path to animation.