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; }
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(); }
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; }
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); }
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; }
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; }
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; }
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; }