Matriz Matriz::matrizIdentidade(int tamanho) { Matriz matriz = Matriz(tamanho, tamanho); for (int i = 0; i < tamanho; ++i) { matriz.mat[i][i] = 1.0; } return matriz; }
void rotacionar(double angulo) { Matriz matrizRotacao = MatrizUtil::matrizRotacao3DZ(angulo); Matriz matrizVUP = Matriz(vupVector); Matriz result = matrizVUP * matrizRotacao; vupVector._x = result(0, 0); vupVector._y = result(0, 1); }
Matriz Matriz::transpose() { Matriz res = Matriz(); for(int i = 0; i < 4; ++i) { for(int j = 0; j < 4; ++j) { res.mat[i][j] = mat[j][i]; } } return res; }
void viewOperations::assembleViewSystem(Vetor &v, Vetor &n, double d, double hx, double hy) { Vetor Vortho = n.orthogonalize(v); Vortho.normalize(); n.normalize(); Vetor U = n%Vortho; double coords[4][4] = {{U.x_, U.y_, U.z_, 0.0}, {Vortho.x_, Vortho.y_, Vortho.z_, 0.0}, {n.x_, n.y_, n.z_, 0.0}, {0.0, 0.0, 0.0, 1.0} }; this->camCoords_ = Matriz(coords); this->d = d; this->hx = hx; this->hy = hy; }
Matriz<Tipo> Matriz<Tipo>::submatriz(unsigned iIni , unsigned jIni , unsigned iFim , unsigned jFim) { unsigned t; if(iIni > iFim) {t = iIni; iIni = iFim; iFim = t;} if(jIni > jFim) {t = jIni; jIni = jFim; jFim = t;} if(iFim < m_numeroLinhas && jFim < m_numeroColunas) { int i , j, mR = iFim - iIni , nR = jFim - jIni; Matriz R(mR , nR); for ( i = 0; i < mR; i ++) for ( j = 0; j < nR; j ++) R(i , j) = (*this)(i+iIni , j+jIni); return R; }else { printf("Erro Submatriz inexitestente\n" ); return Matriz (1 ,1); } }