• Nenhum resultado encontrado

APNP LC/EE Computação Gráfica Texto T06 (atualizada em 17 mai. 2021)

N/A
N/A
Protected

Academic year: 2021

Share "APNP LC/EE Computação Gráfica Texto T06 (atualizada em 17 mai. 2021)"

Copied!
6
0
0

Texto

(1)

APNP – LC/EE – Computação Gráfica

Texto T06

(atualizada em 17 mai. 2021)

[email protected]

OpenGL - Função para gerenciar eventos do mouse

void glutMouseFunc(void (*func) (int button, int state, int x, int y));

Estabelece a função callback que é chamada pela GLUT cada vez que ocorre um evento de mouse. Parâmetros de entrada da função callback: (int button, int state, int x, int y). Três valores são válidos para o parâmetro button: GLUT_LEFT_BUTTON, GLUT_MIDDLE_BUTTON e GLUT_RIGHT_BUTTON. O parâmetro state pode ser GLUT_UP ou GLUT_DOWN. Os parâmetros x e y indicam a localização do mouse no momento que o evento ocorreu.

Exemplo:

void GerenciaMouse(int button, int state, int x, int y)

{

if (button == GLUT_LEFT_BUTTON)

if (state == GLUT_DOWN)

xc--;

if (button == GLUT_RIGHT_BUTTON)

if (state == GLUT_DOWN)

xc++;

glutPostRedisplay();

}

int main(int argc, char **argv)

{

(2)

OpenGL – função PARA gerenciar eventos do teclado

void glutKeyboardFunc(void (*func) (unsigned char key, int x, int y));

Estabelece a função callback que é chamada pela GLUT cada vez que uma tecla que gera código ASCII é pressionada (por exemplo: a, b, A, b, 1, 2). Além do valor ASCII da tecla, a posição (x,y) do mouse quando a tecla foi pressionada também é retornada. Parâmetros de entrada da função callback: (unsigned char key, int x, int y).

void glutSpecialFunc(void (*func) (int key, int x, int y));

Estabelece a função callback que é chamada pela GLUT cada vez que uma tecla que gera código não-ASCII é pressionada, tais como Home, End, PgUp, PgDn, F1 e F2. Além da constante que identifica a tecla, a posição corrente (x,y) do mouse quando a tecla foi pressionada também é retornada. Parâmetros de entrada da função callback: (int key, int x, int y).

Os valores válidos para o primeiro parâmetro são: GLUT_KEY_F1, GLUT_KEY_F2, GLUT_KEY_F3, GLUT_KEY_F4, GLUT_KEY_F5, GLUT_KEY_F6, GLUT_KEY_F7, GLUT_KEY_F8, GLUT_KEY_F9, GLUT_KEY_F10, GLUT_KEY_F11, GLUT_KEY_F12, GLUT_KEY_LEFT, GLUT_KEY_UP, GLUT_KEY_RIGHT, GLUT_KEY_DOWN, GLUT_KEY_PAGE_UP, GLUT_KEY_PAGE_DOWN, GLUT_KEY_HOME, GLUT_KEY_END, GLUT_KEY_INSERT.

Exemplo:

void SpecialKeys(int key, int x, int y)

{

if(key == GLUT_KEY_UP)

yc++;

if(key == GLUT_KEY_DOWN)

yc--;

glutPostRedisplay();

}

int main(int argc, char **argv)

{

...

// Especifica a funcao que vai tratar os eventos do teclado

glutSpecialFunc(SpecialKeys);

...

}

(3)

Preenchimento de regiões

Preenchimento de regiões – Método da Semente

Exemplo:

Figura 1 – Preenchimento para a direita.

Fonte: Autor.

(4)

Figura 3 – Preenchimento para a esquerda.

Fonte: Autor.

Figura 4 – Preenchimento para baixo.

(5)

Figura 5 – Preenchimento (direita-cima-esquerda).

Fonte: Autor.

Figura 6 – Preenchimento completo.

(6)

Algoritmo recursivo para preenchimento de regiões a partir da Semente

vazio preencheArea(inteiro x, inteiro y, decimal rf, decimal gf, decimal bf,

decimal rp, decimal gp, decimal bp)

início

inteiro i;

caractere pixel[4];

leiaPixel(x, y, pixel);

corPixel(rp, gp, bp);

se (pixel[0] == rf E pixel[1] == gf E pixel[2] == bf)

início

desenha_pontos

vértice(x, y);

fim desenha_pontos

preencheArea(x+1,y , rf,gf,bf,rp,gp,bp);

// Preenche para a direita

preencheArea(x ,y+1, rf,gf,bf,rp,gp,bp);

// Preenche para cima

preencheArea(x-1 ,y , rf,gf,bf,rp,gp,bp);

// Preenche para a esquerda

preencheArea(x ,y-1 , rf,gf,bf,rp,gp,bp);

// Preenche para baixo

fim

}

Referências

Documentos relacionados

Há uma grande expectativa entre os cientistas de que, nesta próxima década, novos resultados de observações cosmológicas, aliados aos resultados dos grandes aceleradores como o

Se algum dos efeitos secundários se agravar ou se detectar quaisquer efeitos secundários não mencionados neste folheto, informe o seu médico ou farmacêutico.. Este folheto

Ou talvez você tenha apenas reservado um tempo para se sentar e refletir sobre a Mensagem, para chegar um pouco mais perto daquilo que satsang significa para você, para mergulhar

Se nesse período crítico, ela encontra alguém que, ignorante e inescrupulosamente, lhe fornece exercícios respiratórios, e se ela segue as instruções fidedignamente na esperança

Em vez de testar separadamente as duas hip´ oteses, no entanto, Sunshine e Tyler elaboraram um modelo de equa¸c˜ oes estruturais com uma an´ alise de caminhos para

Depuis cet objectif principal nous espérions atteindre d’autres objectifs secondaires : mettre en valeur la langue maternelle chez les élèves comme clé pour leur

Como todos os medicamentos, Quetiapina Accord pode causar efeitos secundários, no entanto estes não se manifestam em todas as pessoas.. Se algum dos seguintes efeitos secundários

Depois de lhe ser administrado Midazolam Hameln, não conduza nem utilize ferramentas ou máquinas antes de o seu médico autorizar, porque o Midazolam Hameln pode causar- lhe