#include <iostream>
#include <vector>
#include <limits>
 
using namespace std;
 
// Define um tipo genérico para um ponto 2D
class Ponto2D
{
public:
    float x;
    float y;
 
	Ponto2D(float x = 0, float y = 0)
	{
		this->x = x;
		this->y = y;
	}
};
 
int main() {
 
	// Cria o vetor com todos os pontos do seu objeto
	vector<Ponto2D> pontos;
 
	// Adiciona os pontos do corpo
	pontos.push_back(Ponto2D(0.0, 0.0));
	pontos.push_back(Ponto2D(0.8, 0.0));
    pontos.push_back(Ponto2D(0.8, 0.25));
    pontos.push_back(Ponto2D(0.0, 0.25));
 
    // Adiciona os pontos da asa direita
    pontos.push_back(Ponto2D(0.0, 0.0));
    pontos.push_back(Ponto2D(2.0, 1.0));
	pontos.push_back(Ponto2D(0.0, 2.0));
 
	// Adiciona os pontos da asa esquerda
	pontos.push_back(Ponto2D(0.0, 1.0));
    pontos.push_back(Ponto2D(2.0, 0.0));
    pontos.push_back(Ponto2D(2.0, 2.0));
 
    // Calcula o bounding box para a colisão
    float xmin, xmax, ymin, ymax;
 
    xmin = ymin = numeric_limits<float>::max();
    xmax = ymax = numeric_limits<float>::min();
 
    for(auto &ponto : pontos)
    {
    	if(ponto.x < xmin)
    		xmin = ponto.x;
    	if(ponto.x > xmax)
    		xmax = ponto.x;
    	if(ponto.y < ymin)
    		ymin = ponto.y;
    	if(ponto.y > ymax)
    		ymax = ponto.y;
    }
 
	cout << "xmin: " << xmin << " xmax: " << xmax << endl;
	cout << "ymin: " << ymin << " ymax: " << ymax << endl;
 
	return 0;
}
				I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8dmVjdG9yPgojaW5jbHVkZSA8bGltaXRzPgoKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCi8vIERlZmluZSB1bSB0aXBvIGdlbsOpcmljbyBwYXJhIHVtIHBvbnRvIDJECmNsYXNzIFBvbnRvMkQKewpwdWJsaWM6CiAgICBmbG9hdCB4OwogICAgZmxvYXQgeTsKICAgIAoJUG9udG8yRChmbG9hdCB4ID0gMCwgZmxvYXQgeSA9IDApCgl7CgkJdGhpcy0+eCA9IHg7CgkJdGhpcy0+eSA9IHk7Cgl9Cn07CgppbnQgbWFpbigpIHsKCQoJLy8gQ3JpYSBvIHZldG9yIGNvbSB0b2RvcyBvcyBwb250b3MgZG8gc2V1IG9iamV0bwoJdmVjdG9yPFBvbnRvMkQ+IHBvbnRvczsKCQoJLy8gQWRpY2lvbmEgb3MgcG9udG9zIGRvIGNvcnBvCglwb250b3MucHVzaF9iYWNrKFBvbnRvMkQoMC4wLCAwLjApKTsKCXBvbnRvcy5wdXNoX2JhY2soUG9udG8yRCgwLjgsIDAuMCkpOwogICAgcG9udG9zLnB1c2hfYmFjayhQb250bzJEKDAuOCwgMC4yNSkpOwogICAgcG9udG9zLnB1c2hfYmFjayhQb250bzJEKDAuMCwgMC4yNSkpOwogICAgCiAgICAvLyBBZGljaW9uYSBvcyBwb250b3MgZGEgYXNhIGRpcmVpdGEKICAgIHBvbnRvcy5wdXNoX2JhY2soUG9udG8yRCgwLjAsIDAuMCkpOwogICAgcG9udG9zLnB1c2hfYmFjayhQb250bzJEKDIuMCwgMS4wKSk7Cglwb250b3MucHVzaF9iYWNrKFBvbnRvMkQoMC4wLCAyLjApKTsKCQoJLy8gQWRpY2lvbmEgb3MgcG9udG9zIGRhIGFzYSBlc3F1ZXJkYQoJcG9udG9zLnB1c2hfYmFjayhQb250bzJEKDAuMCwgMS4wKSk7CiAgICBwb250b3MucHVzaF9iYWNrKFBvbnRvMkQoMi4wLCAwLjApKTsKICAgIHBvbnRvcy5wdXNoX2JhY2soUG9udG8yRCgyLjAsIDIuMCkpOwogICAgCiAgICAvLyBDYWxjdWxhIG8gYm91bmRpbmcgYm94IHBhcmEgYSBjb2xpc8OjbwogICAgZmxvYXQgeG1pbiwgeG1heCwgeW1pbiwgeW1heDsKICAgIAogICAgeG1pbiA9IHltaW4gPSBudW1lcmljX2xpbWl0czxmbG9hdD46Om1heCgpOwogICAgeG1heCA9IHltYXggPSBudW1lcmljX2xpbWl0czxmbG9hdD46Om1pbigpOwoKICAgIGZvcihhdXRvICZwb250byA6IHBvbnRvcykKICAgIHsKICAgIAlpZihwb250by54IDwgeG1pbikKICAgIAkJeG1pbiA9IHBvbnRvLng7CiAgICAJaWYocG9udG8ueCA+IHhtYXgpCiAgICAJCXhtYXggPSBwb250by54OwogICAgCWlmKHBvbnRvLnkgPCB5bWluKQogICAgCQl5bWluID0gcG9udG8ueTsKICAgIAlpZihwb250by55ID4geW1heCkKICAgIAkJeW1heCA9IHBvbnRvLnk7CiAgICB9CiAgICAKCWNvdXQgPDwgInhtaW46ICIgPDwgeG1pbiA8PCAiIHhtYXg6ICIgPDwgeG1heCA8PCBlbmRsOwoJY291dCA8PCAieW1pbjogIiA8PCB5bWluIDw8ICIgeW1heDogIiA8PCB5bWF4IDw8IGVuZGw7CgkKCXJldHVybiAwOwp9