Regenbogen balls und darkmode

This commit is contained in:
any
2026-05-11 23:15:36 +02:00
parent 17282be999
commit d094450859
+12 -6
View File
@@ -1,6 +1,7 @@
package main package main
import ( import (
"image/color"
"sync" "sync"
"time" "time"
@@ -81,10 +82,10 @@ func obstacleReflect(particlePos rl.Vector2, particleSpeed *rl.Vector2, obstacle
} }
} }
func physics(particleList *[MAXPOINTS]rl.Vector2, particleCount int, particleListKey *sync.Mutex, obstacles *([MAXOBSTACLES](*quad)), particleRadius *float32, obstacleCount *int) { func physics(particleList *[MAXPOINTS]rl.Vector2, particleCount int, particleListKey *sync.Mutex, obstacles *([MAXOBSTACLES](*quad)), particleRadius *float32, obstacleCount *int, particleColor *[MAXPOINTS]rl.Color) {
var particleSpeed = [MAXPOINTS]rl.Vector2{{0, -300}} //pixel pro Sekunde var particleSpeed = [MAXPOINTS]rl.Vector2{{0, -300}} //pixel pro Sekunde
var timeIncrement float64 = 0.03 var timeIncrement float64 = 0.03
var gravity rl.Vector2 = rl.Vector2{0, 0 * 300} var gravity rl.Vector2 = rl.Vector2{0, 300}
var newParticleList [MAXPOINTS]rl.Vector2 var newParticleList [MAXPOINTS]rl.Vector2
var newParticleSpeed [MAXPOINTS]rl.Vector2 var newParticleSpeed [MAXPOINTS]rl.Vector2
var particleFriction float32 = 0.65 var particleFriction float32 = 0.65
@@ -92,6 +93,7 @@ func physics(particleList *[MAXPOINTS]rl.Vector2, particleCount int, particleLis
var masse float32 = 0.1 var masse float32 = 0.1
var electrostaticRange float32 = 50 //range wiie weit die kraftwirkung ist var electrostaticRange float32 = 50 //range wiie weit die kraftwirkung ist
var electroStrength float32 = 4000 var electroStrength float32 = 4000
var hue = [MAXPOINTS]float32{}
for j := float64(0); j < 50; { for j := float64(0); j < 50; {
var startTime time.Time = time.Now() var startTime time.Time = time.Now()
@@ -137,6 +139,9 @@ func physics(particleList *[MAXPOINTS]rl.Vector2, particleCount int, particleLis
} }
hue[i]++
(*particleColor)[i] = rl.ColorFromHSV(hue[i], 1.0, 1.0)
obstacleReflect(currentPositions[i], &particleSpeed[i], obstacles, particleRadius, obstacleCount) obstacleReflect(currentPositions[i], &particleSpeed[i], obstacles, particleRadius, obstacleCount)
newParticleList[i] = rl.Vector2Add( newParticleList[i] = rl.Vector2Add(
@@ -188,7 +193,8 @@ func main() {
var particleRowCount int = 40 var particleRowCount int = 40
var particleCount int = particleRowCount * particleColumnCount var particleCount int = particleRowCount * particleColumnCount
var particleRadius float32 = 5 var particleRadius float32 = 5
var particleColor rl.Color = rl.Black var particleColorList [MAXPOINTS]rl.Color
particleColor := &particleColorList
var particleListKey sync.Mutex var particleListKey sync.Mutex
var obstacleCount int = 0 var obstacleCount int = 0
@@ -212,16 +218,16 @@ func main() {
obstacles[3] = &ceiling obstacles[3] = &ceiling
obstacleCount++ obstacleCount++
go physics(&particleList, particleCount, &particleListKey, &obstacles, &particleRadius, &obstacleCount) go physics(&particleList, particleCount, &particleListKey, &obstacles, &particleRadius, &obstacleCount, particleColor)
for !rl.WindowShouldClose() { for !rl.WindowShouldClose() {
rl.ClearBackground(rl.RayWhite) rl.ClearBackground(color.RGBA{15, 16, 23, 1})
particleListKey.Lock() particleListKey.Lock()
rl.BeginDrawing() rl.BeginDrawing()
for i := 0; i < particleCount; i++ { for i := 0; i < particleCount; i++ {
rl.DrawCircleV(particleList[i], particleRadius, particleColor) rl.DrawCircleV(particleList[i], particleRadius, (*particleColor)[i])
} }
particleListKey.Unlock() particleListKey.Unlock()