Browse Source

improved fingerDetection if multiple fingers are detected on the same spot

Alexander Hendrich 10 năm trước cách đây
mục cha
commit
606b70d2ce
1 tập tin đã thay đổi với 7 bổ sung1 xóa
  1. 7 1
      bbiwarg/Detectors/Fingers/FingerDetector.cs

+ 7 - 1
bbiwarg/Detectors/Fingers/FingerDetector.cs

@@ -139,6 +139,9 @@ namespace bbiwarg.Detectors.Fingers
             {
                 if (trail.NumSlices >= minNumSlices)
                 {
+                    //reorder finger slice so that it goes tip->hand
+                    //TODO
+
                     Finger finger = new Finger(trail);
 
                     //filter double hits (horizontal+vertical finger)
@@ -146,7 +149,10 @@ namespace bbiwarg.Detectors.Fingers
                     for (int i = fingers.Count - 1; i >= 0; i--)
                     {
                         Finger f = fingers[i];
-                        if (finger.getSimilarity(f) > 0.8)
+                        Line2D lineA = finger.Line;
+                        Line2D lineB = f.Line;
+
+                        if(lineA.getVerticalDistanceTo(lineB) < 5 && lineA.getParallelDistanceTo(lineB) < 5)
                         {
                             if (finger.SliceTrail.NumSlices > f.SliceTrail.NumSlices)
                                 fingers.RemoveAt(i);