2016-09-28 166 views

回答

0

我有沒有可用的Kinect的權利,但這裏是理論我將如何應對這樣的:你似乎已經能夠訪問不同的關節座標

首先,讓你擁有某事像這樣:

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_newP_old。爲了得到方向向量,我們只是兩者相減,像這樣:

p_dir = P_NEW - P_OLD

現在我們必須得到這個方向矢量和矢量「出」之間的夾角在kinect座標系下的kinect是< 0,0,1>。但考慮到您的繪圖,我們需要使用z_dir = < 0,0,-1>。 通過使用p_dir的單位向量,讓我們把它叫做p_dir_unit,我們可以使用點積得到z_dirp_dir_unit之間的角度。

THETA = ACOS(z_dir * p_dir_unit

如果您只需要在X方向,Z平面,你可以設置Y值p_dir爲0,並獲得單位該矢量的矢量。從p_dir的絕對長度中,您還可以獲得身體移動速度的信息。

希望有所幫助。