void TB_MouseMotionEvent(int X, int Y) { vec4 q; ComputeQuat(q,LastX,LastY,X,Y); CombineQuats(q,Q,Q); LastX = X; LastY = Y; }
void OTestCArm::Draw() { OQuaternion q(quat_.X(), quat_.Y(), quat_.Z(), quat_.W()); clone_avatar->matrix() = q.ToMatrix(); clone_avatar->draw(); return; glPushMatrix(); outer_ring_->DrawMesh(OSpecialMesh::THORUS); //glRotatef(angulation_, 0.0f, 1.0f, 0.0f); //glRotatef(rotation_, 1.0f, 0.0f, 0.0f); //glRotatef(dra_, 0, 0, 1); ////ComputeQuat(); OMatrix4 orient = quat_.ToMatrix(); glMultMatrixf(orient.GetSafeM()); DrawAxes(2.4f * inner_ray_); glPopMatrix(); glPushMatrix(); float temp_dra = dra_; dra_ = 0.0f; ComputeQuat(); orient = quat_.ToMatrix(); glMultMatrixf(orient.GetSafeM()); // glRotatef(angulation_, 0, 1, 0); // glRotatef(rotation_, 1, 0, 0); // glRotatef(dra_, 0, 0, 1); inner_ring_->DrawMesh(OSpecialMesh::THORUS); glTranslatef(-inner_ray_, 0.0f, 0.0f); rod_->DrawMesh(OSpecialMesh::CYLINDER); dra_ = temp_dra; glPopMatrix(); }