fix brownian behavior
This commit is contained in:
parent
8670b577f9
commit
4eb6637062
@ -132,7 +132,7 @@ class Brownian extends Behavior<IBrownianBehaviorParameter, IBrownianBehaviorEve
|
|||||||
const vLen = individual.vectorLength(individual.velocity);
|
const vLen = individual.vectorLength(individual.velocity);
|
||||||
|
|
||||||
// 随机旋转算法
|
// 随机旋转算法
|
||||||
if (vLen !== 0) {
|
if (vLen > 0) {
|
||||||
randomDir = this.randomFocusRange(
|
randomDir = this.randomFocusRange(
|
||||||
[
|
[
|
||||||
individual.velocity[0] / vLen,
|
individual.velocity[0] / vLen,
|
||||||
@ -141,6 +141,10 @@ class Brownian extends Behavior<IBrownianBehaviorParameter, IBrownianBehaviorEve
|
|||||||
],
|
],
|
||||||
this.parameter.angle / 2
|
this.parameter.angle / 2
|
||||||
);
|
);
|
||||||
|
|
||||||
|
if (isNaN(randomDir[0]) || isNaN(randomDir[1]) || isNaN(randomDir[2])) {
|
||||||
|
randomDir = this.randomFocus360()
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
else {
|
else {
|
||||||
@ -153,10 +157,12 @@ class Brownian extends Behavior<IBrownianBehaviorParameter, IBrownianBehaviorEve
|
|||||||
randomDir = this.randomFocus360()
|
randomDir = this.randomFocus360()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const randomLength = minStrength + Math.random() * (maxStrength - minStrength);
|
||||||
|
|
||||||
individual.applyForce(
|
individual.applyForce(
|
||||||
minStrength + randomDir[0] * (maxStrength - minStrength),
|
randomDir[0] * randomLength,
|
||||||
minStrength + randomDir[1] * (maxStrength - minStrength),
|
randomDir[1] * randomLength,
|
||||||
minStrength + randomDir[2] * (maxStrength - minStrength)
|
randomDir[2] * randomLength
|
||||||
);
|
);
|
||||||
|
|
||||||
nextTime = minFrequency + Math.random() * (maxFrequency - minFrequency);
|
nextTime = minFrequency + Math.random() * (maxFrequency - minFrequency);
|
||||||
|
Loading…
Reference in New Issue
Block a user