XV3 UserDetector::getUpVector() { XuUserID userID = getTrackedUserID(); if (userID) { XV3 v0(getSkeletonJointPosition(XU_SKEL_TORSO)); XV3 v1(getSkeletonJointPosition(XU_SKEL_NECK)); return (v1 - v0).normalize(); } else { return XV3(); } }
XV3 UserDetector::getForwardVector() { XuUserID userID = getTrackedUserID(); if (userID) { XV3 v0(getSkeletonJointPosition(XU_SKEL_RIGHT_SHOULDER)); XV3 v1(getSkeletonJointPosition(XU_SKEL_TORSO)); XV3 v2(getSkeletonJointPosition(XU_SKEL_LEFT_SHOULDER)); return ((v1 - v0).cross(v2 - v1)).normalize(); } else { return XV3(); } }
//----------------------------------------------------------------------------------------------------- // //----------------------------------------------------------------------------------------------------- XV3 UserDetector::getSkeletonJointPosition(XnSkeletonJoint eJoint) { XnSkeletonJointPosition j; getSkeletonJointPosition(eJoint, &j); if (isConfident(j)) { kn_skeletonPositions[eJoint-1] = j; } return kn_skeletonPositions[eJoint-1].position; }