added electrostatische kraft, aber ist viel zu hoch

This commit is contained in:
any
2026-05-10 23:20:50 +02:00
parent 9153ff23ef
commit b628af625d
+15 -3
View File
@@ -88,6 +88,10 @@ func physics(particleList *[MAXPOINTS]rl.Vector2, particleCount int, particleLis
var newParticleList [MAXPOINTS]rl.Vector2 var newParticleList [MAXPOINTS]rl.Vector2
var newParticleSpeed [MAXPOINTS]rl.Vector2 var newParticleSpeed [MAXPOINTS]rl.Vector2
var particleFriction float32 = 0.85 var particleFriction float32 = 0.85
var particleLadung int = -1
var masse float32 = 1
var electrostaticRange float32 = 50 //range wiie weit die kraftwirkung ist
var electroStrength float32 = 500000
for j := float64(0); j < 50; { for j := float64(0); j < 50; {
var startTime time.Time = time.Now() var startTime time.Time = time.Now()
@@ -103,7 +107,7 @@ func physics(particleList *[MAXPOINTS]rl.Vector2, particleCount int, particleLis
wg.Add(1) wg.Add(1)
go func(i int) { go func(i int) {
defer wg.Done() defer wg.Done()
var electroForce rl.Vector2
// Jede Goroutine arbeitet nur auf Index i → kein Datenkonflikt // Jede Goroutine arbeitet nur auf Index i → kein Datenkonflikt
for l := 0; l < particleCount; l++ { for l := 0; l < particleCount; l++ {
if l == i { if l == i {
@@ -123,6 +127,14 @@ func physics(particleList *[MAXPOINTS]rl.Vector2, particleCount int, particleLis
particleSpeed[i] = rl.Vector2Scale(rl.Vector2Reflect(particleSpeed[i], colNormal), particleFriction) particleSpeed[i] = rl.Vector2Scale(rl.Vector2Reflect(particleSpeed[i], colNormal), particleFriction)
} }
if dist < electrostaticRange {
var tempForce rl.Vector2 = rl.Vector2Scale(diff, float32(particleLadung)*(electroStrength/(dist*dist)))
electroForce = rl.Vector2Add(electroForce, tempForce)
}
newParticleSpeed[i] = rl.Vector2Add(
particleSpeed[i],
rl.Vector2Scale(electroForce, float32(timeIncrement)/masse))
} }
obstacleReflect(currentPositions[i], &particleSpeed[i], obstacles, particleRadius, obstacleCount) obstacleReflect(currentPositions[i], &particleSpeed[i], obstacles, particleRadius, obstacleCount)
@@ -132,8 +144,8 @@ func physics(particleList *[MAXPOINTS]rl.Vector2, particleCount int, particleLis
rl.Vector2Scale(particleSpeed[i], float32(timeIncrement))) rl.Vector2Scale(particleSpeed[i], float32(timeIncrement)))
newParticleSpeed[i] = rl.Vector2Add( newParticleSpeed[i] = rl.Vector2Add(
particleSpeed[i], rl.Vector2Add(particleSpeed[i], rl.Vector2Scale(gravity, float32(timeIncrement))),
rl.Vector2Scale(gravity, float32(timeIncrement))) rl.Vector2Scale(electroForce, float32(timeIncrement)/masse))
}(k) }(k)
} }