private Sketch Normalize(Sketch original)
        {
            Sketch sketch = SketchTools.Clone(original);

            sketch = SketchTransformation.Resample(sketch, N);
            sketch = SketchTransformation.ScaleSquare(sketch, Size);
            sketch = SketchTransformation.TranslateCentroid(sketch, K);

            return(sketch);
        }
        private void MyCalculateButton_Click(object sender, RoutedEventArgs e)
        {
            SketchPair input    = myInputPairs[MyInputsComboBox.SelectedIndex];
            SketchPair template = myInputPairs[MyTemplatesComboBox.SelectedIndex];

            double distance1   = SketchTools.Distance(input.Transformed, template.Transformed);
            double distance2   = SketchTools.Distance(template.Transformed, input.Transformed);
            double minDistance = Math.Min(distance1, distance2);

            MyLrDistanceText.Text  = "" + distance1;
            MyRlDistanceText.Text  = "" + distance2;
            MyMinDistanceText.Text = "" + minDistance;
        }
        private void MyTemplatesComboBox_SelectionChanged(object sender, SelectionChangedEventArgs e)
        {
            if (!IsLoaded)
            {
                return;
            }

            MyTemplateInkCanvas.InkPresenter.StrokeContainer.Clear();

            int    index  = MyTemplatesComboBox.SelectedIndex;
            Sketch sketch = SketchTools.Clone(myTemplatePairs[index].Transformed);

            MyTemplateInkCanvas.InkPresenter.StrokeContainer.AddStrokes(sketch.Strokes);
        }
        private async Task ReadData()
        {
            // get directory of model templates
            string root          = Package.Current.InstalledLocation.Path;
            string inputsPath    = root + @"\Assets\Inputs\";
            string templatesPath = root + @"\Assets\Models\";

            //
            StorageFolder inputsFolder = await StorageFolder.GetFolderFromPathAsync(inputsPath);

            StorageFolder templatesFolder = await StorageFolder.GetFolderFromPathAsync(templatesPath);

            //
            List <StorageFile> inputFiles    = new List <StorageFile>();
            List <StorageFile> templateFiles = new List <StorageFile>();

            foreach (StorageFile file in await inputsFolder.GetFilesAsync())
            {
                if (file.Name.EndsWith(".xml"))
                {
                    inputFiles.Add(file);
                }
            }
            foreach (StorageFile file in await templatesFolder.GetFilesAsync())
            {
                if (file.Name.EndsWith(".xml"))
                {
                    templateFiles.Add(file);
                }
            }

            //
            myInputs         = new List <Sketch>();
            myTemplates      = new List <Sketch>();
            myInputLabels    = new List <string>();
            myTemplateLabels = new List <string>();
            foreach (StorageFile file in inputFiles)
            {
                Sketch sketch = await SketchTools.ReadXml(file, PEN_DRAWING_ATTRIBUTES); myInputs.Add(sketch); myInputLabels.Add(sketch.Label);
            }
            foreach (StorageFile file in templateFiles)
            {
                Sketch sketch = await SketchTools.ReadXml(file, PEN_DRAWING_ATTRIBUTES); myTemplates.Add(sketch); myTemplateLabels.Add(sketch.Label);
            }
        }