generativeart/README.md

629 lines
14 KiB
Markdown
Raw Permalink Normal View History

2021-02-26 03:55:17 +00:00
# generativeart
2021-03-03 05:24:54 +00:00
2021-03-04 08:23:20 +00:00
[![Go](https://github.com/jdxyw/generativeart/actions/workflows/go.yml/badge.svg)](https://github.com/jdxyw/generativeart/actions/workflows/go.yml)
2021-03-03 05:24:54 +00:00
[![Go Report Card](https://goreportcard.com/badge/github.com/jdxyw/generativeart)](https://goreportcard.com/report/github.com/jdxyw/generativeart)
[![GitHub license](https://img.shields.io/badge/license-MIT-blue.svg)](https://raw.githubusercontent.com/jdxyw/generativeart/master/LICENSE)
2021-03-09 06:43:22 +00:00
`generativeart` is a `Go` package to generate many kinds of generative art. The goal is to collect some excellent generative art (implemented in `R` or `Processing`), and rewrite them in `Go` again. I would paste the original link at the end of this README(If I remember, you can also submit a PR if you found I missed something.). Currently, it supports the following type.
2021-03-03 05:24:54 +00:00
2021-03-16 06:54:11 +00:00
# Table of Contents
- [generativeart](#generativeart)
- [Table of Contents](#table-of-contents)
- [Buy me a coffee](#buy-me-a-coffee)
2021-03-28 15:26:44 +00:00
- [Contributing](#contributing)
2021-03-16 06:54:11 +00:00
- [Types supported](#types-supported)
- [Install](#install)
- [Art Type](#art-type)
- [Docs](#docs)
- [Examples](#examples)
- [General Options](#general-options)
- [Usage and example](#usage-and-example)
- [Junas](#junas)
- [Random Shapes](#random-shapes)
- [Color Circle2](#color-circle2)
- [Circle Grid](#circle-grid)
2021-03-16 06:58:22 +00:00
- [Circle Composes Circle](#circle-composes-circle)
- [Pixel Hole](#pixel-hole)
2021-03-16 06:54:11 +00:00
- [Dots Wave](#dots-wave)
- [Contour Line](#contour-line)
- [Noise Line](#noise-line)
- [Dot Line](#dot-line)
- [Ocean Fish](#ocean-fish)
- [Circle Loop](#circle-loop)
2021-03-30 02:49:33 +00:00
- [Domain Warp](#domain-warp)
2021-03-17 08:29:20 +00:00
- [Circle Noise](#circle-noise)
2021-04-07 09:22:53 +00:00
- [Perlin Perls](#perlin-perls)
2021-03-22 06:58:39 +00:00
- [Color Canva](#color-canva)
2021-03-16 06:54:11 +00:00
- [Julia Set](#julia-set)
2021-03-19 06:23:42 +00:00
- [Black Hole](#black-hole)
2021-03-16 06:54:11 +00:00
- [Silk Sky](#silk-sky)
- [Circle Move](#circle-move)
- [Random Circle](#random-circle)
- [TODO](#todo)
- [Contribution](#contribution)
2021-03-10 02:35:11 +00:00
## Buy me a coffee
If you found this package is useful, maybe you could buy me a coffee from [Paypal](https://www.paypal.me/jdxyw).
2021-03-28 15:26:44 +00:00
## Contributing
I am glad to see someone to contribute to this repo, please follow the [CONTRIBUTING.md](https://github.com/jdxyw/generativeart/blob/master/CONTRIBUTING.md) for more information. Or you can just open an issue or PR.
2021-03-10 02:35:11 +00:00
## Types supported
2021-03-09 06:43:22 +00:00
This package is still working in progress. More types would be added. Welcome anyone interested in this field to submit your PR.
2021-03-06 07:38:55 +00:00
2021-03-03 05:24:54 +00:00
- Maze
- Julia Set
- Random Circle Trails
- Silk Smoke
- Spiral Square
- Square Grid
- Circle Line
2021-03-03 09:38:34 +00:00
- Circle Loop
- Silk Sky
2021-03-04 04:06:45 +00:00
- Dot Line
2021-03-04 05:59:46 +00:00
- Swirl
2021-03-04 11:55:33 +00:00
- Point Ribbon
2021-03-05 10:08:15 +00:00
- Janus
- Random Shapes
2021-03-06 15:17:26 +00:00
- Color Circle
2021-03-08 04:02:13 +00:00
- Color Circle2
2021-03-08 06:09:15 +00:00
- Circle Grid
2021-03-09 06:08:33 +00:00
- Contour Line
2021-03-09 11:07:47 +00:00
- Noise Line
2021-03-10 03:58:56 +00:00
- Ocean Fish
- Circle Loop2
- Pixel Hole
2021-03-12 07:18:07 +00:00
- Dots Wave
2021-03-16 03:33:09 +00:00
- Circle Move
2021-03-17 08:29:20 +00:00
- Circle Noise
2021-03-18 05:26:55 +00:00
- Yarn
2021-03-19 06:23:42 +00:00
- Black Hole
2021-03-22 07:07:40 +00:00
- Color Canva
2021-03-30 02:49:33 +00:00
- Domain Warp
2021-04-07 09:22:53 +00:00
- Perlin Perls
2021-03-03 05:24:54 +00:00
2021-03-09 06:43:22 +00:00
For these kinds of art, the package provides as many parameters to control the appearance.
2021-03-03 05:24:54 +00:00
## Install
2021-03-08 07:56:32 +00:00
The go version I used is `Go 1.16`.
2021-03-04 02:46:41 +00:00
2021-03-03 05:24:54 +00:00
```bash
go get github.com/jdxyw/generativeart
```
2021-03-03 09:38:34 +00:00
## Art Type
```go
2021-03-04 02:46:41 +00:00
NewCircleLine(step float64, lineNum int, radius, xaixs, yaixs float64)
2021-03-03 09:38:34 +00:00
NewCircleLoop(radius float64)
2021-03-04 02:46:41 +00:00
NewMaze(step int)
2021-03-03 09:38:34 +00:00
NewRandCicle(mc, msp int, minStep, maxStep, minr, maxr float64, isRandColor bool)
NewSilkSky(circleNum int, sunRadius float64)
NewSilkSmoke(mc, msp int, minStep, maxStep, minRadius, maxRadius float64, isRandColor bool)
NewSpiralSquare(squareNum int, rectSide, decay float64, randColor bool)
2021-03-04 05:59:46 +00:00
NewSwirl(a, b, c, d, xaixs, yaixs float64)
NewDotLine(n int, ras, canv float64, randColor bool)
2021-03-04 11:55:33 +00:00
NewPointRibbon(r float64)
2021-03-05 10:08:15 +00:00
NewJanus(n int, decay float64)
NewRandomShape(shapeNum int)
2021-03-06 15:17:26 +00:00
NewColorCircle(circleNum int)
2021-03-08 04:02:13 +00:00
NewColorCircle2(circleNum int)
2021-03-08 06:09:15 +00:00
NewCircleGrid(circleNumMin, circleNumMax int)
2021-03-09 06:08:33 +00:00
NewContourLine(lineNum int)
2021-03-09 11:07:47 +00:00
NewNoiseLine(n int)
NewCircleLoop2(depth int)
NewPixelHole(dotN int)
2021-03-12 07:18:07 +00:00
NewDotsWave(dotsN int)
2021-03-16 03:33:09 +00:00
NewCircleMove(circleNum int)
2021-03-17 08:29:20 +00:00
NewCircleNoise(dotsN, colorMin, colorMax int)
2021-03-18 05:26:55 +00:00
NewYarn(n int)
2021-03-19 06:23:42 +00:00
NewBlackHole(circleN int, density, circleGap float64)
2021-03-22 07:07:40 +00:00
NewColorCanve(seg float64)
2021-03-30 09:10:04 +00:00
NewDomainWrap(scale, scale2, xOffset, yOffset float64, cmap ColorMapping)
2021-04-07 09:22:53 +00:00
NewPerlinPerls(circleN, dotsN, colorMin, colorMax int)
2021-03-03 09:38:34 +00:00
```
2021-03-08 07:56:32 +00:00
## Docs
You could find the docs in the [doc](./docs).
## Examples
You could find examples for all types under [example](./example).
2021-03-04 02:46:41 +00:00
## General Options
```go
type Options struct {
background color.RGBA
foreground color.RGBA
lineColor color.RGBA
lineWidth float64
colorSchema []color.RGBA
nIters int
alpha int
2021-03-04 02:46:41 +00:00
}
```
The `Options` is a global option for the whole `canva`. It includes those general parameters used by different kinds of types, such as `background`, `lineColor`, and `colorScheme`.
2021-03-08 07:56:32 +00:00
For those parameters specified for different kinds of art types, they have their own `struct`.
2021-03-03 05:24:54 +00:00
## Usage and example
2021-03-18 05:26:55 +00:00
Below are some selective examples. For more examples, you could check the example folder.
2021-03-06 15:17:26 +00:00
### Junas
2021-03-03 09:38:34 +00:00
```go
func main() {
rand.Seed(time.Now().Unix())
c := generativeart.NewCanva(500, 500)
2021-03-16 06:54:11 +00:00
c.SetBackground(common.Black)
c.FillBackground()
2021-03-16 06:54:11 +00:00
c.SetColorSchema(common.DarkRed)
c.SetForeground(common.LightPink)
c.Draw(arts.NewJanus(10, 0.2))
c.ToPNG("janus.png")
2021-03-03 09:38:34 +00:00
}
```
2021-03-06 15:17:26 +00:00
![](images/janus.png)
2021-03-03 09:38:34 +00:00
### Random Shapes
```go
func main() {
rand.Seed(time.Now().Unix())
c := generativeart.NewCanva(500, 500)
2021-03-16 06:54:11 +00:00
c.SetBackground(common.White)
c.FillBackground()
c.SetColorSchema([]color.RGBA{
{0xCF, 0x2B, 0x34, 0xFF},
{0xF0, 0x8F, 0x46, 0xFF},
{0xF0, 0xC1, 0x29, 0xFF},
{0x19, 0x6E, 0x94, 0xFF},
{0x35, 0x3A, 0x57, 0xFF},
})
2021-03-16 06:54:11 +00:00
c.Draw(arts.NewRandomShape(150))
c.ToPNG("randomshape.png")
}
```
![](images/randomshape.png)
2021-03-08 07:56:32 +00:00
### Color Circle2
2021-03-06 15:17:26 +00:00
```go
func main() {
rand.Seed(time.Now().Unix())
colors := []color.RGBA{
{0x11, 0x60, 0xC6, 0xFF},
{0xFD, 0xD9, 0x00, 0xFF},
{0xF5, 0xB4, 0xF8, 0xFF},
{0xEF, 0x13, 0x55, 0xFF},
{0xF4, 0x9F, 0x0A, 0xFF},
}
c := generativeart.NewCanva(800, 800)
2021-03-16 06:54:11 +00:00
c.SetBackground(common.White)
c.FillBackground()
c.SetColorSchema(colors)
2021-03-16 06:54:11 +00:00
c.Draw(arts.NewColorCircle2(30))
c.ToPNG("colorcircle2.png")
2021-03-06 15:17:26 +00:00
}
```
2021-03-08 04:02:13 +00:00
![](images/colorcircle2.png)
2021-03-06 15:17:26 +00:00
2021-03-08 06:09:15 +00:00
### Circle Grid
```go
func main() {
rand.Seed(time.Now().Unix())
colors := []color.RGBA{
{0xED, 0x34, 0x41, 0xFF},
{0xFF, 0xD6, 0x30, 0xFF},
{0x32, 0x9F, 0xE3, 0xFF},
{0x15, 0x42, 0x96, 0xFF},
{0x00, 0x00, 0x00, 0xFF},
{0xFF, 0xFF, 0xFF, 0xFF},
}
c := generativeart.NewCanva(500, 500)
c.SetBackground(color.RGBA{0xDF, 0xEB, 0xF5, 0xFF})
c.FillBackground()
c.SetColorSchema(colors)
c.SetLineWidth(2.0)
2021-03-16 06:54:11 +00:00
c.Draw(arts.NewCircleGrid(4, 6))
c.ToPNG("circlegrid.png")
2021-03-08 06:09:15 +00:00
}
```
![](images/circlegrid.png)
2021-03-16 06:58:22 +00:00
### Circle Composes Circle
```go
func main() {
rand.Seed(time.Now().Unix())
colors := []color.RGBA{
{0xF9, 0xC8, 0x0E, 0xFF},
{0xF8, 0x66, 0x24, 0xFF},
{0xEA, 0x35, 0x46, 0xFF},
{0x66, 0x2E, 0x9B, 0xFF},
{0x43, 0xBC, 0xCD, 0xFF},
}
c := generativeart.NewCanva(500, 500)
c.SetBackground(color.RGBA{8, 10, 20, 255})
c.FillBackground()
c.SetColorSchema(colors)
2021-03-16 06:54:11 +00:00
c.Draw(arts.NewCircleLoop2(7))
c.ToPNG("colorloop2.png")
}
```
![](images/colorloop2.png)
2021-03-16 06:58:22 +00:00
### Pixel Hole
```go
func main() {
rand.Seed(time.Now().Unix())
colors := []color.RGBA{
{0xF9, 0xC8, 0x0E, 0xFF},
{0xF8, 0x66, 0x24, 0xFF},
{0xEA, 0x35, 0x46, 0xFF},
{0x66, 0x2E, 0x9B, 0xFF},
{0x43, 0xBC, 0xCD, 0xFF},
}
c := generativeart.NewCanva(800, 800)
c.SetBackground(common.Black)
c.FillBackground()
c.SetColorSchema(colors)
c.SetIterations(1200)
2021-03-16 06:54:11 +00:00
c.Draw(arts.NewPixelHole(60))
c.ToPNG("pixelhole.png")
2021-03-16 06:54:11 +00:00
}
```
![](images/pixelhole.png)
2021-03-12 07:18:07 +00:00
### Dots Wave
2021-03-06 15:17:26 +00:00
```go
func main() {
rand.Seed(time.Now().Unix())
2021-03-12 07:18:07 +00:00
colors := []color.RGBA{
{0xFF, 0xBE, 0x0B, 0xFF},
{0xFB, 0x56, 0x07, 0xFF},
{0xFF, 0x00, 0x6E, 0xFF},
{0x83, 0x38, 0xEC, 0xFF},
{0x3A, 0x86, 0xFF, 0xFF},
}
c := generativeart.NewCanva(500, 500)
2021-03-12 07:18:07 +00:00
c.SetBackground(common.Black)
c.FillBackground()
2021-03-12 07:18:07 +00:00
c.SetColorSchema(colors)
2021-03-16 06:54:11 +00:00
c.Draw(arts.NewDotsWave(300))
2021-03-12 07:18:07 +00:00
c.ToPNG("dotswave.png")
2021-03-06 15:17:26 +00:00
}
```
2021-03-12 07:18:07 +00:00
![](images/dotswave.png)
2021-03-06 15:17:26 +00:00
2021-03-09 06:08:33 +00:00
### Contour Line
2021-03-03 09:38:34 +00:00
```go
func main() {
rand.Seed(time.Now().Unix())
colors := []color.RGBA{
{0x58, 0x18, 0x45, 0xFF},
{0x90, 0x0C, 0x3F, 0xFF},
{0xC7, 0x00, 0x39, 0xFF},
{0xFF, 0x57, 0x33, 0xFF},
{0xFF, 0xC3, 0x0F, 0xFF},
}
c := generativeart.NewCanva(1600, 1600)
c.SetBackground(color.RGBA{0x1a, 0x06, 0x33, 0xFF})
c.FillBackground()
c.SetColorSchema(colors)
2021-03-16 06:54:11 +00:00
c.Draw(arts.NewContourLine(500))
c.ToPNG("contourline.png")
2021-03-03 09:38:34 +00:00
}
```
2021-03-09 06:08:33 +00:00
![](images/contourline.png)
2021-03-03 09:38:34 +00:00
2021-03-09 11:07:47 +00:00
### Noise Line
```go
func main() {
rand.Seed(time.Now().Unix())
colors := []color.RGBA{
{0x06, 0x7B, 0xC2, 0xFF},
{0x84, 0xBC, 0xDA, 0xFF},
{0xEC, 0xC3, 0x0B, 0xFF},
{0xF3, 0x77, 0x48, 0xFF},
{0xD5, 0x60, 0x62, 0xFF},
}
c := generativeart.NewCanva(1000, 1000)
c.SetBackground(color.RGBA{0xF0, 0xFE, 0xFF, 0xFF})
c.FillBackground()
c.SetColorSchema(colors)
2021-03-16 06:54:11 +00:00
c.Draw(arts.NewNoiseLine(1000))
c.ToPNG("noiseline.png")
2021-03-09 11:07:47 +00:00
}
```
![](images/noiseline.png)
2021-03-10 03:58:56 +00:00
### Dot Line
```go
func main() {
rand.Seed(time.Now().Unix())
c := generativeart.NewCanva(2080, 2080)
c.SetBackground(color.RGBA{230, 230, 230, 255})
c.SetLineWidth(10)
2021-03-16 06:54:11 +00:00
c.SetIterations(15000)
c.SetColorSchema(common.Plasma)
c.FillBackground()
2021-03-16 06:54:11 +00:00
c.Draw(arts.NewDotLine(100, 20, 50, false))
c.ToPNG("dotline.png")
2021-03-10 03:58:56 +00:00
}
```
![](images/dotline.png)
### Ocean Fish
```go
func main() {
rand.Seed(time.Now().Unix())
colors := []color.RGBA{
{0xCF, 0x2B, 0x34, 0xFF},
{0xF0, 0x8F, 0x46, 0xFF},
{0xF0, 0xC1, 0x29, 0xFF},
{0x19, 0x6E, 0x94, 0xFF},
{0x35, 0x3A, 0x57, 0xFF},
}
c := generativeart.NewCanva(500, 500)
c.SetColorSchema(colors)
2021-03-16 06:54:11 +00:00
c.Draw(arts.NewOceanFish(100, 8))
c.ToPNG("oceanfish.png")
2021-03-10 03:58:56 +00:00
}
```
![](images/oceanfish.png)
2021-03-03 09:38:34 +00:00
### Circle Loop
```go
func main() {
rand.Seed(time.Now().Unix())
c := generativeart.NewCanva(500, 500)
2021-03-16 06:54:11 +00:00
c.SetBackground(common.Black)
c.SetLineWidth(1)
2021-03-16 06:54:11 +00:00
c.SetLineColor(common.Orange)
c.SetAlpha(30)
c.SetIterations(1000)
c.FillBackground()
2021-03-16 06:54:11 +00:00
c.Draw(arts.NewCircleLoop(100))
c.ToPNG("circleloop.png")
2021-03-03 09:38:34 +00:00
}
```
![](images/circleloop.png)
2021-03-30 02:49:33 +00:00
### Domain Warp
```go
func cmap(r, m1, m2 float64) color.RGBA {
rgb := color.RGBA{
2021-03-30 09:10:04 +00:00
uint8(common.Constrain(m1*200*r, 0, 255)),
2021-03-30 02:49:33 +00:00
uint8(common.Constrain(r*200, 0, 255)),
uint8(common.Constrain(m2*255*r, 70, 255)),
255,
}
return rgb
}
func main() {
rand.Seed(time.Now().Unix())
c := generativeart.NewCanva(500, 500)
c.SetBackground(common.Black)
c.FillBackground()
2021-03-30 09:10:04 +00:00
c.Draw(arts.NewDomainWrap(0.01, 4,4, 20, cmap))
2021-03-30 02:49:33 +00:00
c.ToPNG("domainwarp.png")
}
```
![](images/domainwarp.png)
2021-03-17 08:29:20 +00:00
### Circle Noise
```go
func main() {
2021-03-18 05:26:55 +00:00
rand.Seed(time.Now().Unix())
c := generativeart.NewCanva(500, 500)
c.SetBackground(common.White)
c.SetAlpha(80)
c.SetLineWidth(0.3)
c.FillBackground()
c.SetIterations(400)
c.Draw(arts.NewCircleNoise(2000, 60, 80))
c.ToPNG("circlenoise.png")
2021-03-17 08:29:20 +00:00
}
```
![](images/circlenoise.png)
2021-04-07 09:22:53 +00:00
### Perlin Perls
```go
func main() {
rand.Seed(time.Now().Unix())
c := generativeart.NewCanva(500, 500)
c.SetBackground(common.White)
c.SetAlpha(120)
c.SetLineWidth(0.3)
c.FillBackground()
c.SetIterations(200)
c.Draw(arts.NewPerlinPerls(10, 200, 40, 80))
c.ToPNG("perlinperls.png")
}
```
2021-04-07 09:24:16 +00:00
![](images/perlinperls.png)
2021-04-07 09:22:53 +00:00
2021-03-22 06:58:39 +00:00
### Color Canva
```go
func main() {
rand.Seed(time.Now().Unix())
colors := []color.RGBA{
{0xF9, 0xC8, 0x0E, 0xFF},
{0xF8, 0x66, 0x24, 0xFF},
{0xEA, 0x35, 0x46, 0xFF},
{0x66, 0x2E, 0x9B, 0xFF},
{0x43, 0xBC, 0xCD, 0xFF},
}
c := generativeart.NewCanva(500, 500)
c.SetBackground(common.Black)
c.FillBackground()
c.SetLineWidth(8)
c.SetColorSchema(colors)
c.Draw(arts.NewColorCanve(5))
c.ToPNG("colorcanva.png")
}
```
![](images/colorcanva.png)
2021-03-03 09:38:34 +00:00
### Julia Set
```go
func julia1(z complex128) complex128 {
c := complex(-0.1, 0.651)
2021-03-16 06:54:11 +00:00
z = z*z + c
2021-03-03 09:38:34 +00:00
return z
2021-03-03 09:38:34 +00:00
}
func main() {
rand.Seed(time.Now().Unix())
c := generativeart.NewCanva(500, 500)
c.SetIterations(800)
2021-03-16 06:54:11 +00:00
c.SetColorSchema(common.Viridis)
c.FillBackground()
2021-03-16 06:54:11 +00:00
c.Draw(arts.NewJulia(julia1, 40, 1.5, 1.5))
c.ToPNG("julia.png")
2021-03-03 09:38:34 +00:00
}
```
![](images/julia.png)
2021-03-19 06:23:42 +00:00
### Black Hole
```go
func main() {
2021-03-19 06:37:12 +00:00
rand.Seed(time.Now().Unix())
c := generativeart.NewCanva(500, 500)
c.SetBackground(color.RGBA{R: 30, G: 30, B: 30, A: 255})
c.FillBackground()
c.SetLineWidth(1.0)
c.SetLineColor(common.Tomato)
c.Draw(arts.NewBlackHole(200, 400, 0.01))
c.ToPNG("blackhole.png")
2021-03-19 06:23:42 +00:00
}
```
![](images/blackhole.png)
2021-03-04 11:54:21 +00:00
### Silk Sky
```go
func main() {
rand.Seed(time.Now().Unix())
c := generativeart.NewCanva(600, 600)
c.SetAlpha(10)
2021-03-16 06:54:11 +00:00
c.Draw(arts.NewSilkSky(15, 5))
c.ToPNG("silksky.png")
2021-03-04 11:54:21 +00:00
}
```
![](images/silksky.png)
2021-03-16 03:33:09 +00:00
### Circle Move
2021-03-03 09:38:34 +00:00
```go
func main() {
rand.Seed(time.Now().Unix())
2021-03-16 03:33:09 +00:00
c := generativeart.NewCanva(1200, 500)
c.SetBackground(common.White)
c.FillBackground()
2021-03-16 06:54:11 +00:00
c.Draw(arts.NewCircleMove(1000))
2021-03-16 03:33:09 +00:00
c.ToPNG("circlemove.png")
2021-03-03 09:38:34 +00:00
}
```
2021-03-16 03:33:09 +00:00
![](images/circlemove.png)
2021-03-03 09:38:34 +00:00
### Random Circle
```go
func main() {
rand.Seed(time.Now().Unix())
c := generativeart.NewCanva(500, 500)
2021-03-16 06:54:11 +00:00
c.SetBackground(common.MistyRose)
c.SetLineWidth(1.0)
c.SetLineColor(color.RGBA{
R: 122,
G: 122,
B: 122,
A: 30,
})
2021-03-16 06:54:11 +00:00
c.SetColorSchema(common.Plasma)
c.SetIterations(4)
c.FillBackground()
2021-03-16 06:54:11 +00:00
c.Draw(arts.NewRandCicle(30, 80, 0.2, 2, 10, 30, true))
c.ToPNG("randcircle.png")
2021-03-03 09:38:34 +00:00
}
```
![](images/randcircle.png)
2021-03-03 05:24:54 +00:00
## TODO
- Add more kinds of generative arts or types.
## Contribution
Thanks for the following sites and repos, I got lots of ideas, inspiration, code, and tricks from them. The list would be very long; sorry for forgetting some of them.
2021-03-03 05:24:54 +00:00
- <https://inconvergent.net/>
- <https://fronkonstin.com/>
- <https://github.com/aschinchon/cyclic-cellular-automata>
- <https://github.com/armdz/ProcessingSketchs>
- <https://github.com/Mr-Slesser/Generative-Art-And-Fractals>
- <https://github.com/cdr6934/Generative-Processing-Experiments>
- <https://github.com/pkd2512/inktober2017>
- <http://blog.dragonlab.de/2015/03/generative-art-week-1>
- <https://editor.p5js.org/kenekk1/sketches/Ly-5XYvKX>
- <http://paulbourke.net/fractals/peterdejong/>
- <https://editor.p5js.org/kenekk1/sketches/O44Dln5oo>
- <https://openprocessing.org/sketch/1071233>
- <https://twitter.com/okazz_>
- <https://openprocessing.org/sketch/738638>
- <https://openprocessing.org/sketch/1102157>
- <https://openprocessing.org/sketch/1071233>
- <https://openprocessing.org/user/139364>
2021-03-19 06:37:12 +00:00
- <https://openprocessing.org/sketch/792407>
2021-03-29 15:11:47 +00:00
- <https://www.iquilezles.org/www/articles/warp/warp.htm>