/// <summary> /// Add a item to this cluster and adjust the cluster vector, itemship list and sum vector accordingly. /// </summary> /// <param name="item">The item to be added.</param> public void AddItemToCluster(FeatureItem item) { if (!ClusterItemList.Contains(item)) { ClusterItemList.Add(item); AdaptiveIntersect.UpdateFeatureIntersectionByLast(ClusterItemList, ClusterVector); AdaptiveIntersect.UpdateFeatureSummaryByLast(ClusterItemList, ClusterVectorSummary); //----- remove for debugging and tests only tempClusterVectorMagnitude = AdaptiveIntersect.CalculateVectorMagnitude(ClusterVector); //remove for debugging and tests only tempClusterVectorSummaryMagnitude = AdaptiveIntersect.CalculateVectorMagnitude(ClusterVectorSummary); //remove for debugging and tests only } }
/// <summary> /// Remove a item from this cluster and update cluster Vector accordingly (basd on other assigned items) /// Return false if ItemList is empty /// </summary> /// <param name="item">The item to be removed</param> public bool RemoveItemFromCluster(FeatureItem item) { if (ClusterItemList.Remove(item) == true) { if (ClusterItemList.Count > 0) //recalculate vector summary only if not empty { AdaptiveIntersect.CalculateFeatureIntersection(ClusterItemList, ClusterVector); AdaptiveIntersect.CalculateFeatureSummary(ClusterItemList, ClusterVectorSummary); //----- remove for debugging and tests only tempClusterVectorMagnitude = AdaptiveIntersect.CalculateVectorMagnitude(ClusterVector); //remove for debugging and tests only tempClusterVectorSummaryMagnitude = AdaptiveIntersect.CalculateVectorMagnitude(ClusterVectorSummary); //remove for debugging and tests only } } return(ClusterItemList.Count > 0); }