[C++]


SUBMITTED BY: Guest

DATE: March 4, 2014, 8:01 p.m.

FORMAT: Text only

SIZE: 1.4 kB

HITS: 1180

  1. Matriz cal_normais(Matriz &pontos, vector<vector<int>> &triangulos){
  2. vector<vector<Matriz>> normais(pontos.cols);
  3. Matriz retorno(3,pontos.cols);
  4. int sz = triangulos.size();
  5. for(int i =0; i< sz;i++){
  6. Matriz ab = pontos.getCol(triangulos[i][0]-1) - pontos.getCol(triangulos[i][1]-1);//vetor ab
  7. Matriz ac = pontos.getCol(triangulos[i][0]-1) - pontos.getCol(triangulos[i][2]-1);//vetor ac
  8. Matriz normal = ab.cross(ac,0);//produto vetorial
  9. normais[triangulos[i][0]-1].push_back(normal);//normal no vertice 0 do triangulo i
  10. normais[triangulos[i][1]-1].push_back(normal);
  11. normais[triangulos[i][2]-1].push_back(normal);
  12. }
  13. for(int i = 0; i< pontos.cols;i++){//normaliza as normais
  14. int sz = normais[i].size();
  15. Matriz sum(3,1);
  16. for(int j = 0; j<sz;j++){
  17. sum= sum+ normais[i][j];
  18. }
  19. sum.normaliza();
  20. retorno.at(0,i) = sum[0];//normal do triangulo i
  21. retorno.at(1,i) = sum[1];
  22. retorno.at(2,i) = sum[2];
  23. }
  24. return retorno;
  25. }

comments powered by Disqus