#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;
}