는 지금 당장 사용 가능한 KINECT이 없지만, 여기에 내가이 태클을 얼마나 이론입니다 : 이미 다른 공동 좌표 수 액세스 것 같다의이 같은 STH을 가지고 있으므로,
첫째 :
if (body.IsTracked)
{
Joint spineMid = body.Joints[JointType.SpineMid];
float x = spineMid.Position.X;
float y = spineMid.Position.Y;
float z = spineMid.Position.Z;
}
이렇게하면 x, y, z가 포함 된 spineMid 점을 얻을 수 있습니다. 각 프레임은 spineMid 포인트를 마지막 프레임의 spinMid 포인트와 비교합니다 (그리고 다음 프레임의 비교를 위해 나중에 저장합니다). 이 점을 P_new 및 P_old이라고 부릅니다. 방향 벡터는 우리가 빼 얻으려면 두 그래서 같은 :
p_dir = P_new -
지금 우리가이 방향 벡터와 "아웃"벡터의 사이의 각도를 얻을 수 있습니다 P_old kinect는 좌표계와 함께 <00,1> 인 kinect입니다. 그러나 당신의 그림이 주어진다면 우리는 z_dir = < 0,0, -1>을 사용할 필요가 있습니다. 이 p_dir의 단위 벡터를 사용하여 p_dir_unit를 호출 할 수 있습니다, 우리는 z_dir 및 p_dir_unit 사이의 각도를 얻을 수있는 내적을 사용할 수 있습니다. 만약 오직 X 방향이 필요한 경우, Z 평면 방금 0 p_dir 대한 Y 값을 설정하고, 기기를 얻을 수
쎄타 = ACOS (z_dir * p_dir_unit) 그 벡터에서 벡터. 의 절대 길이 p_dir에서 신체가 얼마나 빨리 움직이는 지에 대한 정보를 얻을 수도 있습니다.
희망이 있습니다.