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