Compare commits

..

2 Commits

Author SHA1 Message Date
4eb6637062 fix brownian behavior 2022-05-12 20:22:18 +08:00
8670b577f9 Add sample tracking behavior 2022-05-11 13:09:51 +08:00
2 changed files with 18 additions and 6 deletions

View File

@ -132,7 +132,7 @@ class Brownian extends Behavior<IBrownianBehaviorParameter, IBrownianBehaviorEve
const vLen = individual.vectorLength(individual.velocity);
// 随机旋转算法
if (vLen !== 0) {
if (vLen > 0) {
randomDir = this.randomFocusRange(
[
individual.velocity[0] / vLen,
@ -141,6 +141,10 @@ class Brownian extends Behavior<IBrownianBehaviorParameter, IBrownianBehaviorEve
],
this.parameter.angle / 2
);
if (isNaN(randomDir[0]) || isNaN(randomDir[1]) || isNaN(randomDir[2])) {
randomDir = this.randomFocus360()
}
}
else {
@ -153,10 +157,12 @@ class Brownian extends Behavior<IBrownianBehaviorParameter, IBrownianBehaviorEve
randomDir = this.randomFocus360()
}
const randomLength = minStrength + Math.random() * (maxStrength - minStrength);
individual.applyForce(
minStrength + randomDir[0] * (maxStrength - minStrength),
minStrength + randomDir[1] * (maxStrength - minStrength),
minStrength + randomDir[2] * (maxStrength - minStrength)
randomDir[0] * randomLength,
randomDir[1] * randomLength,
randomDir[2] * randomLength
);
nextTime = minFrequency + Math.random() * (maxFrequency - minFrequency);

View File

@ -5,6 +5,7 @@ import { Model } from "@Model/Model";
type ISampleTrackingBehaviorParameter = {
target: "CLG",
key: "string",
strength: "number",
range: "number",
angle: "number",
@ -27,6 +28,7 @@ class SampleTracking extends Behavior<ISampleTrackingBehaviorParameter, ISampleT
public override parameterOption = {
target: { type: "CLG", name: "$Target" },
key: { type: "string", name: "$Key"},
range: { type: "number", name: "$Range", defaultValue: 4, numberMin: 0, numberStep: .1 },
angle: { type: "number", name: "$Angle", defaultValue: 180, numberMin: 0, numberMax: 360, numberStep: 5 },
strength: { type: "number", name: "$Strength", defaultValue: 1, numberMin: 0, numberStep: .1 },
@ -81,7 +83,7 @@ class SampleTracking extends Behavior<ISampleTrackingBehaviorParameter, ISampleT
dirArr[i][0] += targetDir[0];
dirArr[i][1] += targetDir[1];
dirArr[i][2] += targetDir[2];
valArr[i] += targetIndividual.getData("Wastage.Pheromone") ?? 0;
valArr[i] += targetIndividual.getData(this.parameter.key) ?? 0;
isFindNest = true;
}
}
@ -90,7 +92,7 @@ class SampleTracking extends Behavior<ISampleTrackingBehaviorParameter, ISampleT
// 保存
dirArr.push(targetDir);
valArr.push(targetIndividual.getData("Wastage.Pheromone") ?? 0);
valArr.push(targetIndividual.getData(this.parameter.key) ?? 0);
}
}
});
@ -124,6 +126,10 @@ class SampleTracking extends Behavior<ISampleTrackingBehaviorParameter, ISampleT
"ZH_CN": "追踪目标",
"EN_US": "Tracking target"
},
"$Key": {
"ZH_CN": "计算键值",
"EN_US": "Calculate key value"
},
"$Accuracy": {
"ZH_CN": "采样精度",
"EN_US": "Sampling accuracy"