3
 glTranslatef e glScalef  glTranslatef é a função que realiza a translação, ou s eja, movimenta um objeto. A origem do sistema é transladada para a posição for necida dentro dos parâmetros da função (mais uma vez lembrando que x indica o lado, y a altura e z a profundidade): glTranslatef(x,y,z) glScalef altera a escala dos objetos. O resultado obtido é o along amento ou encolhimento dos objetos no sentido dos eixos. A função é usada da s eguinte forma: glScalef(x,y,z). Se o valor de algum dos parâmetros for 0, esta cordenada simplesmente será eliminada. glPushMatrix e glPopMatrix Essas funçõe s permitem guardar temporariamente a matriz de transformação atual. Após a instrução glPopMatrix() todas as operações que altera m a matriz atual, como por exemplo, glTranslatef, efetuadas a pós o último glPushMat rix(), são igno radas. Por exemplo, se depois de criar e movimentar um cubo não usarmos o glPopMatrix, os outros objetos serão criados à partir do que foi definido depois do primeiro desenho. Se usarmos o glPushMatrix antes do cubo e o glPopMatrix depois, a origem do sistema mais uma vez será a que estava sendo trabalhada antes de criar mos o objeto. Criando a mesa  Vamos fazer agora a modelagem de nossa mesa. Como já fizemos uma biblioteca para chamar o cubo, podemos chamá-la para criar a tampa e as pernas da mesa, colocando cada parte dentro de glPushMatrix() e glPopMatrix(). Vamos usar o comando glScalef  para mudar os tamanhos dos cubos transformando-os na tampa e nas pernas da mesa e o comando glTranslatef para definirmos a posição de cada parte da mesa. // //Tampa da mesa // glPushMatrix(); glScalef(1,0.05,50); cubo(160,180,160,0,0,0,200,0.25); glPopMatrix(); // //Pernas da mesa // glPushMatrix(); glTranslat ef( -180,-200,-0); glScalef(0.1,1,2); cubo(250,50,50,0,0,0,200,0.25); glPopMatrix(); glPushMatrix(); glTranslatef(180, -200,0); glScalef(0.1,1,2); cubo(250,50,50,0,0,0,200,0.25);

glTranslatef e glScalef

Embed Size (px)

Citation preview

5/8/2018 glTranslatef e glScalef - slidepdf.com

http://slidepdf.com/reader/full/gltranslatef-e-glscalef 1/3

 

glTranslatef e glScalef  

glTranslatef é a função que realiza a translação, ou seja, movimenta um objeto. A

origem do sistema é transladada para a posição fornecida dentro dos parâmetros da

função (mais uma vez lembrando que x indica o lado, y a altura e z a profundidade):

glTranslatef(x,y,z)

glScalef altera a escala dos objetos. O resultado obtido é o alongamento ou

encolhimento dos objetos no sentido dos eixos. A função é usada da seguinte forma:

glScalef(x,y,z). Se o valor de algum dos parâmetros for 0, esta cordenada simplesmente

será eliminada.

glPushMatrix e glPopMatrix 

Essas funções permitem guardar temporariamente a matriz de transformação atual.Após a instrução glPopMatrix() todas as operações que alteram a matriz atual, como por 

exemplo, glTranslatef, efetuadas após o último glPushMatrix(), são ignoradas.

Por exemplo, se depois de criar e movimentar um cubo não usarmos o glPopMatrix, osoutros objetos serão criados à partir do que foi definido depois do primeiro desenho. Se

usarmos o glPushMatrix antes do cubo e o glPopMatrix depois, a origem do sistema

mais uma vez será a que estava sendo trabalhada antes de criarmos o objeto.

Criando a mesa 

Vamos fazer agora a modelagem de nossa mesa. Como já fizemos uma biblioteca para

chamar o cubo, podemos chamá-la para criar a tampa e as pernas da mesa, colocandocada parte dentro de glPushMatrix() e glPopMatrix(). Vamos usar o comando glScalef 

 para mudar os tamanhos dos cubos transformando-os na tampa e nas pernas da mesa e o

comando glTranslatef para definirmos a posição de cada parte da mesa.

//

//Tampa da mesa

//

glPushMatrix();

glScalef(1,0.05,50);

cubo(160,180,160,0,0,0,200,0.25);

glPopMatrix();

//

//Pernas da mesa

//

glPushMatrix();

glTranslatef(-180,-200,-0);

glScalef(0.1,1,2);

cubo(250,50,50,0,0,0,200,0.25);

glPopMatrix();

glPushMatrix();

glTranslatef(180,-200,0);

glScalef(0.1,1,2);

cubo(250,50,50,0,0,0,200,0.25);

5/8/2018 glTranslatef e glScalef - slidepdf.com

http://slidepdf.com/reader/full/gltranslatef-e-glscalef 2/3

 

glPopMatrix();

glPushMatrix();

glTranslatef(-180,-200,-480);

glScalef(0.1,1,2);

cubo(250,50,50,0,0,0,200,0.25);

glPopMatrix();

glPushMatrix();

glTranslatef(180,-200,-480);

glScalef(0.1,1,2);

cubo(250,50,50,0,0,0,200,0.25);

glPopMatrix();

glRotatef  

glRotatef é a função usada para podermos aplicar a rotação nos objetos. Os parâmetros

usados nesta função são: ângulo, componente x, componente y e componente z. Depois

de escolhermos o ângulo, damos os valores para x, y e z, que podem ser 0 ou 1.

Por exemplo, se quero rotacionar um objeto em 45 graus no eixo x, chamo a função da

seguinte forma:

glRotatef(45,1,0,0);

5/8/2018 glTranslatef e glScalef - slidepdf.com

http://slidepdf.com/reader/full/gltranslatef-e-glscalef 3/3

 

Se quero rotacionar em 70 graus nos eixos y e z, chamo da seguinte forma:

glRotatef(70,0,1,1);

Exercícios 

Agora que já modelamos nossa mesa, vamos criar umas cadeiras, rotacionar alguma(s)delas para deixar mais apresentável nosso desenho

Uma dica é criar uma biblioteca cadeira.h para ficar mais fácil colocar mais cadeiras no

desenho. Lembre-se de usar os comandos glPushMatrix e glPopMatrix para cada uma

das cadeiras e colocar dentro desses comandos as funções glTranslatef e glRotatef nas

cadeiras que quiser rotacionar. Se quiser também pode usar glScalef para mudar o

tamanho de algumas cadeira.

Se preferir pode também criar uma biblioteca mesa.h para facilitar a criação de mais

mesas se desejar.

A imagem abaixo mostra o desenho que fiz de uma mesa com um bulê de chá e suas

cadeiras. Fiz uma delas caída para dar aquela impressão de que algum cara meio

chapado acabou derrubando a cadeira (talvez o chá dentro do bulê fosse de cogumelo«

Quem sabe? Talvez os caras que beberam ;D)