public static Generalization[] Merge(Generalization[] prev_gens, Generalization[] new_gens) { List <Generalization> gens = new List <Generalization>(); if (prev_gens.Length > 0 && prev_gens.Length == new_gens.Length && prev_gens[0].Type == new_gens[0].Type) { for (int i = 0; i < prev_gens.Length; i++) { MouseDragGeneralization prev_gen = (MouseDragGeneralization)prev_gens[i]; MouseDragGeneralization new_gen = (MouseDragGeneralization)new_gens[i]; int xi1 = prev_gen.AverageXi, xi2 = new_gen.AverageXi, yi1 = prev_gen.AverageYi, yi2 = new_gen.AverageYi; int xf1 = prev_gen.AverageXf, xf2 = new_gen.AverageXf, yf1 = prev_gen.AverageYf, yf2 = new_gen.AverageYf; if (xi2 <= (int)(xi1 + MouseAction.MAX_X_OFFSET * 2) && xi2 >= (int)(xi1 - MouseAction.MAX_X_OFFSET * 2) && yi2 <= (int)(yi1 + MouseAction.MAX_Y_OFFSET * 2) && yi2 >= (int)(yi1 - MouseAction.MAX_Y_OFFSET * 2) && xf2 <= (int)(xf1 + MouseAction.MAX_X_OFFSET * 2) && xf2 >= (int)(xf1 - MouseAction.MAX_X_OFFSET * 2) && yf2 <= (int)(yf1 + MouseAction.MAX_Y_OFFSET * 2) && yf2 >= (int)(yf1 - MouseAction.MAX_Y_OFFSET * 2)) { gens.Add(new MouseDragGeneralization(GetIntAverage(xi1, xi2), GetIntAverage(yi1, yi2), GetIntAverage(xf1, xf2), GetIntAverage(yf1, yf2), new_gen.Time, prev_gen.Occurrences + 1)); } } } return(gens.ToArray()); }
public override bool Equals(object obj) { if (obj == null) // check if its null { return(false); } if (this.GetType() != obj.GetType()) // check if the type is the same { return(false); } MouseDragGeneralization generalization = (MouseDragGeneralization)obj; if (generalization == null) // check if it can be casted { return(false); } if (generalization.AverageXi == this.AverageXi && generalization.AverageYi == this.AverageYi) { return(true); } else { return(false); } }