automated snapshot

This commit is contained in:
sumi
2025-12-26 00:55:59 -06:00
parent 91fb552651
commit 5755e953b2
3 changed files with 92 additions and 11 deletions

View File

@@ -11,10 +11,11 @@ type ContourLayer struct {
maxActors uint32 maxActors uint32
actors []*Actor actors []*Actor
actorIndex uint32 actorIndex uint32
actorColor rl.Color
rng *rand.Rand 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 maxActors := 200000
@@ -25,15 +26,14 @@ func NewContourLayer(sketch *Sketch, rng *rand.Rand, field Field) *ContourLayer
field: field, field: field,
actors: actors, actors: actors,
maxActors: uint32(maxActors), maxActors: uint32(maxActors),
actorColor: color,
actorIndex: 0, actorIndex: 0,
} }
//layer.AddActors(1, sketch.sourceWidth, sketch.sourceHeight)
return &layer return &layer
} }
func (s *ContourLayer) AddActors(n, sourceWidth, sourceHeight int32) { func (s *ContourLayer) AddActors(color rl.Color, n, sourceWidth, sourceHeight int32) {
for range n { for range n {
x := s.rng.Int31() % sourceWidth x := s.rng.Int31() % sourceWidth
y := s.rng.Int31() % sourceHeight 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)}, position: rl.Vector2{X: float32(x), Y: float32(y)},
field: s.field, field: s.field,
stepSize: 1, stepSize: 1,
color: rl.NewColor(11, 35, 176, 50), color: s.actorColor,
} }
s.actors[s.actorIndex] = newActor s.actors[s.actorIndex] = newActor
s.actorIndex = (s.actorIndex + 1) % s.maxActors 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) { 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) { func (s *ContourLayer) Draw(ctx *RenderCtx) {

View 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
View File

@@ -1,13 +1,15 @@
package main package main
import ( import (
// "fmt" "fmt"
"log" "log"
"math/rand" "math/rand"
"os" "os"
"time" "time"
"flag" "flag"
g "github.com/d2fn/sumi/internal/graphics"
gui "github.com/gen2brain/raylib-go/raygui" gui "github.com/gen2brain/raylib-go/raygui"
rl "github.com/gen2brain/raylib-go/raylib" rl "github.com/gen2brain/raylib-go/raylib"
//"github.com/ojrac/opensimplex-go" //"github.com/ojrac/opensimplex-go"
@@ -46,12 +48,16 @@ func main() {
BlendModeToggleGroupActive := int32(0) BlendModeToggleGroupActive := int32(0)
// reproducable flourescent color cycle
colorCycle := g.NewFixedColorCycle(g.FlourescentColors)//.Shuffle(0)
rl.SetTargetFPS(60) rl.SetTargetFPS(60)
t0 := time.Now() t0 := time.Now()
rng := rand.New(rand.NewSource(0)) rng := rand.New(rand.NewSource(0))
//imageField := NewImageField("/home/d/Dropbox/art/data/david.png") 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/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") //imageField := NewImageField("/home/d/Dropbox/art/data/moses_statue.jpg")
field := field :=
&TranslateField { &TranslateField {
@@ -66,11 +72,24 @@ func main() {
sketch := NewSketch(sourceWidth, sourceHeight) sketch := NewSketch(sourceWidth, sourceHeight)
fieldColor := colorCycle.Next()
fmt.Printf("field color = %v\n", fieldColor)
sketch.AddColorLayer("background-magenta", rl.Magenta) sketch.AddColorLayer("background-magenta", rl.Magenta)
sketch.AddColorLayer("background-black", rl.Black) sketch.AddColorLayer("background-black", rl.Black)
sketch.AddLayer("field", &FieldLayer{field: field, loColor: rl.NewColor(0, 0, 0, 0), hiColor: rl.Yellow, dirty: true}) sketch.AddLayer("field", &FieldLayer{field: field, loColor: rl.NewColor(0, 0, 0, 0), hiColor: fieldColor, dirty: true})
contourLayer := NewContourLayer(&sketch, rng, field) 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("contours", contourLayer)
sketch.AddLayer("sierpinski-arrowhead", sierpinskiLayer) sketch.AddLayer("sierpinski-arrowhead", sierpinskiLayer)
// aurora := NewImageLayer("/home/d/Dropbox/photos/Events/2025/Aurora/Photo Nov 11 2025, 9 52 03 PM.jpg") // aurora := NewImageLayer("/home/d/Dropbox/photos/Events/2025/Aurora/Photo Nov 11 2025, 9 52 03 PM.jpg")