예제 #1
0
        private static void MovePointHandleByRotationSteps(GenericPosture posture, CalibrationHelper calibrationHelper, int handle, PointF point, GenericPostureConstraintRotationSteps constraint)
        {
            if (constraint == null)
            {
                return;
            }

            PointF parent = posture.PointList[constraint.Origin];
            PointF leg1   = posture.PointList[constraint.Leg1];

            if (parent == leg1 || constraint.Step == 0)
            {
                return;
            }

            PointF candidate = point;

            if (constraint.KeepDistance)
            {
                PointF leg2     = posture.PointList[posture.Handles[handle].Reference];
                float  distance = GeometryHelper.GetDistance(parent, leg2);
                candidate = GeometryHelper.GetPointAtDistance(parent, point, distance);
            }

            int constraintAngleSubdivisions = 360 / constraint.Step;

            posture.PointList[posture.Handles[handle].Reference] = GeometryHelper.GetPointAtClosestRotationStep(parent, leg1, candidate, constraintAngleSubdivisions);
        }
예제 #2
0
        private static void MovePointHandleByRotationSteps(GenericPosture posture, CalibrationHelper calibrationHelper, int handle, PointF point, GenericPostureConstraintRotationSteps constraint)
        {
            if (constraint == null)
            {
                return;
            }

            PointF parent = posture.Points[constraint.Origin];
            PointF leg1   = posture.Points[constraint.Leg1];

            if (parent == leg1 || constraint.Step == 0)
            {
                return;
            }

            int constraintAngleSubdivisions = 360 / constraint.Step;

            posture.Points[posture.Handles[handle].Reference] = GeometryHelper.GetPointAtClosestRotationStep(parent, leg1, point, constraintAngleSubdivisions);
        }