Advertisement
Guest User

Untitled

a guest
Jul 1st, 2016
58
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.18 KB | None | 0 0
  1. void read(char nomeObjeto[])
  2. {
  3. char op;
  4. this->tipo = 0;
  5. int v;
  6. int p1, p2, p3;
  7. double x, y, z;
  8.  
  9. FILE * objeto = freopen(nomeObjeto, "r", stdin);
  10.  
  11. if (objeto != NULL)
  12. {
  13. while (fscanf(objeto, " %c", &op) > 0 && !feof(objeto))
  14. {
  15. if (op == 'v')
  16. {
  17. fscanf(objeto, "%c", &op);
  18. if (op == ' ')
  19. {
  20. fscanf(objeto, "%lf %lf %lf", &x, &y, &z);
  21. this->vertices.push_back(ponto(x, y, z));
  22. }
  23. else if (op == 't')
  24. {
  25. fscanf(objeto, "%lf %lf %lf", &x, &y, &z);
  26. this->texturas.push_back(ponto(x, y, z));
  27. }
  28. else if (op == 'n')
  29. {
  30. fscanf(objeto, "%lf %lf %lf", &x, &y, &z);
  31. this->normais.push_back(ponto(x, y, z));
  32. }
  33. }
  34. else if (op == 'f')
  35. {
  36. this->faces.push_back(face());
  37. fscanf(objeto, "%c", &op);
  38. while (op == ' ' && !feof(objeto))
  39. {
  40. if (fscanf(objeto, "%d", &v)>0)
  41. {
  42. v--;
  43. this->faces.back().vertice.push_back(v);
  44. fscanf(objeto, "%c", &op);
  45. if (op == '/')
  46. {
  47. if (fscanf(objeto, "%d", &v) > 0)
  48. {
  49. v--;
  50. this->faces.back().textura.push_back(v);
  51. fscanf(objeto, "%c", &op);
  52. fscanf(objeto, "%d", &v);
  53. v--;
  54. this->faces.back().normal.push_back(v);
  55. if (this->tipo < 2)
  56. this->tipo = 2;
  57. fscanf(objeto, "%c", &op);
  58. }
  59. else
  60. {
  61. fscanf(objeto, "%c", &op);
  62. fscanf(objeto, "%d", &v);
  63. v--;
  64. this->faces.back().normal.push_back(v);
  65. if (this->tipo < 1)
  66. this->tipo = 1;
  67. fscanf(objeto, "%c", &op);
  68. }
  69. }
  70. }
  71. else
  72. op = '\n';
  73. }
  74. }
  75. else
  76. {
  77. printf("aqui\n");
  78.  
  79. op = fgetc(objeto);
  80. while (op != '\n' && !feof(objeto))
  81. op = fgetc(objeto);
  82. //Essa verificação motivou o uso do FILE, que acabou sendo uma boa ideia no final.
  83. }
  84. }
  85.  
  86. fclose(objeto);
  87. }
  88. else
  89. {
  90. cout << "Nao foi possivel abrir o arquivo" << endl;
  91. exit(EXIT_FAILURE);
  92. }
  93. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement