added electrostatische kraft, aber ist viel zu hoch
This commit is contained in:
@@ -88,6 +88,10 @@ func physics(particleList *[MAXPOINTS]rl.Vector2, particleCount int, particleLis
|
||||
var newParticleList [MAXPOINTS]rl.Vector2
|
||||
var newParticleSpeed [MAXPOINTS]rl.Vector2
|
||||
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; {
|
||||
var startTime time.Time = time.Now()
|
||||
@@ -103,7 +107,7 @@ func physics(particleList *[MAXPOINTS]rl.Vector2, particleCount int, particleLis
|
||||
wg.Add(1)
|
||||
go func(i int) {
|
||||
defer wg.Done()
|
||||
|
||||
var electroForce rl.Vector2
|
||||
// Jede Goroutine arbeitet nur auf Index i → kein Datenkonflikt
|
||||
for l := 0; l < particleCount; l++ {
|
||||
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)
|
||||
}
|
||||
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)
|
||||
@@ -132,8 +144,8 @@ func physics(particleList *[MAXPOINTS]rl.Vector2, particleCount int, particleLis
|
||||
rl.Vector2Scale(particleSpeed[i], float32(timeIncrement)))
|
||||
|
||||
newParticleSpeed[i] = rl.Vector2Add(
|
||||
particleSpeed[i],
|
||||
rl.Vector2Scale(gravity, float32(timeIncrement)))
|
||||
rl.Vector2Add(particleSpeed[i], rl.Vector2Scale(gravity, float32(timeIncrement))),
|
||||
rl.Vector2Scale(electroForce, float32(timeIncrement)/masse))
|
||||
}(k)
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user