private double findNewOrientation(Ruler sender, Entry item) { double entryOrientation = item.Orientation; if (entryOrientation < -180) { entryOrientation += 360; } else if (entryOrientation > 180) { entryOrientation -= 360; } List<double> orientations = new List<double>(); orientations.Add(((Ruler)sender).Orientation); orientations.Add((((Ruler)sender).Orientation + 90) % 360); orientations.Add((((Ruler)sender).Orientation + 180) % 360); orientations.Add((((Ruler)sender).Orientation + 270) % 360); orientations.Add(((Ruler)sender).Orientation - 360); orientations.Add(((((Ruler)sender).Orientation + 90) % 360) - 360); orientations.Add(((((Ruler)sender).Orientation + 180) % 360) - 360); orientations.Add(((((Ruler)sender).Orientation + 270) % 360) - 360); orientations.Sort(); double orDiff = Math.Abs(entryOrientation - orientations[0]); double newOr = orientations[0]; foreach (double d in orientations) { if (Math.Abs(entryOrientation - d) < orDiff) { newOr = d; orDiff = Math.Abs(entryOrientation - d); } } return newOr; }
private void AddRulerButton_Click(object sender, RoutedEventArgs e) { Ruler ruler = new Ruler(); ruler.MouseMove += new MouseEventHandler(ruler_MouseMove); ruler.PreviewTouchMove += new EventHandler<TouchEventArgs>(ruler_PreviewTouchMove); AddNewTool(ruler); }
private int isCollidingOn(Ruler tool, Entry entry) { Point difference = new Point(entry.Center.X - tool.Center.X, entry.Center.Y - tool.Center.Y); if (difference.X > 0 && Math.Abs(difference.X) > Math.Abs(difference.Y)) { //Console.WriteLine("RIGHT"); return RIGHT; } else if (difference.X < 0 && Math.Abs(difference.X) > Math.Abs(difference.Y)) { //Console.WriteLine("LEFT"); return LEFT; } else if (difference.Y < 0 && Math.Abs(difference.Y) > Math.Abs(difference.X)) { //Console.WriteLine("TOP"); return TOP; } else { //Console.WriteLine("BOTTOM"); return BOTTOM; } }