public SkeletonBone(SkeletonBoneType type, JointTrackingState trackingState, double x, double y, double z) { this.type = type; this.trackingState = trackingState; vector = new Vector3D(x, y, z); vector.Normalize(); }
private SkeletonBone getBone(SkeletonBoneType boneType) { if (!bones.ContainsKey(boneType)) { Joint j1; Joint j2; switch (boneType) { case SkeletonBoneType.LowerLegLeft: j1 = skeleton.Joints[JointType.KneeLeft]; j2 = skeleton.Joints[JointType.AnkleLeft]; break; case SkeletonBoneType.LowerLegRight: j1 = skeleton.Joints[JointType.KneeRight]; j2 = skeleton.Joints[JointType.AnkleRight]; break; case SkeletonBoneType.UpperLegLeft: j1 = skeleton.Joints[JointType.HipLeft]; j2 = skeleton.Joints[JointType.KneeLeft]; break; case SkeletonBoneType.UpperLegRight: j1 = skeleton.Joints[JointType.HipRight]; j2 = skeleton.Joints[JointType.KneeRight]; break; case SkeletonBoneType.BackLower: j1 = skeleton.Joints[JointType.HipCenter]; j2 = skeleton.Joints[JointType.Spine]; break; default: throw new InvalidEnumArgumentException(); } JointTrackingState trackingState; if (j1.TrackingState.Equals(JointTrackingState.Tracked) && j2.TrackingState.Equals(JointTrackingState.Tracked)) { trackingState = JointTrackingState.Tracked; } else if (j1.TrackingState.Equals(JointTrackingState.NotTracked) || j2.TrackingState.Equals(JointTrackingState.NotTracked)) { trackingState = JointTrackingState.NotTracked; } else { trackingState = JointTrackingState.Inferred; } SkeletonBone bone = new SkeletonBone( boneType, trackingState, j2.Position.X - j1.Position.X, j2.Position.Y - j1.Position.Y, j2.Position.Z - j1.Position.Z ); bones[boneType] = bone; return(bone); } return(bones[boneType]); }
private SkeletonBone getBone(SkeletonBoneType boneType) { if (!bones.ContainsKey(boneType)) { Joint j1; Joint j2; switch (boneType) { case SkeletonBoneType.LowerLegLeft: j1 = skeleton.Joints[JointType.KneeLeft]; j2 = skeleton.Joints[JointType.AnkleLeft]; break; case SkeletonBoneType.LowerLegRight: j1 = skeleton.Joints[JointType.KneeRight]; j2 = skeleton.Joints[JointType.AnkleRight]; break; case SkeletonBoneType.UpperLegLeft: j1 = skeleton.Joints[JointType.HipLeft]; j2 = skeleton.Joints[JointType.KneeLeft]; break; case SkeletonBoneType.UpperLegRight: j1 = skeleton.Joints[JointType.HipRight]; j2 = skeleton.Joints[JointType.KneeRight]; break; case SkeletonBoneType.BackLower: j1 = skeleton.Joints[JointType.HipCenter]; j2 = skeleton.Joints[JointType.Spine]; break; default: throw new InvalidEnumArgumentException(); } JointTrackingState trackingState; if (j1.TrackingState.Equals(JointTrackingState.Tracked) && j2.TrackingState.Equals(JointTrackingState.Tracked)) { trackingState = JointTrackingState.Tracked; } else if (j1.TrackingState.Equals(JointTrackingState.NotTracked) || j2.TrackingState.Equals(JointTrackingState.NotTracked)) { trackingState = JointTrackingState.NotTracked; } else { trackingState = JointTrackingState.Inferred; } SkeletonBone bone = new SkeletonBone( boneType, trackingState, j2.Position.X - j1.Position.X, j2.Position.Y - j1.Position.Y, j2.Position.Z - j1.Position.Z ); bones[boneType] = bone; return bone; } return bones[boneType]; }