fork download
  1. #include <iostream>
  2. #include <vector>
  3. #include <limits>
  4.  
  5. using namespace std;
  6.  
  7. // Define um tipo genérico para um ponto 2D
  8. class Ponto2D
  9. {
  10. public:
  11. float x;
  12. float y;
  13.  
  14. Ponto2D(float x = 0, float y = 0)
  15. {
  16. this->x = x;
  17. this->y = y;
  18. }
  19. };
  20.  
  21. int main() {
  22.  
  23. // Cria o vetor com todos os pontos do seu objeto
  24. vector<Ponto2D> pontos;
  25.  
  26. // Adiciona os pontos do corpo
  27. pontos.push_back(Ponto2D(0.0, 0.0));
  28. pontos.push_back(Ponto2D(0.8, 0.0));
  29. pontos.push_back(Ponto2D(0.8, 0.25));
  30. pontos.push_back(Ponto2D(0.0, 0.25));
  31.  
  32. // Adiciona os pontos da asa direita
  33. pontos.push_back(Ponto2D(0.0, 0.0));
  34. pontos.push_back(Ponto2D(2.0, 1.0));
  35. pontos.push_back(Ponto2D(0.0, 2.0));
  36.  
  37. // Adiciona os pontos da asa esquerda
  38. pontos.push_back(Ponto2D(0.0, 1.0));
  39. pontos.push_back(Ponto2D(2.0, 0.0));
  40. pontos.push_back(Ponto2D(2.0, 2.0));
  41.  
  42. // Calcula o bounding box para a colisão
  43. float xmin, xmax, ymin, ymax;
  44.  
  45. xmin = ymin = numeric_limits<float>::max();
  46. xmax = ymax = numeric_limits<float>::min();
  47.  
  48. for(auto &ponto : pontos)
  49. {
  50. if(ponto.x < xmin)
  51. xmin = ponto.x;
  52. if(ponto.x > xmax)
  53. xmax = ponto.x;
  54. if(ponto.y < ymin)
  55. ymin = ponto.y;
  56. if(ponto.y > ymax)
  57. ymax = ponto.y;
  58. }
  59.  
  60. cout << "xmin: " << xmin << " xmax: " << xmax << endl;
  61. cout << "ymin: " << ymin << " ymax: " << ymax << endl;
  62.  
  63. return 0;
  64. }
Success #stdin #stdout 0s 3468KB
stdin
Standard input is empty
stdout
xmin: 0 xmax: 2
ymin: 0 ymax: 2