All Projects → inconvergent → Snek

inconvergent / Snek

Licence: other
See https://github.com/inconvergent/weir instead

Programming Languages

lisp
113 projects
procedural
45 projects

Projects that are alternatives of or similar to Snek

samila
Generative Art Generator
Stars: ✭ 750 (+7.76%)
Mutual labels:  art, generative-art, generative
Sofloo Spot
Click Randomize
Stars: ✭ 37 (-94.68%)
Mutual labels:  generative, generative-art, art
glitch-image
🖼 Generate and save unique glitchy images
Stars: ✭ 46 (-93.39%)
Mutual labels:  art, generative-art, generative
book-mdpc
Il cinema tra le righe... di codice!
Stars: ✭ 59 (-91.52%)
Mutual labels:  art, generative-art, generative
corruption-loops
Digitally disintegrating music
Stars: ✭ 37 (-94.68%)
Mutual labels:  art, generative-art, generative
Pts
A library for visualization and creative-coding
Stars: ✭ 4,628 (+564.94%)
Mutual labels:  generative, generative-art, art
Generative-Art
A selection of generative art scripts written in Python
Stars: ✭ 284 (-59.2%)
Mutual labels:  art, generative-art, generative
generative
A digital playground for experimenting with creative coding and WebGL
Stars: ✭ 50 (-92.82%)
Mutual labels:  art, experimental, generative-art
Weir
A system for making generative systems
Stars: ✭ 451 (-35.2%)
Mutual labels:  generative, generative-art, art
SdfFontDesigner
Offline font tuning/bitmap generation via shaders
Stars: ✭ 56 (-91.95%)
Mutual labels:  art, procedural-generation
fishdraw
procedurally generated fish drawings
Stars: ✭ 1,963 (+182.04%)
Mutual labels:  art, procedural-generation
desert
A fast (?) random sampling drawing library
Stars: ✭ 61 (-91.24%)
Mutual labels:  generative-art, generative
frameV
Framed Visuals: collaborative generative art.
Stars: ✭ 20 (-97.13%)
Mutual labels:  art, generative-art
tripbot9000
Procedural generation of geometric patterns and fractals.
Stars: ✭ 22 (-96.84%)
Mutual labels:  art, procedural-generation
staticfuzz
Memories which vanish
Stars: ✭ 15 (-97.84%)
Mutual labels:  art, experimental
Context Free
Context Free is a program that generates images from written instructions called a grammar. The program follows the instructions in a few seconds to create images that can contain millions of shapes.
Stars: ✭ 326 (-53.16%)
Mutual labels:  generative-art, art
Generativeart
Generative Art in Go
Stars: ✭ 313 (-55.03%)
Mutual labels:  generative, generative-art
random-art-generator
Command-line application to produce generative art based on a target image
Stars: ✭ 32 (-95.4%)
Mutual labels:  procedural-generation, generative-art
Sand Spline
generative algorithm
Stars: ✭ 261 (-62.5%)
Mutual labels:  generative, generative-art
Allsketchs
Processing sketches, in which I have worked in the last years; images, videos, prototypes, experiments, tools, works, concepts... Everything is unfinished, some may not work, When I had no ideas, I would open one to see what it was...
Stars: ✭ 666 (-4.31%)
Mutual labels:  generative, art

SNEK-A System for Making Generative Systems

About

This library is specifically written to be useful for a broad range of ways in which I create art using various generative algorithms.

head

In short snek is four things:

  1. A simple (graph) data structure for working with vertices and edges The structure is named snek; the name is explained below. This structure is combined with a programming pattern for applying changes to the structure. The pattern relies on alterations, see below.

  2. A series of useful data structures and tools. E.g. a 2D vector vec, a package for generating different kinds of random numbers: rnd, as well as tools for handling colors (pigment), splines (bzspl), and various vector an path functionality (math, lin-path).

  3. A tool for drawing things called sandpaint. sandpaint uses random sampling to draw its primitives. This creates a fairly distinct and gritty look in many cases.

  4. A tool for drawing svg files (draw-svg). Mainly svg files that are good for plotting.

head

About the Name

A while back someone on Twitter suggested that if Python 3 was named "snek" it would avoid naming confusion. I found that amusing at the time, and picked snek as the placeholder name for this project. I've been looking for a better name, but I haven't found one yet.

Alterations

The pattern depends on the concept of alterations. In short: an alteration is a change that will be applied to the structure at the end of a given context. alterations are further described in https://inconvergent.net/2017/snek-is-not-an-acronym/.

I have also written about things related to snek at

Here is and example of manipulating a snek instance called snk using alterations. Alteration constructors are postfixed with ?.

; context start
(snek:with (snk)
  ; iterate vertices
  (snek:itr-verts (snk v)
    ; move alteration
    (snek:move-vert? v (rnd:in-circ 1d0))
    ; w will be an arbitrary
    ; vertex in snk
    (snek:with-rnd-vert (snk w)
      ; join v and w if they are closer than d
      (if (< (snek:edge-length snk v w) d)
        ; join vertices alteration
        (snek:add-edge? v w))))
; context end
; alterations have been applied

You can also manipulate the state directly. These functions are postfixed with !. Eg. (snek:move-vert! ...).

Examples

There are some examples included. All examples are in the examples folder.

If you don't provide a filename (with full or relative path) as the first argument, the resulting file will be named ./tmp.png.

Custom alterations

You can define your own arbitrary alterations. There is an example of this in ex/custom-alt.lisp. I have also written about it here: https://inconvergent.net/2017/arbitrary-alterations/

Usage

I use snek for most of the work that I post online (https://twitter.com/inconvergent). Both for generating raster images as well as vector images for plotter drawings.

lines

lines

Here are some plotted examples:

Dependencies

This code requires libpng-dev, Quicklisp, zpng, cl-svg and cl-png. The path to quicklisp must be set in src/load. zpng, cl-svg and cl-png are automatically installed via quicklisp.

Tests

There are some tests included, see the test folder.

Stability, Changes and Versioning

This code is highly experimental on my part. It is likely to change with no warning or explanation. I will keep a note of the version number in src/load.lisp.

Thanks

I would like to thank:

Who have provided me with useful hints and code feedback.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].