private double strokeDist(Stroke stroke1, Stroke stroke2) { return euclideanDist(stroke1.strokeInit, stroke2.strokeInit) + euclideanDist(stroke1.strokeFinit, stroke2.strokeFinit); }
/// <summary> /// Init Stroke /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void canvas1_MouseDown(object sender, MouseButtonEventArgs e) { #if DEBUG downTextBlock.Text = e.GetPosition(null).ToString(); #endif strokeInProgress = true; lastStrokePoint = e.GetPosition(null); // Set up new stroke CurStroke = new Stroke(); CurStroke.strokeInit = lastStrokePoint; curStrokePoints.AddLast(lastStrokePoint); }
/// <summary> /// Given train symbols to look for, pick up the values and /// build the trained dataset. /// </summary> private void LoadData() { foreach (char symbol in this.trainSymbols) { StreamReader sr = new StreamReader(symbol + ".txt"); LinkedList<Stroke> strokeList = new LinkedList<Stroke>(); while (!sr.EndOfStream) { Stroke stroke = new Stroke(); Point[] coords = new Point[3]; int i = 0; string dataLine = sr.ReadLine(); foreach (string ptDataStr in dataLine.Split(':')) { if (!string.IsNullOrWhiteSpace(ptDataStr)) { coords[i] = parsePoint(ptDataStr); i++; } } stroke.strokeInit = coords[0]; stroke.strokeFinit = coords[2]; stroke.centroid = coords[1]; strokeList.AddLast(stroke); } GlobalDataSet.Add(""+symbol, strokeList.ToArray<Stroke>()); } }