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
import (
"image/color"
"sync"
"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 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 newParticleSpeed [MAXPOINTS]rl.Vector2
var particleFriction float32 = 0.65
@@ -92,6 +93,7 @@ func physics(particleList *[MAXPOINTS]rl.Vector2, particleCount int, particleLis
var masse float32 = 0.1
var electrostaticRange float32 = 50 //range wiie weit die kraftwirkung ist
var electroStrength float32 = 4000
var hue = [MAXPOINTS]float32{}
for j := float64(0); j < 50; {
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)
newParticleList[i] = rl.Vector2Add(
@@ -188,7 +193,8 @@ func main() {
var particleRowCount int = 40
var particleCount int = particleRowCount * particleColumnCount
var particleRadius float32 = 5
var particleColor rl.Color = rl.Black
var particleColorList [MAXPOINTS]rl.Color
particleColor := &particleColorList
var particleListKey sync.Mutex
var obstacleCount int = 0
@@ -212,16 +218,16 @@ func main() {
obstacles[3] = &ceiling
obstacleCount++
go physics(&particleList, particleCount, &particleListKey, &obstacles, &particleRadius, &obstacleCount)
go physics(&particleList, particleCount, &particleListKey, &obstacles, &particleRadius, &obstacleCount, particleColor)
for !rl.WindowShouldClose() {
rl.ClearBackground(rl.RayWhite)
rl.ClearBackground(color.RGBA{15, 16, 23, 1})
particleListKey.Lock()
rl.BeginDrawing()
for i := 0; i < particleCount; i++ {
rl.DrawCircleV(particleList[i], particleRadius, particleColor)
rl.DrawCircleV(particleList[i], particleRadius, (*particleColor)[i])
}
particleListKey.Unlock()