Beispiel #1
0
 public TSkeleton(Skeleton skeleton)
 {
     ClippedEdges = (TFrameEdges) skeleton.ClippedEdges;
     Joints = new TJoint[skeleton.Joints.Count];
     int i = 0;
     foreach (var joint in skeleton.Joints)
     {
         Joints[i] = new TJoint((Joint)joint);
         i++;
     }
     Position = new TSkeletonPoint(skeleton.Position);
     TrackingId = skeleton.TrackingId;
     TrackingState = (TSkeletonTrackingState)skeleton.TrackingState;
 }
Beispiel #2
0
 public void Read(BinaryReader reader)
 {
     ClippedEdges = (TFrameEdges)reader.ReadInt32();
     int jointCount = reader.ReadInt32();
     Joints = new TJoint[jointCount];
     for (int jx = 0; jx < jointCount; jx++)
     {
         Joints[jx] = new TJoint();
         Joints[jx].Read(reader);
     }
     Position = new TSkeletonPoint();
     Position.Read(reader);
     TrackingId = reader.ReadInt32();
     TrackingState = (TSkeletonTrackingState)reader.ReadInt32();
 }
Beispiel #3
0
        public TSkeleton(Skeleton skeleton)
        {
            ClippedEdges = (TFrameEdges)skeleton.ClippedEdges;
            Joints       = new TJoint[skeleton.Joints.Count];
            int i = 0;

            foreach (var joint in skeleton.Joints)
            {
                Joints[i] = new TJoint((Joint)joint);
                i++;
            }
            Position      = new TSkeletonPoint(skeleton.Position);
            TrackingId    = skeleton.TrackingId;
            TrackingState = (TSkeletonTrackingState)skeleton.TrackingState;
        }
Beispiel #4
0
        public void Read(BinaryReader reader)
        {
            ClippedEdges = (TFrameEdges)reader.ReadInt32();
            int jointCount = reader.ReadInt32();

            Joints = new TJoint[jointCount];
            for (int jx = 0; jx < jointCount; jx++)
            {
                Joints[jx] = new TJoint();
                Joints[jx].Read(reader);
            }
            Position = new TSkeletonPoint();
            Position.Read(reader);
            TrackingId    = reader.ReadInt32();
            TrackingState = (TSkeletonTrackingState)reader.ReadInt32();
        }
        void Trace(TJointType sourceID, TJointType destinationID, TJoint[] joints)
        {
            float sourceX;
            float sourceY;

            GetCoordinates(sourceID, joints, out sourceX, out sourceY);

            float destinationX;
            float destinationY;

            GetCoordinates(destinationID, joints, out destinationX, out destinationY);

            Line line = new Line
                            {
                                X1 = sourceX,
                                Y1 = sourceY,
                                X2 = destinationX,
                                Y2 = destinationY,
                                HorizontalAlignment = HorizontalAlignment.Left,
                                VerticalAlignment = VerticalAlignment.Top,
                                StrokeThickness = 4.0,
                                Stroke = new SolidColorBrush(Colors.Green),
                                StrokeLineJoin = PenLineJoin.Round
                            };

            rootCanvas.Children.Add(line);
        }
        void Plot(TJointType centerID, TJointType baseID, TJoint[] joints)
        {
            float centerX;
            float centerY;

            GetCoordinates(centerID, joints, out centerX, out centerY);

            float baseX;
            float baseY;

            GetCoordinates(baseID, joints, out baseX, out baseY);

            double diameter = Math.Abs(baseY - centerY);

            Ellipse ellipse = new Ellipse
            {
                Width = diameter,
                Height = diameter,
                HorizontalAlignment = HorizontalAlignment.Left,
                VerticalAlignment = VerticalAlignment.Top,
                StrokeThickness = 4.0,
                Stroke = new SolidColorBrush(Colors.Green),
                StrokeLineJoin = PenLineJoin.Round
            };

            Canvas.SetLeft(ellipse, centerX - ellipse.Width / 2);
            Canvas.SetTop(ellipse, centerY - ellipse.Height / 2);

            rootCanvas.Children.Add(ellipse);
        }
Beispiel #7
0
        private void NavigateByRightHand(TJoint lastRightHandFrame, List<Frame> frames)
        {
            var transitionX = lastRightHandFrame.Position.X - RightLastPosition.X;
            var transitionY = lastRightHandFrame.Position.Y - RightLastPosition.Y;

            var transitionVector = new Vector3() { X = -transitionX, Y = -transitionY };

            Raise(() => RaiseEvent(frames, transitionVector, 0, ControlType.RIGHT_HAND));

            RightLastPosition = lastRightHandFrame.Position;
        }
Beispiel #8
0
        private void NavigateByLeftHand(TJoint lastLeftHandFrame, List<Frame> frames)
        {
            var transitionX = lastLeftHandFrame.Position.X - LeftLastPosition.X;
            var transitionY = lastLeftHandFrame.Position.Y - LeftLastPosition.Y;

            var transitionVector = new Vector3() { X = transitionX, Y = transitionY };

            Raise(() => RaiseEvent(frames, transitionVector, 0, ControlType.LEFT_HAND));

            LeftLastPosition = lastLeftHandFrame.Position;
        }
Beispiel #9
0
        private void NavigateByBothHands(TJoint lastLeftHandFrame, TJoint lastRightHandFrame, List<Frame> frames)
        {
            var distance = CalculateDistance(lastLeftHandFrame, lastRightHandFrame);

            ZoomSum += distance - LastHandsDistance;

            if (ZoomSum > Configuration.minimalHandDistanceChanged)
            {
                var transitionVector = new Vector3() { X = ZoomSum };

                //LogString.Log("Hand: " + Kinect.Toolbox.Utils.Extensions.Print(jointPos.Position));
                Raise(() => RaiseEvent(frames, transitionVector, -1, ControlType.BOTH_HANDS));
                ZoomSum = 0;

            }
            else if (ZoomSum < -Configuration.minimalHandDistanceChanged)
            {
                var transitionVector = new Vector3() { X = ZoomSum };

                //LogString.Log("Hand: " + Kinect.Toolbox.Utils.Extensions.Print(jointPos.Position));
                Raise(() => RaiseEvent(frames, transitionVector, -1, ControlType.BOTH_HANDS));

                ZoomSum = 0;
            }

            LastHandsDistance = distance;
        }
Beispiel #10
0
        private float CalculateDistance(TJoint lastLeftHandFrame, TJoint lastRightHandFrame)
        {
            var transitionLeftX = lastLeftHandFrame.Position.X - LeftLastPosition.X;
            var transitionLeftY = lastLeftHandFrame.Position.Y - LeftLastPosition.Y;

            var transitionRightX = lastRightHandFrame.Position.X - RightLastPosition.X;
            var transitionRightY = lastRightHandFrame.Position.Y - RightLastPosition.Y;

            var distance = (float) Math.Sqrt((transitionRightX - transitionLeftX) * (transitionRightX - transitionLeftX) + (transitionRightY - transitionLeftY) * (transitionRightY - transitionLeftY));

            return distance;
        }