automated snapshot
This commit is contained in:
@@ -11,10 +11,11 @@ type ContourLayer struct {
|
||||
maxActors uint32
|
||||
actors []*Actor
|
||||
actorIndex uint32
|
||||
actorColor rl.Color
|
||||
rng *rand.Rand
|
||||
}
|
||||
|
||||
func NewContourLayer(sketch *Sketch, rng *rand.Rand, field Field) *ContourLayer {
|
||||
func NewContourLayer(sketch *Sketch, rng *rand.Rand, field Field, color rl.Color) *ContourLayer {
|
||||
|
||||
maxActors := 200000
|
||||
|
||||
@@ -25,15 +26,14 @@ func NewContourLayer(sketch *Sketch, rng *rand.Rand, field Field) *ContourLayer
|
||||
field: field,
|
||||
actors: actors,
|
||||
maxActors: uint32(maxActors),
|
||||
actorColor: color,
|
||||
actorIndex: 0,
|
||||
}
|
||||
|
||||
//layer.AddActors(1, sketch.sourceWidth, sketch.sourceHeight)
|
||||
|
||||
return &layer
|
||||
}
|
||||
|
||||
func (s *ContourLayer) AddActors(n, sourceWidth, sourceHeight int32) {
|
||||
func (s *ContourLayer) AddActors(color rl.Color, n, sourceWidth, sourceHeight int32) {
|
||||
for range n {
|
||||
x := s.rng.Int31() % sourceWidth
|
||||
y := s.rng.Int31() % sourceHeight
|
||||
@@ -42,7 +42,7 @@ func (s *ContourLayer) AddActors(n, sourceWidth, sourceHeight int32) {
|
||||
position: rl.Vector2{X: float32(x), Y: float32(y)},
|
||||
field: s.field,
|
||||
stepSize: 1,
|
||||
color: rl.NewColor(11, 35, 176, 50),
|
||||
color: s.actorColor,
|
||||
}
|
||||
s.actors[s.actorIndex] = newActor
|
||||
s.actorIndex = (s.actorIndex + 1) % s.maxActors
|
||||
@@ -50,7 +50,7 @@ func (s *ContourLayer) AddActors(n, sourceWidth, sourceHeight int32) {
|
||||
}
|
||||
|
||||
func (s *ContourLayer) Update(ctx *RenderCtx) {
|
||||
s.AddActors(100, ctx.SourceWidth, ctx.SourceHeight)
|
||||
s.AddActors(s.actorColor, 100, ctx.SourceWidth, ctx.SourceHeight)
|
||||
}
|
||||
|
||||
func (s *ContourLayer) Draw(ctx *RenderCtx) {
|
||||
|
||||
62
internal/graphics/graphics.go
Normal file
62
internal/graphics/graphics.go
Normal file
@@ -0,0 +1,62 @@
|
||||
package graphics
|
||||
|
||||
import (
|
||||
"math/rand"
|
||||
rl "github.com/gen2brain/raylib-go/raylib"
|
||||
)
|
||||
|
||||
var (
|
||||
FlourescentHues = []float32{
|
||||
0, // hot magenta-red
|
||||
30, // neon orange
|
||||
60, // acid yellow
|
||||
120, // laser green
|
||||
180, // cyan
|
||||
210, // electric blue
|
||||
270, // ultraviolet purple
|
||||
}
|
||||
FlourescentColors = makeFlourescentColors()
|
||||
)
|
||||
|
||||
func makeFlourescentColors() []rl.Color {
|
||||
fc := make([]rl.Color, len(FlourescentHues))
|
||||
for i, hue := range(FlourescentHues) {
|
||||
fc[i] = rl.ColorFromHSV(hue, 1.0, 1.0)
|
||||
}
|
||||
return fc
|
||||
}
|
||||
|
||||
type ColorCycle interface {
|
||||
Next() rl.Color
|
||||
}
|
||||
|
||||
type ArrayBackedColorCycle struct {
|
||||
colors []rl.Color
|
||||
index int
|
||||
}
|
||||
|
||||
func NewFixedColorCycle(colors []rl.Color) ArrayBackedColorCycle {
|
||||
return ArrayBackedColorCycle {
|
||||
colors: colors,
|
||||
index: 0,
|
||||
}
|
||||
}
|
||||
|
||||
func (c ArrayBackedColorCycle) Shuffle(seed int64) ColorCycle {
|
||||
r := rand.New(rand.NewSource(seed))
|
||||
cprime := &ArrayBackedColorCycle {
|
||||
colors: make([]rl.Color, len(c.colors)),
|
||||
index: 0,
|
||||
}
|
||||
r.Shuffle(len(c.colors), func(i, j int) {
|
||||
cprime.colors[i] = c.colors[j]
|
||||
})
|
||||
return cprime
|
||||
}
|
||||
|
||||
func (c *ArrayBackedColorCycle) Next() rl.Color {
|
||||
color := c.colors[c.index]
|
||||
c.index = (c.index + 1) % len(c.colors)
|
||||
return color
|
||||
}
|
||||
|
||||
29
main.go
29
main.go
@@ -1,13 +1,15 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
// "fmt"
|
||||
"fmt"
|
||||
"log"
|
||||
"math/rand"
|
||||
"os"
|
||||
"time"
|
||||
"flag"
|
||||
|
||||
g "github.com/d2fn/sumi/internal/graphics"
|
||||
|
||||
gui "github.com/gen2brain/raylib-go/raygui"
|
||||
rl "github.com/gen2brain/raylib-go/raylib"
|
||||
//"github.com/ojrac/opensimplex-go"
|
||||
@@ -46,12 +48,16 @@ func main() {
|
||||
|
||||
BlendModeToggleGroupActive := int32(0)
|
||||
|
||||
// reproducable flourescent color cycle
|
||||
colorCycle := g.NewFixedColorCycle(g.FlourescentColors)//.Shuffle(0)
|
||||
|
||||
rl.SetTargetFPS(60)
|
||||
t0 := time.Now()
|
||||
|
||||
rng := rand.New(rand.NewSource(0))
|
||||
//imageField := NewImageField("/home/d/Dropbox/art/data/david.png")
|
||||
imageField := NewImageField("/home/d/Dropbox/art/data/bassrockastro/Photo Dec 24 2025, 5 58 23 PM.jpg")
|
||||
imageField := NewImageField("/home/d/Dropbox/art/data/david.png")
|
||||
//imageField := NewImageField("/home/d/Dropbox/art/data/bassrockastro/Photo Dec 24 2025, 5 58 23 PM.jpg")
|
||||
//imageField := NewImageField("/home/d/Dropbox/art/data/bassrockastro/andromeda.jpg")
|
||||
//imageField := NewImageField("/home/d/Dropbox/art/data/moses_statue.jpg")
|
||||
field :=
|
||||
&TranslateField {
|
||||
@@ -66,11 +72,24 @@ func main() {
|
||||
|
||||
sketch := NewSketch(sourceWidth, sourceHeight)
|
||||
|
||||
fieldColor := colorCycle.Next()
|
||||
fmt.Printf("field color = %v\n", fieldColor)
|
||||
|
||||
|
||||
sketch.AddColorLayer("background-magenta", rl.Magenta)
|
||||
sketch.AddColorLayer("background-black", rl.Black)
|
||||
sketch.AddLayer("field", &FieldLayer{field: field, loColor: rl.NewColor(0, 0, 0, 0), hiColor: rl.Yellow, dirty: true})
|
||||
contourLayer := NewContourLayer(&sketch, rng, field)
|
||||
sketch.AddLayer("field", &FieldLayer{field: field, loColor: rl.NewColor(0, 0, 0, 0), hiColor: fieldColor, dirty: true})
|
||||
actorColor := colorCycle.Next()
|
||||
|
||||
fmt.Printf("actor color = %v\n", actorColor)
|
||||
|
||||
hsv := rl.ColorToHSV(actorColor);
|
||||
hsv.Z *= 0.7
|
||||
actorColor = rl.ColorFromHSV(hsv.X, hsv.Y, hsv.Z)
|
||||
actorColor.A = 50
|
||||
//NewColor(11, 35, 176, 50),
|
||||
//r
|
||||
contourLayer := NewContourLayer(&sketch, rng, field, actorColor)
|
||||
sketch.AddLayer("contours", contourLayer)
|
||||
sketch.AddLayer("sierpinski-arrowhead", sierpinskiLayer)
|
||||
// aurora := NewImageLayer("/home/d/Dropbox/photos/Events/2025/Aurora/Photo Nov 11 2025, 9 52 03 PM.jpg")
|
||||
|
||||
Reference in New Issue
Block a user