Esempio n. 1
0
        PointF?GetNearestControlPoint(List <PointF> cpts, PointF point, float threshold, CompositionCanvasControl canvas)
        {
            bool   found     = false;
            PointF nearest   = Point.Empty;
            float  minSqDist = threshold * threshold;

            foreach (var cpt in cpts)
            {
                PointF pt     = canvas.PointToClient(new Point((int)cpt.X, (int)cpt.Y));
                float  dx     = point.X - pt.X;
                float  dy     = point.Y - pt.Y;
                float  sqDist = dx * dx + dy * dy;
                if (minSqDist > sqDist)
                {
                    nearest   = cpt;
                    minSqDist = sqDist;
                    found     = true;
                }
            }
            if (found)
            {
                return(nearest);
            }
            else
            {
                return(null);
            }
        }
Esempio n. 2
0
        JointAnnotation GetNearestJoint(SkeletonAnnotation an, PointF point, float threshold, CompositionCanvasControl canvas)
        {
            JointAnnotation nearest   = null;
            float           minSqDist = threshold * threshold;

            foreach (var joint in an.joints)
            {
                PointF pt     = canvas.PointToClient(new Point((int)joint.position.X, (int)joint.position.Y));
                float  dx     = point.X - pt.X;
                float  dy     = point.Y - pt.Y;
                float  sqDist = dx * dx + dy * dy;
                if (minSqDist > sqDist)
                {
                    nearest   = joint;
                    minSqDist = sqDist;
                }
            }
            return(nearest);
        }