|
@@ -81,26 +81,29 @@ namespace bbiwarg.Detectors.Fingers
|
|
|
}
|
|
|
|
|
|
public float getSimilarity(Finger compareFinger) {
|
|
|
- /*//startDistance
|
|
|
+ //startDistance
|
|
|
float maxStartDistance = 100;
|
|
|
- float xDiffStart = lineEndPoint1.X - compareFinger.getLineEndPoint1().X;
|
|
|
- float yDiffStart = lineEndPoint1.X - compareFinger.getLineEndPoint1().Y;
|
|
|
+ float xDiffStart = lineEndPoint1.x - compareFinger.getLineEndPoint1().x;
|
|
|
+ float yDiffStart = lineEndPoint1.y - compareFinger.getLineEndPoint1().y;
|
|
|
float startDistance = (float)Math.Sqrt(xDiffStart * xDiffStart + yDiffStart * yDiffStart);
|
|
|
float startSimilarity = Math.Max(1 - (startDistance / maxStartDistance), 0);
|
|
|
|
|
|
//endDistance
|
|
|
- float maxEndDistance = 50;
|
|
|
- float xDiffEnd = lineEndPoint2.X - compareFinger.getLineEndPoint2().X;
|
|
|
- float yDiffEnd = lineEndPoint2.X - compareFinger.getLineEndPoint2().Y;
|
|
|
+ float maxEndDistance = 100;
|
|
|
+ float xDiffEnd = lineEndPoint2.x - compareFinger.getLineEndPoint2().x;
|
|
|
+ float yDiffEnd = lineEndPoint2.y - compareFinger.getLineEndPoint2().y;
|
|
|
float endDistance = (float)Math.Sqrt(xDiffEnd * xDiffEnd + yDiffEnd * yDiffEnd);
|
|
|
float endSimilarity = Math.Max(1 - (endDistance / maxEndDistance), 0);
|
|
|
|
|
|
//direction
|
|
|
+ float scalaProduct = direction * compareFinger.getDirection();
|
|
|
+ float lengthDirection = direction.norm();
|
|
|
+ float lengthCompareDirection = compareFinger.getDirection().norm();
|
|
|
+ float directionSimilarity = Math.Abs(scalaProduct / (lengthDirection * lengthCompareDirection));
|
|
|
|
|
|
+ //Console.WriteLine(Math.Round(directionSimilarity, 2) + "###" + Math.Round(startSimilarity, 2) + "###" + Math.Round(endSimilarity, 2));
|
|
|
|
|
|
-
|
|
|
- return (0.2f*startSimilarity + 0.8f*endSimilarity)*/;
|
|
|
- return 1.0f;
|
|
|
+ return (startSimilarity + endSimilarity + directionSimilarity) / 3;
|
|
|
|
|
|
}
|
|
|
|