using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using bbiwarg.Utility; namespace bbiwarg.Recognition.FingerRecognition { class FingerSlice { private LineSegment2D lineSegment; private bool lineSegmentUpToDate; public Vector2D Mid { get; private set; } public Vector2D Start { get; private set; } public Vector2D StartOuter { get; private set; } public Vector2D End { get; private set; } public Vector2D EndOuter { get; private set; } public LineSegment2D LineSegment { get { if (!lineSegmentUpToDate) updateLineSegment(); return lineSegment; } } public Vector2D Direction { get { return LineSegment.Direction; } } public float Length { get { return LineSegment.Length; } } public FingerSlice(Vector2D start, Vector2D end) { Start = start; End = end; Mid = (start + end) / 2; updateLineSegment(); StartOuter = (Start + Constants.FingerSliceOutMargin * Direction.getInverse()).moveInBound(Vector2D.Zero, Constants.MaxPixel, Direction); EndOuter = (End + Constants.FingerSliceOutMargin * Direction).moveInBound(Vector2D.Zero, Constants.MaxPixel, Direction.getInverse()); } private void updateLineSegment() { lineSegment = new LineSegment2D(Start, End); lineSegmentUpToDate = true; } } }