private void OnJointTrackingCaptured(MovingJoint joint, DateTime timeStamp) { if (JointTrackingCaptured != null) { JointTrackingCaptured(joint, timeStamp); } }
private void AlertJoints(MovingJoint joint, DateTime timeStamp) { IJointFrameParameter parameter = GetJointFrameParameter(joint, timeStamp); previousMovingJoint = joint; previousTimeStamp = timeStamp; Joints jointsToAlert = joints.GetJointsOfType(joint.JointType); foreach (Joint jointToAlert in jointsToAlert) { jointToAlert.JointTrackingFrameCaptured(parameter); } }
public void JointTrackingCaptured(KinectUtilities.JointTracking.MovingJoint joint, DateTime timeStamp) { if (joint.JointType == KinectUtilities.JointTracking.JointType.ElbowRight) { if (bendAngleFrameCount % updateFrequency == 0) { bendAngleFrameCount = 1; UpdateJointBendAngle(joint, timeStamp); } else { bendAngleFrameCount++; } } }
private void TrackSkeletonJoints(Microsoft.Kinect.Skeleton skeleton, DateTime timeStamp) { // Tracks the MovingJoints in the specified skeleton. foreach (JointType jointType in JointUtilities.MovingJoints) { // RBakerFlag -> Needs to be refactored. Need to fire event. JointType[] connectedJoints = JointUtilities.GetConnectedJoints(jointType); if (!ShouldTrackJoint(skeleton, jointType, connectedJoints)) { continue; } Vertex3 jointPosition = GetJointPosition(skeleton, jointType); Vertex3[] connectedJointPositions = GetJointPositions(skeleton, connectedJoints); Vector3 boneA = new Vector3(connectedJointPositions[0], jointPosition); Vector3 boneB = new Vector3(connectedJointPositions[1], jointPosition); double bendAngle = Vector3Functions.Angle(boneA, boneB); MovingJoint movingJoint = new MovingJoint(jointType, jointPosition, bendAngle); OnJointTrackingCaptured(movingJoint, timeStamp); } }
private IJointFrameParameter GetJointFrameParameter(MovingJoint joint, DateTime timeStamp) { // RBakerFlag -> For now, default to this. TimeSpan timeSpan = GetTimeSpanSinceLastCapture(timeStamp); // AngularVelocityJointFrameParameter parameter = new AngularVelocityJointFrameParameter(joint, timeSpan); AngularDisplacementJointFrameParameter parameter = new AngularDisplacementJointFrameParameter(joint, previousMovingJoint, timeSpan); return parameter; }
private void jointController_JointTrackingCaptured(MovingJoint joint, DateTime timeStamp) { if (frameCount % framesFrequencyFilter == 0) { frameCount = 1; AlertJoints(joint, timeStamp); } else { frameCount += 1; } }
public AngularVelocityJointFrameParameter(MovingJoint movingJoint, TimeSpan timeSpan) { this.movingJoint = movingJoint; this.timeSpan = timeSpan; }
public void UpdateJointBendAngle(MovingJoint joint, DateTime timeStamp) { if (this.InvokeRequired) { UpdateBendAngleEventHandler d = new UpdateBendAngleEventHandler(UpdateJointBendAngle); this.Invoke(d, new object[] { joint, timeStamp }); } else { //jointTrackingUpdateTextBox.BeginUpdate(); jointTrackingUpdateTextBox.Text = joint.BendAngle.ToString(); //jointTrackingUpdateTextBox.EndUpdate(); } }