Polígono

Para a criação de Polígono, há na realidade duas funções que criam esta geometria e seu funcionamento é parecido. Em ambas, o usuário passa uma série de Pontos definindo os **vértices** da geometria.

As arestas do polígono são construídas tendo em base a ordem dos vértices passados.

**nota:** a playCB só renderiza geometrias ***convexas***.

## Criação de polígono passando ponto a ponto

```
int criaPoligono(short int qtd, ...)

```

Função de criação de um círculo.

### Parâmetros

*qtd*: quantidade total de pontos que serão passados

*...*: variáveis do tipo Ponto que definem os vértices da geometria.

A quantidade de variáveis do tipo Ponto passadas por esta função deve variar de acordo com o valor de *qtd*.

### Exemplo

#### Exemplo 1: Entendendo parâmetros de CriaPoligono

```

#include <playCB/playcb.h>

int main(){

 Ponto p1, p2, p3, p4, p5;

 AbreJanela(600, 600, "Poligono - Pentagono");
 MostraPlanoCartesiano(10);
 PintarFundo(255, 255, 255);

 p1.x = -65;
 p1.y = 20;

 p2.x = 0;
 p2.y = 70;

 p3.x = 65;
 p3.y = 20;

 p4.x = 30;
 p4.y = -40;

 p5.x = -30;
 p5.y = -40;

 **CriaPoligono(5, p1, p2, p3, p4, p5);**
 Pintar(181, 230, 29);

 Desenha();

 return 0;
}

```

#### Exemplo 1: Usando retorno de CriaPoligono

```
#include <playCB/playcb.h>

int main(){
    Ponto p1, p2, p3, p4, p5;
    int geo1, geo2;
    int j = -80;

    AbreJanela(600, 600, "Pintando primeiro elemento depois");
    PintarFundo(255, 255, 255);
    MostraPlanoCartesiano(10);

    p1.x = -65;
    p1.y = 20;

    p2.x = 0;
    p2.y = 70;

    p3.x = 65;
    p3.y = 20;

    p4.x = 30;
    p4.y = -40;

    p5.x = -30;
    p5.y = -40;

    geo1 = CriaPoligono(5, p1, p2, p3, p4, p5);
    Pintar(0, 0, 0);

    p1.x = -13;
    p1.y = 4;

    p2.x = 0;
    p2.y = 14;

    p3.x = 13;
    p3.y = 4;

    p4.x = 6;
    p4.y = -8;

    p5.x = -6;
    p5.y = -8;

    geo2 = CriaPoligono(5, p1, p2, p3, p4, p5);
    Pintar(255, 255, 0);

    Pintar(255, 0, 0, POLIGONO, geo1);

    Desenha();
}

```

## Criação de polígono passando vetor

```
int criaPoligonoVetor(short int index, Ponto *p)

```

Função de criação de um polígono.

### Parâmetros

*index*: tamanho do vetor

*\*p*: vetor de Pontos

O tamanho do vetor de Pontos deve ser exatamente igual ao valor de *index*.

### Exemplo

#### Exemplo 1: Entendendo parâmetros de CriaPoligonoVetor

```

#include <playCB/playcb.h>

int main(){

 Ponto p[5];

 AbreJanela(600, 600, "Poligono - Pentagono");
 MostraPlanoCartesiano(10);
 PintarFundo(255, 255, 255);

 p[0].x = -65;
 p[0].y = 20;

 p[1].x = 0;
 p[1].y = 70;

 p[2].x = 65;
 p[2].y = 20;

 p[3].x = 30;
 p[3].y = -40;

 p[4].x = -30;
 p[4].y = -40;

 CriaPoligonoVetor(5, p);
 Pintar(181, 230, 29);

 Desenha();

 return 0;
}

```

#### Exemplo 2: Usando retorno de CriaPoligonoVetor

```
#include <playCB/playcb.h>

int main(){
    Ponto p[5];
    int geo1, geo2;
    int j = -80;

    AbreJanela(600, 600, "Pintando primeiro elemento depois");
    PintarFundo(255, 255, 255);
    MostraPlanoCartesiano(10);

    p[0].x = -65;
    p[0].y = 20;

    p[1].x = 0;
    p[1].y = 70;

    p[2].x = 65;
    p[2].y = 20;

    p[3].x = 30;
    p[3].y = -40;

    p[4].x = -30;
    p[4].y = -40;

    geo1 = CriaPoligonoVetor(5, p);
    Pintar(0, 0, 0);

    p[0].x = -13;
    p[0].y = 4;

    p[1].x = 0;
    p[1].y = 14;

    p[2].x = 13;
    p[2].y = 4;

    p[3].x = 6;
    p[3].y = -8;

    p[4].x = -6;
    p[4].y = -8;

    geo2 = CriaPoligonoVetor(5, p);
    Pintar(255, 255, 0);

    Pintar(255, 0, 0, POLIGONO, geo1);

    Desenha();
}

```

## Ver também

* Pintar outras geometrias usando seus índices

*Revisado dia 24/02/2016*