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 End { get; private set; } public Vector2D ContourStart { get; private set; } public Vector2D ContourEnd { get; private set; } public Vector2D OutStart { get; private set; } public Vector2D OutEnd { 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(); ContourStart = (Start + Parameters.FingerContourMargin * Direction.getInverse()).moveInBound(Direction); ContourEnd = (End + Parameters.FingerContourMargin * Direction).moveInBound(Direction.getInverse()); OutStart = (Start + Parameters.FingerOutMargin * Direction.getInverse()).moveInBound(Direction); OutEnd = (End + Parameters.FingerOutMargin * Direction).moveInBound(Direction.getInverse()); } private void updateLineSegment() { lineSegment = new LineSegment2D(Start, End); lineSegmentUpToDate = true; } } }