Funktion spawnParticleAsGrid() ausgelagert. Funktion spawned partikel in einem Grid um die Startposition für die Simulation zu setzen

This commit is contained in:
any
2026-05-10 13:37:40 +02:00
parent 35f73eca54
commit dfb72f7127
+24 -17
View File
@@ -1,7 +1,6 @@
package main package main
import ( import (
"fmt"
"time" "time"
rl "github.com/gen2brain/raylib-go/raylib" rl "github.com/gen2brain/raylib-go/raylib"
@@ -9,6 +8,17 @@ import (
const MAXPOINTS = 100 const MAXPOINTS = 100
func spawnParticlesAsGrid(particleWidth float32, particleHeight float32, particleColumnCount int, particleRowCount int, particleList *[MAXPOINTS]rl.Vector2) {
var particleLeftCornerPos rl.Vector2 = rl.Vector2{500, 300}
for y := 0; y < (particleColumnCount); y++ {
for x := 0; x < particleRowCount; x++ {
newParticle := rl.NewVector2(particleWidth*(float32(x)/float32(particleRowCount))+particleLeftCornerPos.X, particleHeight*(float32(y)/float32(particleColumnCount))+particleLeftCornerPos.Y)
particleList[y*particleRowCount+x] = newParticle
}
}
}
func main() { func main() {
rl.InitWindow(1200, 800, "raylib [core] example - basic window") rl.InitWindow(1200, 800, "raylib [core] example - basic window")
defer rl.CloseWindow() defer rl.CloseWindow()
@@ -25,37 +35,34 @@ func main() {
var particleWidth float32 = 200 var particleWidth float32 = 200
var particleHeight float32 = 200 var particleHeight float32 = 200
var particleColumnCount int = 10 var particleColumnCount int = 10
var particleRowCount int = MAXPOINTS / particleColumnCount var particleRowCount int = 10
var particleRadius float32 = 10 var particleRadius float32 = 5
var particleColor rl.Color = rl.Black var particleColor rl.Color = rl.Black
var particleLeftCornerPos rl.Vector2 = rl.Vector2{500, 300}
var gravity rl.Vector2 = rl.Vector2{0, 10} var gravity rl.Vector2 = rl.Vector2{0, 10}
//var stepSize float32 = 10 //var stepSize float32 = 10
var particleSpeed rl.Vector2 = rl.Vector2{0, -100} //pixel pro zeitinkrement var particleSpeed rl.Vector2 = rl.Vector2{0, -100} //pixel pro zeitinkrement
var timeIncrement float32 = 0.1 var timeIncrement float32 = 0.1
var particleList = [MAXPOINTS]rl.Vector2{} var particleList = [MAXPOINTS]rl.Vector2{}
for y := 0; y < (particleColumnCount); y++ { spawnParticlesAsGrid(particleWidth, particleHeight, particleColumnCount, particleRowCount, &particleList)
for x := 0; x < particleRowCount; x++ {
if (y == particleColumnCount) && (x >= MAXPOINTS%particleColumnCount) {
fmt.Println(y, x)
} else {
newParticle := rl.NewVector2(particleWidth*(float32(x)/float32(particleRowCount))+particleLeftCornerPos.X, particleHeight*(float32(y)/float32(particleColumnCount))+particleLeftCornerPos.Y)
particleList[y*particleRowCount+x] = newParticle
}
}
}
for j := float32(0); j < 20; { for j := float32(0); j < 20; {
rl.BeginDrawing() rl.BeginDrawing()
time.Sleep(time.Duration(timeIncrement*100) * time.Millisecond) time.Sleep(time.Duration(timeIncrement*100) * time.Millisecond)
for i := 0; i < MAXPOINTS; i++ { for i := 0; i < MAXPOINTS; i++ {
rl.DrawCircleV(particleList[i], particleRadius, particleColor) rl.DrawCircleV(particleList[i], particleRadius, particleColor)
particleList[i] = rl.Vector2Add(particleList[i], rl.Vector2Scale(particleSpeed, timeIncrement)) particleList[i] =
rl.Vector2Add(
particleList[i],
rl.Vector2Scale(particleSpeed, timeIncrement))
} }
rl.EndDrawing() rl.EndDrawing()
rl.ClearBackground(rl.RayWhite) rl.ClearBackground(rl.RayWhite)
fmt.Println(particleList) //fmt.Println(particleList)
particleSpeed = rl.Vector2Add(particleSpeed, rl.Vector2Scale(gravity, timeIncrement)) particleSpeed =
rl.Vector2Add(
particleSpeed,
rl.Vector2Scale(gravity, timeIncrement))
j += timeIncrement j += timeIncrement
} }