29 double aMaxGroupingDistanceCentroid,
30 double aMaxGroupingDistanceNeighbor,
31 double aMaxGroupingHeadingDifference,
32 double aMaxGroupingSpeedDifference,
33 double aMaxGroupingAngle,
34 double aMinGroupRadius,
35 bool aUseCentroidGrouping,
36 bool aUseNeighborGrouping,
37 bool aUseHeadingGrouping,
38 bool aUseSpeedGrouping,
39 bool aUseTypeGrouping);
43 std::list<WsfSA_Group*>& aCurrentlyPerceivedGroups,
44 const std::vector<WsfSA_EntityPerception*>& aPerceivedBogies,
45 const std::vector<WsfSA_EntityPerception*>& aPerceivedBandits,
73 void SetGroupingAlgorithms(GroupingAlgorithm aGroupingAlgorithm, ScoringAlgorithm aScoringAlgorithm);
78 std::string GenerateNewGroupName();
86 bool AttemptToJoinBestGroup(
WsfSA_EntityPerception* aEntity,
const std::list<WsfSA_Group*>& aCurrentlyPerceivedGroups);
93 void FormDegenerateGroups(std::list<WsfSA_EntityPerception*>& aAvailableList,
94 std::list<WsfSA_Group*>& aCurrentlyPerceivedGroups);
101 void FormDegenerateGroup(
WsfSA_EntityPerception* aEntity, std::list<WsfSA_Group*>& aCurrentlyPerceivedGroups);
104 void PositionalAlgorithm(
double aSimtime,
106 std::list<WsfSA_Group*>& aCurrentlyPerceivedGroups,
107 const std::vector<WsfSA_EntityPerception*>& aPerceivedBogies,
108 const std::vector<WsfSA_EntityPerception*>& aPerceivedBandits,
111 void FormAvailableList(
const std::vector<WsfSA_EntityPerception*>& aPerceivedBogies,
112 const std::vector<WsfSA_EntityPerception*>& aPerceivedBandits,
113 std::list<WsfSA_EntityPerception*>& aAvailableList,
117 bool VerifyGroupEntitiesAreValid(
WsfSA_Group* aGroup,
118 std::list<WsfSA_EntityPerception*>& aAvailableList,
119 bool aTestForAvailable);
128 std::list<WsfSA_EntityPerception*>& aConsiderationList,
129 std::list<WsfSA_Group*>& aCurrentlyPerceivedGroups);
131 void UpdateGroupEntityData(std::list<WsfSA_Group*>& aCurrentlyPerceivedGroups,
132 const std::list<WsfSA_EntityPerception*>& aAvailableList);
136 const std::list<WsfSA_EntityPerception*>& aAvailableList);
138 void UpdateCurrentGroups(
const std::list<WsfSA_Group*>& aCurrentlyPerceivedGroups);
140 void RemoveOldGroups(std::list<WsfSA_Group*>& aCurrentlyPerceivedGroups,
double aSimtime);
142 void MergeGroups(std::list<WsfSA_Group*>& aCurrentlyPerceivedGroups);
144 bool EntityIsInList(
const WsfSA_EntityPerception* aEntity,
const std::list<WsfSA_EntityPerception*>& aAvailableList)
const;
146 bool EntityIsInList(
const WsfSA_EntityPerception* aEntity,
const std::list<WsfSA_EntityPerception>& aAvailableList)
const;
148 void RemoveEntityFromList(
const WsfSA_EntityPerception* aEntity, std::list<WsfSA_EntityPerception*>& aAvailableList);
169 bool IsLastItemFriendlyOrNeutral(
const WsfSA_Group* aGroup)
const;
203 GroupingAlgorithm mGroupingAlgorithm = SIMPLE_POSITIONAL;
204 ScoringAlgorithm mScoringAlgorithm = SCORE_2D;
205 double mMaxGroupingDistanceCentroid = 8.0 * UtMath::cM_PER_NM;
206 double mMaxGroupingDistanceNeighbor = 4.0 * UtMath::cM_PER_NM;
207 double mMaxGroupingHeadingDifference = 10.0 * UtMath::cRAD_PER_DEG;
208 double mMaxGroupingSpeedDifference = 100.0;
209 double mMinGroupRadius_nm = 1.0;
211 bool mUseCentroidGrouping =
true;
212 bool mUseNeighborGrouping =
true;
213 bool mUseHeadingGrouping =
true;
214 bool mUseSpeedGrouping =
true;
215 bool mUseTypeGrouping =
false;
217 int mGroupNumber = 0;
219 double mLastSimtime = 0.0;
void UpdateAndAssessGroups(double aSimtime, const WsfPlatform *aPlatform, std::list< WsfSA_Group * > &aCurrentlyPerceivedGroups, const std::vector< WsfSA_EntityPerception * > &aPerceivedBogies, const std::vector< WsfSA_EntityPerception * > &aPerceivedBandits, bool aIgnoreBogies)
Definition WsfSA_GroupManager.cpp:44
void InitializeData(WsfPlatform *aPlatform, double aMaxGroupingDistanceCentroid, double aMaxGroupingDistanceNeighbor, double aMaxGroupingHeadingDifference, double aMaxGroupingSpeedDifference, double aMaxGroupingAngle, double aMinGroupRadius, bool aUseCentroidGrouping, bool aUseNeighborGrouping, bool aUseHeadingGrouping, bool aUseSpeedGrouping, bool aUseTypeGrouping)
Definition WsfSA_GroupManager.cpp:18