void TinyVRGui::tick(b3Scalar deltaTime, const b3Transform& guiWorldTransform) { float time = m_data->m_timeSeries->getCurrentTime(); float v = sinf(time); m_data->m_timeSeries->insertDataAtCurrentTime(v,0,true); v = cosf(time); m_data->m_timeSeries->insertDataAtCurrentTime(v,1,true); v = tanf(time); m_data->m_timeSeries->insertDataAtCurrentTime(v,3,true); m_data->m_timeSeries->insertDataAtCurrentTime(deltaTime*10,2,true); m_data->m_timeSeries->nextTick(); m_data->m_renderer->updateTexture(m_data->m_textureId,&m_data->m_texelsRGB[0]); m_data->m_renderer->writeSingleInstanceTransformToCPU(guiWorldTransform.getOrigin(),guiWorldTransform.getRotation(),m_data->m_gfxObjectId); m_data->m_renderer->writeTransforms(); }
void b3Point2PointConstraint::getInfo2NonVirtual (b3ConstraintInfo2* info, const b3Transform& body0_trans, const b3Transform& body1_trans) { //retrieve matrices // anchor points in global coordinates with respect to body PORs. // set jacobian info->m_J1linearAxis[0] = 1; info->m_J1linearAxis[info->rowskip+1] = 1; info->m_J1linearAxis[2*info->rowskip+2] = 1; b3Vector3 a1 = body0_trans.getBasis()*getPivotInA(); b3Vector3 a1a = b3QuatRotate(body0_trans.getRotation(),getPivotInA()); { b3Vector3* angular0 = (b3Vector3*)(info->m_J1angularAxis); b3Vector3* angular1 = (b3Vector3*)(info->m_J1angularAxis+info->rowskip); b3Vector3* angular2 = (b3Vector3*)(info->m_J1angularAxis+2*info->rowskip); b3Vector3 a1neg = -a1; a1neg.getSkewSymmetricMatrix(angular0,angular1,angular2); } if (info->m_J2linearAxis) { info->m_J2linearAxis[0] = -1; info->m_J2linearAxis[info->rowskip+1] = -1; info->m_J2linearAxis[2*info->rowskip+2] = -1; } b3Vector3 a2 = body1_trans.getBasis()*getPivotInB(); { // b3Vector3 a2n = -a2; b3Vector3* angular0 = (b3Vector3*)(info->m_J2angularAxis); b3Vector3* angular1 = (b3Vector3*)(info->m_J2angularAxis+info->rowskip); b3Vector3* angular2 = (b3Vector3*)(info->m_J2angularAxis+2*info->rowskip); a2.getSkewSymmetricMatrix(angular0,angular1,angular2); } // set right hand side b3Scalar currERP = (m_flags & B3_P2P_FLAGS_ERP) ? m_erp : info->erp; b3Scalar k = info->fps * currERP; int j; for (j=0; j<3; j++) { info->m_constraintError[j*info->rowskip] = k * (a2[j] + body1_trans.getOrigin()[j] - a1[j] - body0_trans.getOrigin()[j]); //printf("info->m_constraintError[%d]=%f\n",j,info->m_constraintError[j]); } if(m_flags & B3_P2P_FLAGS_CFM) { for (j=0; j<3; j++) { info->cfm[j*info->rowskip] = m_cfm; } } b3Scalar impulseClamp = m_setting.m_impulseClamp;// for (j=0; j<3; j++) { if (m_setting.m_impulseClamp > 0) { info->m_lowerLimit[j*info->rowskip] = -impulseClamp; info->m_upperLimit[j*info->rowskip] = impulseClamp; } } info->m_damping = m_setting.m_damping; }