private void espelho(bool vertical)
        {
            Poligono p = getPoligonoSelecionado();

            if (p != null)
            {
                Point pt = p.getCentroAtual();
                p.traslacao(-pt.X, -pt.Y);
                p.espelhamento(vertical);
                p.traslacao(pt.X, pt.Y);
                desenhaPoligonos();
            }
        }
        private void desenhaPoligonos()
        {
            pictureBox.Image = imagemBmp = new Bitmap(W, H);
            Util.preencher((Bitmap)pictureBox.Image, fundo);

            for (int i = 0; i < poligonos.Count; i++)
            {
                Poligono p = poligonos[i];
                p.desenha(imagemBmp);
                Point centro = p.getCentroAtual();
            }

            pictureBox.Image = imagemBmp;
        }
        private void moverPoligonoClick(MouseEventArgs e)
        {
            if (moverPoligono)
            {
                Poligono p = getPoligonoSelecionado();

                Point pontos = p.getCentroAtual();

                double dy = (double)e.Y - pontos.Y;
                double dx = (double)e.X - pontos.X;

                p.traslacao(dx, dy);
                desenhaPoligonos();
            }
        }
        private void btAplicar_Click(object sender, EventArgs e)
        {
            Poligono p = getPoligonoSelecionado();

            if (p != null)
            {
                double tx     = 0;
                double ty     = 0;
                double angulo = 0;

                double.TryParse(tbTranslacaoX.Text, out tx);
                double.TryParse(tbTranslacaoY.Text, out ty);
                double.TryParse(tbRotacao.Text, out angulo);

                if (rbOrigem.Checked)
                {
                    if (rbTranslacao.Checked)
                    {
                        p.traslacao(tx, ty);
                    }
                    if (rbEscala.Checked)
                    {
                        p.escala(tx, ty);
                    }
                    if (rbRotacao.Checked)
                    {
                        p.rotacao(angulo);
                    }
                    if (rbCisalhamento.Checked)
                    {
                        p.cisalhamento(tx, ty);
                    }
                    if (rbHorizontal.Checked)
                    {
                        p.espelhamento(false);
                    }
                    if (rbVertical.Checked)
                    {
                        p.espelhamento(true);
                    }
                }
                else
                {
                    if (rbCentro.Checked)
                    {
                        Point pt = p.getCentroAtual();
                        p.traslacao(-pt.X, -pt.Y);
                        if (rbTranslacao.Checked)
                        {
                            p.traslacao(tx, ty);
                        }
                        if (rbEscala.Checked)
                        {
                            p.escala(tx, ty);
                        }
                        if (rbRotacao.Checked)
                        {
                            p.rotacao(angulo);
                        }
                        if (rbCisalhamento.Checked)
                        {
                            p.cisalhamento(tx, ty);
                        }
                        if (rbHorizontal.Checked)
                        {
                            p.espelhamento(false);
                        }
                        if (rbVertical.Checked)
                        {
                            p.espelhamento(true);
                        }
                        p.traslacao(pt.X, pt.Y);
                    }
                }
                desenhaPoligonos();
            }
        }