我有一个跟踪身体运动的应用程序,它也可以像服务器一样通过 TCP 发送身体跟踪数据。我的客户端连接到服务器并获取数据。
在将数据发送到客户端之前,会发生以下情况:
MTBF v10 = bodyPose2MTBF_v10(pose, m_startup, m_stream_position, 1);
ss << v10.get();
m_body_tracking_server->send(ss);
其中姿势包含所有信息,例如作为矢量的头部位置、腿、肩位置等。SS 是一个新的字符串流,并且使用 v10.get() 流以字符串形式填充姿势。在 send 方法中,stringstream(ss) 被发送到客户端。
在我的客户中,我得到了字符串流。我还将它转换回 mtbf。问题是,代码不是我的,所以我不明白。当姿势转换为 mtbf 时,会发生以下情况:
data.addFlag(0);
data << torso.x() << torso.y() << torso.z();
sensorConfig |= MTBFData_0_4::RightArmPosition;
data.addFlag(1);
.
.
.
我知道它正在添加一个“标志”,以便我可以识别例如躯干,然后是躯干的 xy 和 z 坐标。但添加标志方法如下所示:
addFlag(unsigned char n)
{
m_flag |= (1i64 << n);
m_buf.replace(7+8, 8, reinterpret_cast<char*>(&m_flag), 8);
return *this;
}
这个方法具体是做什么的??转移一些东西并重新解释字符......我真的需要帮助来理解这一点!谢谢你!