XnSkeletonJointPosition Mean(XnSkeletonJointPosition p1, XnSkeletonJointPosition p2) { XnSkeletonJointPosition mean; mean.position = Mean(p1.position, p2.position); mean.confidence = Mean(p1.confidence, p2.confidence); return(mean); }
bool TryNiRotationDirY(out Quaternion q, XnSkeletonJointPosition xnp1, XnSkeletonJointPosition xnp2) { if (xnp1.confidence < 0.5f || xnp2.confidence < 0.5f) { q = Quaternion.Identity; return(false); } Vector3 p1 = ToVector3(xnp1.position); Vector3 p2 = ToVector3(xnp2.position); Vector3 vy = new Vector3(0, 1, 0); Vector3 v2 = p2 - p1; RotationVectorToVector(vy, v2, out q); return(true); }
bool TryNiRotation(out Quaternion q, XnSkeletonJointPosition xnp0, XnSkeletonJointPosition xnp1, XnSkeletonJointPosition xnp2) { if (xnp0.confidence < 0.5f || xnp1.confidence < 0.5f || xnp2.confidence < 0.5f) { q = Quaternion.Identity; return(false); } Vector3 p0 = ToVector3(xnp0.position); Vector3 p1 = ToVector3(xnp1.position); Vector3 p2 = ToVector3(xnp2.position); Vector3 v1 = p1 - p0; Vector3 v2 = p2 - p1; RotationVectorToVector(v1, v2, out q); return(true); }