devices/deviceskeleton/skeletondevicetester/DeviceBuffer.h

devices/deviceskeleton/skeletondevicetester/DeviceBuffer.h
#if defined( WIN32 )
typedef unsigned __int64 nsTime;
#else
typedef unsigned long long nsTime;
#endif
struct sSKDataBuffer
{
// Port number to use for server
static const int PORTNUMBER = 8889; // Port number for communication
static const int SIM_FPS = 60; // Tested for 30,60,120
static const int ChannelCount = 30;
nsTime mTime;
int mCounter;
struct
{
double mT[3];
double mR[3];
} mChannel[ChannelCount];
sSKDataBuffer()
{
mTime = 0;
mCounter = 0;
SetupBuffer();
}
void Simulate(nsTime pTime)
{
mTime = pTime;
// Send last data + 0.5 degree global rotation in the Y direction
FBMatrix lTransformation, lChannelTransformation;
FBRotationToMatrix(lTransformation,FBRVector(0,0.5,0));
for(int i = 0; i < ChannelCount; i++)
{
FBRotationToMatrix(lChannelTransformation, mChannel[i].mR);
memcpy(&lChannelTransformation[12], mChannel[i].mT,sizeof(mChannel[i].mT));
FBMatrixMult(lChannelTransformation,lTransformation,lChannelTransformation);
FBMatrixToRotation((FBRVector&)*mChannel[i].mR,lChannelTransformation);
memcpy(&mChannel[i].mT,&lChannelTransformation[12],sizeof(mChannel[i].mT));
}
mCounter++;
}
void SetupBuffer()
{
//0:Hips
mChannel[0].mT[0] = 5.52507944791e-15;
mChannel[0].mT[1] = 90.2313919067;
mChannel[0].mT[2] = 0.0;
mChannel[0].mR[0] = 0.0;
mChannel[0].mR[1] = 0.0;
mChannel[0].mR[2] = 0.0;
//1:LeftUpLeg
mChannel[1].mT[0] = 10.8919000626;
mChannel[1].mT[1] = 90.2313919067;
mChannel[1].mT[2] = 0.0;
mChannel[1].mR[0] = 0.0;
mChannel[1].mR[1] = 0.0;
mChannel[1].mR[2] = 0.0;
//2:LeftLeg
mChannel[2].mT[0] = 10.8919000626;
mChannel[2].mT[1] = 46.1967926025;
mChannel[2].mT[2] = 0.0;
mChannel[2].mR[0] = 0.0;
mChannel[2].mR[1] = 0.0;
mChannel[2].mR[2] = 0.0;
//3:LeftFoot
mChannel[3].mT[0] = 10.8919000626;
mChannel[3].mT[1] = 4.74909210205;
mChannel[3].mT[2] = 0.0;
mChannel[3].mR[0] = 14.9999777807;
mChannel[3].mR[1] = 0.0;
mChannel[3].mR[2] = 0.0;
//4:LeftToeBase
mChannel[4].mT[0] = 10.8919000626;
mChannel[4].mT[1] = 1.05947666894;
mChannel[4].mT[2] = 13.7698536165;
mChannel[4].mR[0] = 0.0;
mChannel[4].mR[1] = 0.0;
mChannel[4].mR[2] = 0.0;
//5:L_Toe_End
mChannel[5].mT[0] = 10.8919000626;
mChannel[5].mT[1] = 1.05947666894;
mChannel[5].mT[2] = 21.2698536165;
mChannel[5].mR[0] = 0.0;
mChannel[5].mR[1] = 0.0;
mChannel[5].mR[2] = 0.0;
//6:RightUpLeg
mChannel[6].mT[0] = -10.8919000626;
mChannel[6].mT[1] = 90.2313919067;
mChannel[6].mT[2] = 0.0;
mChannel[6].mR[0] = 0.0;
mChannel[6].mR[1] = 0.0;
mChannel[6].mR[2] = 0.0;
//7:RightLeg
mChannel[7].mT[0] = -10.8919000626;
mChannel[7].mT[1] = 46.1967926025;
mChannel[7].mT[2] = 0.0;
mChannel[7].mR[0] = 0.0;
mChannel[7].mR[1] = 0.0;
mChannel[7].mR[2] = 0.0;
//8:RightFoot
mChannel[8].mT[0] = -10.8919000626;
mChannel[8].mT[1] = 4.74909210205;
mChannel[8].mT[2] = 0.0;
mChannel[8].mR[0] = 14.9999777807;
mChannel[8].mR[1] = 0.0;
mChannel[8].mR[2] = 0.0;
//9:RightToeBase
mChannel[9].mT[0] = -10.8919000626;
mChannel[9].mT[1] = 1.05947666894;
mChannel[9].mT[2] = 13.7698536165;
mChannel[9].mR[0] = 0.0;
mChannel[9].mR[1] = 0.0;
mChannel[9].mR[2] = 0.0;
//10:R_Toe_End
mChannel[10].mT[0] = -10.8919000626;
mChannel[10].mT[1] = 1.05947666894;
mChannel[10].mT[2] = 21.2698536165;
mChannel[10].mR[0] = 0.0;
mChannel[10].mR[1] = 0.0;
mChannel[10].mR[2] = 0.0;
//11:Spine
mChannel[11].mT[0] = 5.52507944791e-15;
mChannel[11].mT[1] = 90.3313919082;
mChannel[11].mT[2] = 0.0;
mChannel[11].mR[0] = 0.0;
mChannel[11].mR[1] = 0.0;
mChannel[11].mR[2] = 0.0;
//12:Spine1
mChannel[12].mT[0] = 5.52507944791e-15;
mChannel[12].mT[1] = 109.028892137;
mChannel[12].mT[2] = 0.0;
mChannel[12].mR[0] = 0.0;
mChannel[12].mR[1] = 0.0;
mChannel[12].mR[2] = 0.0;
//13:Neck
mChannel[13].mT[0] = 5.52507944791e-15;
mChannel[13].mT[1] = 133.325692751;
mChannel[13].mT[2] = 0.0;
mChannel[13].mR[0] = 0.0;
mChannel[13].mR[1] = 0.0;
mChannel[13].mR[2] = 0.0;
//14:Head
mChannel[14].mT[0] = 5.52507944791e-15;
mChannel[14].mT[1] = 145.887693025;
mChannel[14].mT[2] = 0.0;
mChannel[14].mR[0] = 0.0;
mChannel[14].mR[1] = 0.0;
mChannel[14].mR[2] = 0.0;
//15:Head_End
mChannel[15].mT[0] = 5.52507944791e-15;
mChannel[15].mT[1] = 157.387693025;
mChannel[15].mT[2] = 0.0;
mChannel[15].mR[0] = 0.0;
mChannel[15].mR[1] = 0.0;
mChannel[15].mR[2] = 0.0;
//16:LeftShoulder
mChannel[16].mT[0] = 5.52507944791e-15;
mChannel[16].mT[1] = 133.325692751;
mChannel[16].mT[2] = 0.0;
mChannel[16].mR[0] = 0.0;
mChannel[16].mR[1] = 0.0;
mChannel[16].mR[2] = -90.0002104591;
//17:LeftArm
mChannel[17].mT[0] = 21.7077007292;
mChannel[17].mT[1] = 133.325613014;
mChannel[17].mT[2] = 0.0;
mChannel[17].mR[0] = 0.0;
mChannel[17].mR[1] = 0.0;
mChannel[17].mR[2] = -90.0002104591;
//18:LeftForeArm
mChannel[18].mT[0] = 48.0103015896;
mChannel[18].mT[1] = 133.325516399;
mChannel[18].mT[2] = 0.0;
mChannel[18].mR[0] = 0.0;
mChannel[18].mR[1] = 0.0;
mChannel[18].mR[2] = -90.0002104591;
//19:LeftHand
mChannel[19].mT[0] = 75.5387020106;
mChannel[19].mT[1] = 133.325415281;
mChannel[19].mT[2] = 0.0;
mChannel[19].mR[0] = 0.0;
mChannel[19].mR[1] = 0.0;
mChannel[19].mR[2] = -90.0002104591;
//20:LeftHandThumb
mChannel[20].mT[0] = 75.5387020106;
mChannel[20].mT[1] = 133.325415281;
mChannel[20].mT[2] = 0.0;
mChannel[20].mR[0] = 0.0;
mChannel[20].mR[1] = 0.0;
mChannel[20].mR[2] = -90.0002104591;
//21:L_Thumb_End
mChannel[21].mT[0] = 75.5387020106;
mChannel[21].mT[1] = 133.325415281;
mChannel[21].mT[2] = 10.0;
mChannel[21].mR[0] = 0.0;
mChannel[21].mR[1] = 0.0;
mChannel[21].mR[2] = -90.0002104591;
//22:L_Wrist_End
mChannel[22].mT[0] = 85.5387020105;
mChannel[22].mT[1] = 133.325378549;
mChannel[22].mT[2] = 0.0;
mChannel[22].mR[0] = 0.0;
mChannel[22].mR[1] = 0.0;
mChannel[22].mR[2] = -90.0002104591;
//23:RightShoulder
mChannel[23].mT[0] = 5.52507944791e-15;
mChannel[23].mT[1] = 133.325692751;
mChannel[23].mT[2] = 0.0;
mChannel[23].mR[0] = 0.0;
mChannel[23].mR[1] = 0.0;
mChannel[23].mR[2] = 90.0002104591;
//24:RightArm
mChannel[24].mT[0] = -21.7077007292;
mChannel[24].mT[1] = 133.325613014;
mChannel[24].mT[2] = 0.0;
mChannel[24].mR[0] = 0.0;
mChannel[24].mR[1] = 0.0;
mChannel[24].mR[2] = 90.0002104591;
//25:RightForeArm
mChannel[25].mT[0] = -48.0103015896;
mChannel[25].mT[1] = 133.325516399;
mChannel[25].mT[2] = 0.0;
mChannel[25].mR[0] = 0.0;
mChannel[25].mR[1] = 0.0;
mChannel[25].mR[2] = 90.0002104591;
//26:RightHand
mChannel[26].mT[0] = -75.5387020106;
mChannel[26].mT[1] = 133.325415281;
mChannel[26].mT[2] = 0.0;
mChannel[26].mR[0] = 0.0;
mChannel[26].mR[1] = 0.0;
mChannel[26].mR[2] = 90.0002104591;
//27:RightHandThumb
mChannel[27].mT[0] = -75.5387020106;
mChannel[27].mT[1] = 133.325415281;
mChannel[27].mT[2] = 0.0;
mChannel[27].mR[0] = 0.0;
mChannel[27].mR[1] = 0.0;
mChannel[27].mR[2] = 90.0002104591;
//28:R_Thumb_End
mChannel[28].mT[0] = -75.5387020106;
mChannel[28].mT[1] = 133.325415281;
mChannel[28].mT[2] = 10.0;
mChannel[28].mR[0] = 0.0;
mChannel[28].mR[1] = 0.0;
mChannel[28].mR[2] = 90.0002104591;
//29:R_Wrist_End
mChannel[29].mT[0] = -89.2387018198;
mChannel[29].mT[1] = 133.325364958;
mChannel[29].mT[2] = 0.0;
mChannel[29].mR[0] = 0.0;
mChannel[29].mR[1] = 0.0;
mChannel[29].mR[2] = 90.0002104591;
}
};