From 8b619457bfd56beed12572eac43ad4b3065662c6 Mon Sep 17 00:00:00 2001 From: Yongwei Xing Date: Fri, 5 Mar 2021 18:08:15 +0800 Subject: [PATCH] add janus and update readme --- README.md | 37 ++++++++++++++------------ color.go | 13 +++++++++ example/example_janus.go | 18 +++++++++++++ example/test.go | 41 ++++++++++++++++++++++++++++ go.mod | 2 +- go.sum | 8 ++++++ images/janus.png | Bin 0 -> 28889 bytes janus.go | 56 +++++++++++++++++++++++++++++++++++++++ utils.go | 4 +++ 9 files changed, 161 insertions(+), 18 deletions(-) create mode 100644 example/example_janus.go create mode 100644 example/test.go create mode 100644 images/janus.png create mode 100644 janus.go diff --git a/README.md b/README.md index b119c85..efa8d73 100644 --- a/README.md +++ b/README.md @@ -19,6 +19,7 @@ - Dot Line - Swirl - Point Ribbon +- Janus For these kinds of art, the package provides as many as parameters to control the appearance. @@ -43,6 +44,7 @@ NewSpiralSquare(squareNum int, rectSide, decay float64, randColor bool) NewSwirl(a, b, c, d, xaixs, yaixs float64) NewDotLine(n int, ras, canv float64, randColor bool) NewPointRibbon(r float64) +NewJanus(n int, decay float64) ``` ## General Options @@ -138,6 +140,23 @@ func main() { } ``` +### Junas + +```go +func main() { + rand.Seed(time.Now().Unix()) + c := generativeart.NewCanva(500, 500) + c.SetBackground(generativeart.Black) + c.FillBackground() + c.SetColorSchema(generativeart.DarkRed) + c.SetForeground(generativeart.LightPink) + c.Draw(generativeart.NewJanus(10, 0.2)) + c.ToPNG("janus.png") +} +``` + +![](images/janus.png) + ![](images/dotline.png) ### Julia Set @@ -194,23 +213,6 @@ func main() { ![](images/pointribbon.png) -### Swirl - -```go -func main() { - rand.Seed(time.Now().Unix()) - c := generativeart.NewCanva(1600, 1600) - c.SetBackground(generativeart.Azure) - c.FillBackground() - c.SetForeground(color.RGBA{113, 3, 0, 180}) - c.SetIterations(8000000) - c.Draw(generativeart.NewSwirl(0.970, -1.899, -1.381, -1.506, 2.0, 2.0)) - c.ToPNG("swirl.png") -} -``` - -![](images/swirl.png) - ### Circle Line ```go @@ -288,3 +290,4 @@ Thanks for the following sites and repos, I got lots of ideas, inspiration, code - 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 diff --git a/color.go b/color.go index 082057a..75c6994 100644 --- a/color.go +++ b/color.go @@ -45,6 +45,19 @@ var ( {13, 13, 13, 255}, } + DarkRed = []color.RGBA{ + {48, 19, 21, 255}, + {71, 15, 16, 255}, + {92, 10, 12, 255}, + {115, 5, 4, 255}, + {139, 0, 3, 255}, + {163, 32, 1, 255}, + {185, 66, 0, 255}, + {208, 98, 1, 255}, + {231, 133, 0, 255}, + {254, 165, 0, 255}, + } + Plasma = []color.RGBA{ color.RGBA{0x0c, 0x07, 0x86, 0xff}, color.RGBA{0x10, 0x07, 0x87, 0xff}, diff --git a/example/example_janus.go b/example/example_janus.go new file mode 100644 index 0000000..71b57b4 --- /dev/null +++ b/example/example_janus.go @@ -0,0 +1,18 @@ +package main + +import ( + "github.com/jdxyw/generativeart" + "math/rand" + "time" +) + +func main() { + rand.Seed(time.Now().Unix()) + c := generativeart.NewCanva(500, 500) + c.SetBackground(generativeart.Black) + c.FillBackground() + c.SetColorSchema(generativeart.DarkRed) + c.SetForeground(generativeart.LightPink) + c.Draw(generativeart.NewJanus(10, 0.2)) + c.ToPNG("janus.png") +} diff --git a/example/test.go b/example/test.go new file mode 100644 index 0000000..ae425c7 --- /dev/null +++ b/example/test.go @@ -0,0 +1,41 @@ +package main + +import ( + "github.com/fogleman/gg" + "github.com/jdxyw/generativeart" + "github.com/llgcode/draw2d/draw2dimg" + "image" + "math/rand" + "time" +) + +func main() { + const S = 400 + rand.Seed(time.Now().Unix()) + dest := image.NewRGBA(image.Rect(0, 0, 500, 500)) + + gc := draw2dimg.NewGraphicContext(dest) + gc.SetStrokeColor(generativeart.Orange) + gc.BeginPath() + gc.MoveTo(100, 100) + gc.QuadCurveTo(150, 50, 200, 100) + //fmt.Println(gc.LastPoint()) + //gc.QuadCurveTo(200, 100, 300, 200) + gc.QuadCurveTo(250, 250, 200, 400) + gc.QuadCurveTo(100, 250, 100, 100) + //gc.QuadCurveTo(200, 400, 100, 10) + //gc.Close() + gc.Stroke() + + ctex := gg.NewContextForRGBA(dest) + ctex.SetColor(generativeart.White) + //ctex.DrawCircle(100, 100, 5) + //ctex.DrawCircle(200, 400, 5) + //ctex.DrawCircle(200, 100, 5) + //ctex.DrawCircle(300, 200, 5) + //ctex.DrawCircle(200, 400, 5) + ctex.Fill() + //gc.FillStroke() + + draw2dimg.SaveToPngFile("test.png", dest) +} diff --git a/go.mod b/go.mod index 0788b5e..d96a074 100644 --- a/go.mod +++ b/go.mod @@ -4,6 +4,6 @@ go 1.16 require ( github.com/fogleman/gg v1.3.0 - github.com/golang/freetype v0.0.0-20170609003504-e2365dfdc4a0 // indirect + github.com/llgcode/draw2d v0.0.0-20200930101115-bfaf5d914d1e golang.org/x/image v0.0.0-20210220032944-ac19c3e999fb // indirect ) diff --git a/go.sum b/go.sum index 366e01d..3d829c6 100644 --- a/go.sum +++ b/go.sum @@ -1,7 +1,15 @@ github.com/fogleman/gg v1.3.0 h1:/7zJX8F6AaYQc57WQCyN9cAIz+4bCJGO9B+dyW29am8= github.com/fogleman/gg v1.3.0/go.mod h1:R/bRT+9gY/C5z7JzPU0zXsXHKM4/ayA+zqcVNZzPa1k= +github.com/go-gl/gl v0.0.0-20180407155706-68e253793080/go.mod h1:482civXOzJJCPzJ4ZOX/pwvXBWSnzD4OKMdH4ClKGbk= +github.com/go-gl/glfw v0.0.0-20180426074136-46a8d530c326/go.mod h1:vR7hzQXu2zJy9AVAgeJqvqgH9Q5CA+iKCZ2gyEVpxRU= github.com/golang/freetype v0.0.0-20170609003504-e2365dfdc4a0 h1:DACJavvAHhabrF08vX0COfcOBJRhZ8lUbR+ZWIs0Y5g= github.com/golang/freetype v0.0.0-20170609003504-e2365dfdc4a0/go.mod h1:E/TSTwGwJL78qG/PmXZO1EjYhfJinVAhrmmHX6Z8B9k= +github.com/jung-kurt/gofpdf v1.0.0/go.mod h1:7Id9E/uU8ce6rXgefFLlgrJj/GYY22cpxn+r32jIOes= +github.com/llgcode/draw2d v0.0.0-20200930101115-bfaf5d914d1e h1:YRRazju3DMGuZTSWEj0nE2SCRcK3DW/qdHQ4UQx7sgs= +github.com/llgcode/draw2d v0.0.0-20200930101115-bfaf5d914d1e/go.mod h1:mVa0dA29Db2S4LVqDYLlsePDzRJLDfdhVZiI15uY0FA= +github.com/llgcode/ps v0.0.0-20150911083025-f1443b32eedb h1:61ndUreYSlWFeCY44JxDDkngVoI7/1MVhEl98Nm0KOk= +github.com/llgcode/ps v0.0.0-20150911083025-f1443b32eedb/go.mod h1:1l8ky+Ew27CMX29uG+a2hNOKpeNYEQjjtiALiBlFQbY= +golang.org/x/image v0.0.0-20180708004352-c73c2afc3b81/go.mod h1:ux5Hcp/YLpHSI86hEcLt0YII63i6oz57MZXIpbrjZUs= golang.org/x/image v0.0.0-20210220032944-ac19c3e999fb h1:fqpd0EBDzlHRCjiphRR5Zo/RSWWQlWv34418dnEixWk= golang.org/x/image v0.0.0-20210220032944-ac19c3e999fb/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= diff --git a/images/janus.png b/images/janus.png new file mode 100644 index 0000000000000000000000000000000000000000..7bf9e979c0a74aec9c53d299e21129ce0e5564fd GIT binary patch literal 28889 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