Matrix *Utility::CalcMatrix( LWF *lwf, Matrix *dst, const Matrix *src0, int src1Id) { if (src1Id == 0) { dst->Set(src0); } else if ((src1Id & Constant::MATRIX_FLAG) == 0) { const Translate &translate = lwf->data->translates[src1Id]; dst->scaleX = src0->scaleX; dst->skew0 = src0->skew0; dst->translateX = src0->scaleX * translate.translateX + src0->skew0 * translate.translateY + src0->translateX; dst->skew1 = src0->skew1; dst->scaleY = src0->scaleY; dst->translateY = src0->skew1 * translate.translateX + src0->scaleY * translate.translateY + src0->translateY; } else { int matrixId = src1Id & ~Constant::MATRIX_FLAG_MASK; const Matrix &src1 = lwf->data->matrices[matrixId]; CalcMatrix(dst, src0, &src1); } return dst; }
short SetTorqueUnits(Calibration *cal, char *NewUnits) { if (cal==NULL) return 1; if (TorqueConv(NewUnits)==0) return 2; free(cal->cfg.TorqueUnits); cal->cfg.TorqueUnits=ATI_strdup(NewUnits); return CalcMatrix(cal); } // SetTorqueUnits()
void ViewPole::OffsetTargetPos( const glm::vec3 &cameraOffset ) { glm::mat4 currMat = CalcMatrix(); glm::fquat orientation = glm::quat_cast(currMat); glm::fquat invOrient = glm::conjugate(orientation); glm::vec3 worldOffset = invOrient * cameraOffset; m_currView.targetPos += worldOffset; }
void LiarObject::SetBaseMatrix(Liar::RenderMgr* rmg, bool calcInvest) { CalcMatrix(rmg, calcInvest); Camera* camera = rmg->GetCamera(); m_shader->Use(); m_shader->SetMat4("model", m_matrix); m_shader->SetMat4("projection", camera->GetPerspective()); m_shader->SetMat4("view", camera->GetViewMatrix()); }
void LWF::Update(const Matrix *matrix, const ColorTransform *colorTransform) { ++updateCount; const Matrix *m = CalcMatrix(matrix); const ColorTransform *c = CalcColorTransform(colorTransform); renderingIndex = 0; renderingIndexOffsetted = 0; rootMovie->Update(m, c); renderingCount = renderingIndex; isPropertyDirty = false; }
//---------------------------------------------- // "public" functions //---------------------------------------------- short SetToolTransform(Calibration *cal, float Vector[6],char *DistUnits,char *AngleUnits) { short i; if (cal==NULL) return 1; if (DistConv(DistUnits)==0) return 2; if (AngleConv(AngleUnits)==0) return 3; for(i=0;i<6;i++) cal->cfg.UserTransform.TT[i]=Vector[i]; free(cal->cfg.UserTransform.DistUnits); cal->cfg.UserTransform.DistUnits=ATI_strdup(DistUnits); free(cal->cfg.UserTransform.AngleUnits); cal->cfg.UserTransform.AngleUnits=ATI_strdup(AngleUnits); return CalcMatrix(cal); } // SetToolTransform()
//---------------------------------------------- // "private" functions //---------------------------------------------- void ResetDefaults(Calibration *cal) { // Restores all configuration options to their default values unsigned short i; cal->cfg.ForceUnits=ATI_strdup(cal->ForceUnits); // set output units to calibration file defaults cal->cfg.TorqueUnits=ATI_strdup(cal->TorqueUnits); for (i=0;i<6;i++) // clear user Tool Transform cal->cfg.UserTransform.TT[i]=0; for (i=0;i < cal->rt.NumChannels-1;i++) { // clear bias vectors cal->rt.bias_vector[i]=0; cal->rt.TCbias_vector[i]=0; } cal->rt.bias_vector[cal->rt.NumChannels-1]=0; // thermistor reading of bias vector cal->cfg.TempCompEnabled=cal->TempCompAvailable; // turn temp comp on by default, if available CalcMatrix(cal); // compute working matrix and store in rt } // ResetDefaults()
Matrix44 ModelUtils::CalcMatrix(float position[3], float rotation [4], float scale[3], RotationOrder rotationType) { auto matR = CalcRotationMatrix(rotation, rotationType); return CalcMatrix(position, matR, scale); }