private void fusionDetection(Word currentWord, Hand secondHand) { if (!secondHand.grip) { foreach (var word in words.ToList()) { if (word != currentWord) { if ((word.typeWord == "top" && currentWord.typeWord == "bottom") || (currentWord.typeWord == "top" && word.typeWord == "bottom")) { if (ImageTools.getDistance(word, currentWord) < 4000) { //do fusion currentWord.Fusion(word); this.window.canvas.Children.Remove(word); words.Remove(word); } } } } } }
private void transformationDetection(Word word, Hand secondHand) { // Detect if both hands are on the word if (secondHand.grip && secondHand.attachedObjectName == word.Name) { if (word.typeWord == "complete") { Word nouveau = word.Duplicate(); words.Add(nouveau); this.window.canvas.Children.Add(nouveau); secondHand.attachedObjectName = nouveau.Name; } } }
// method to manage to zoom detection private void zoomDetection(Word word, Hand secondHand) { //zoom if second hand gripping and without a text attached if (secondHand.grip && secondHand.attachedObjectName == "") { var distance = ImageTools.getDistance(hands.Item1, hands.Item2); var difference = distance - Hand.distance; var facteur = difference / 1000000 + 1; if (difference > 5000 && word.Width * facteur <= Word.MAX_WIDTH) { word.Width *= facteur; word.Height *= facteur; } else if (difference < -5000 && word.Width * facteur >= Word.MIN_WIDTH) { word.Width *= facteur; word.Height *= facteur; } Hand.distance = distance; } }
// method to manage to rotate detection private void rotationDetection(Word word, Hand secondHand) { //mzoom if second hand open and without a text attached if (secondHand.grip && secondHand.attachedObjectName == "") { double wordRotation = word.beginRotation; var newRotation = (wordRotation - ImageTools.getRotation(hands.Item1, hands.Item2)) % 360; word.RenderTransform = new RotateTransform(newRotation); } }