Buscar

Aula de Laboratório de Matlab

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 8 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 8 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

Aula de Laboratório de Matlab
Aula 01 – Criação e transformação de objetos 2D e 3D em coordenadas
homogêneas
1- Como criar um objeto em Matlab?
• É necessário criar a matriz de coordenadas dos pontos. Cada linha representará o
conjunto de coordenadas de cada ponto que compõe o objeto. Cada coluna
corresponderá a uma das coordenadas.
Por exemplo, para um objeto 2D em coordenadas cartesianas:
p2d = [1 2; 2 2; 2 1.5; 1 1.5; 1 2]';
Nas matrizes, os “;” indicam quebra de linha e a aspas simples fazem o transposto da
matriz. Desta forma, todas as coordenadas x ficam na linha 1 e as coordenas y na linha
2. 
Para se criar objetos em coordenadas homogêneas basta acrescentar mais uma linha, a
linha dos pesos. O valor dos elementos desta linha pode ser sempre 1, significando que
as coordenadas homogêneas são iguais às coordenadas cartesianas.
Para representar em coordenadas homogêneas:
p2d(3,:)=1;
Os “:” usado no comando, ao invés do índice da matriz, significa que todas as colunas
da linha 3 da matriz serão preenchidas com valor 1.
Agora, para um objeto 3D em coordenadas cartesianas:
p3d = [ 0 0 0 
 1 0 0 
 1 1 0 
 0 1 0 
 0 0 0 
 0 0 1 
 1 0 1 
 1 1 1 
 0 1 1 
 0 0 1 
 0 1 1 
 0 1 0 
 0 0 0 
 1 0 0 
 1 0 1 
 1 1 1 
 1 1 0 
 1 0 0 ]'; 
Para representar em coordenadas homogêneas:
p3d(4,:)=1;
2- Para visualizar o objeto:
• Quando o objeto é 2D, usamos:
plot(p(1,:),p(2,:));
axis equal;
axis([-5 5 -5 5]);
grid on;
• Quando o objeto é 3D, usamos:
plot3(p(1,:),p(2,:),p(3,:));
axis('equal');
axis([-5 5 -5 5 -5 5]);
grid on;
Crie dois objetos, um em 2D e outro em 3D, ambos representados em coordenadas
homogêneas e faça a sua visualização gráfica.
Para facilitar, você pode fazer scripts para criar seus objetos, basta abrir o Notepad e
gravar os comandos de criação da matriz dos pontos como um arquivo .m no seu diretório
de trabalho (Ex: criaobj.m). Assim, você poderá executar o comando de dentro do próprio
Matlab, sem precisar ficar digitando toda a matriz de coordenadas a cada vez que precisar
criar o mesmo objeto.
Da mesma forma, você poderá criar as funções para desenhar os gráficos 2D e 3D
passando como parâmetro para as funções as matrizes de pontos dos objetos (Ex: des2d.m
e des3d.m). 
3- Utilizando coordenadas homogêneas para fazer a translação e a rotação de um
objeto.
Com a utilização de coordenadas homogêneas, operações como translação e rotação podem
ser realizadas através de uma simples multiplicação de cada ponto do objeto pela matriz de
transformação para se obter a nova localização do ponto.
As matrizes de translação com relação à origem e de rotação em torno do eixo Z estão
descritas abaixo: 
T(dx,dy) =
1 0 dx
0 1 dy
0 0 1 T(dx,dy,dz) =
1 0 0 dx
0 1 0 dy
0 0 1 dz
0 0 0 1
RZ(θ) =
cos(θ) -sen(θ) 0
sen(θ) cos(θ) 0
0 0 1
RZ(θ) =
cos(θ) -sen(θ) 0 0
sen(θ) cos(θ) 0 0
0 0 1 0
0 0 0 1
• Translação em 2D:
Para criar a função em Matlab, abra o Notepad e escreva os comandos abaixo:
function newp=move2d(p,dx,dy)
trans= [1 0 dx; 0 1 dy; 0 0 1]
newp = trans*p;
Salve o arquivo como move2d.m no seu diretório de trabalho. No Matlab, vá para este
diretório e, com o objeto 2D que você criou, execute:
np = move2D(obj2d,2,5);
plot(np(1,:),np(2,:));
Crie rotina similar para a translação em 3D (move3d.m), aplique ao objeto 3D que
você criou anteriormente e faça a visualização gráfica.
• Rotação em 2D:
Abra o Notepad e escreva os comandos abaixo:
function newp=rot2d(p,ang)
ang=ang*pi/180
rot=[cos(ang), -sin(ang), 0; sin(ang), cos(ang), 0; 0 0 1]
newp = rot*p;
Salve o arquivo como rot2d.m no seu diretório de trabalho. 
Com o objeto 2D que você criou, execute no Matlab:
np = rot2D(obj2d, 30);
plot(np(1,:),np(2,:));
Crie rotinas similares para a rotação em 3D em torno dos eixos x, y e z, aplique ao
objeto 3D que você criou anteriormente e faça a visualização gráfica.
Crie agora as rotinas para a mudança de escala em 2D e em 3D, aplique aos objetos
que você criou anteriormente e faça a visualização gráfica. Lembre-se que as matrizes
de mudança de escala são:
Esc2d =
sx 0 0
0 sy 0
0 0 1 Esc3d =
sx 0 0 0
0 sy 0 0
0 0 sz 0
0 0 0 1
Guarde todas as rotinas que você vez hoje. Elas serão a base para a próxima aula e para os
trabalhos que você fará.
Aula de Laboratório de Matlab
Aula 02 - Movimentação e animação de objetos ou partes de um desenho em
computação gráfica 2D.
Neste laboratório, criaremos de forma bem simples um “robô” e faremos a movimentação
de um braço e antebraço.
1- Para criar o robô:
• Crie um arquivo no Notepad com os comandos abaixo e salve como robo.m:
corpo=[0 0 1; 1 0 1; 1 2 1; 0 2 1; 0 0 1]';
braco=[1 2 1; 2 2 1; 2 1.5 1; 1 1.5 1; 1 2 1]';
antebraco=[2 2 1; 3 2 1; 3 1.5 1; 2 1.5 1; 2 2 1]';
des2d(corpo);
hold;
des2d(braco);
des2d(antebraco);
cotovelo=[2 1.75 1]';
Agora, todas as vezes que você executar o comando “robo” no Matlab, as matrizes
correspondentes ao corpo, braço e antebraço do robô serão criadas e mostradas
graficamente. Além disto as coordenadas do cotovelo também serão armazenadas em uma
variavél.
2- Para movimentar partes do robô
Utilizando as rotinas de translação e rotação para 2D que você criou na aula anterior,
crie um arquivo .m que implemente uma função para girar o antebraço do robô em
torno do cotovelo recebendo como parâmetro todas as matrizes que formam o robô e o
ângulo de rotação desejado. Não se esqueça de plotar o resultado final para vermos se
o antebraço do robô se mexeu corretamente.
Dica: Lembre-se que para girar um objeto em torno de um ponto, é preciso transladar este
objeto até a origem, rotacionar e transladar novamente para o ponto.
Tente fazer este tipo de movimento para o braço, ou seja, movimentá-lo com relação
ao ombro do robô. Crie a função fazendo a visualização em intervalos submúltiplos do
ângulo afim de gerar uma animação.
Aula de Laboratório de Matlab
Aula 03 – Movimentação e animação de objetos 3D
Usando as rotinas e comandos aprendidos nas aulas anteriores, crie um objeto 3D e
tente fazer uma animação deste objeto com relação a origem usando as rotinas de
translação e rotação já vistas. Lembre-se de usar coordenadas homogêneas!
Para criar o efeito de animação, divida o processo de movimentação do objeto em
intervalos iguais e efetue o mesmo passo a passo, fazendo a sua visualização a cada
momento. 
E se toda esta movimentação fosse em relação a um ponto diferente da origem? Como
ficaria? Faça alguns testes com as rotinas que você acabou de implementar.
Aula de Laboratório de Matlab
Aula 04 – Criação de projeções
Nesta aula de laboratório, vamos implementar funções em Matlab para algumas das
projeções que geralmente utilizamos.
Para facilitar, todas as projeções serão criadas com relação ao eixo Z.
Projetar um objeto significa criar uma imagem ou desenho 2D deste objeto 3D a partir de
um centro de projeção.
Crie um objeto 3D em coordenadas homogêneas e faça a sua visualização.
• Projeção Ortográfica com plano de projeção perpendicular ao eixo Z.
O plano de projeção é perpendicular ao eixo Z, as projetantes são paralelas (foco no
infinito) e formam a imagem atingindo este plano perpendicularmente. Neste caso,
basta desenhar a vista do objeto a partir das suas coordenadas X e Y.
Se quisermos criar uma matriz de transformação que represente este tipo de projeção,
esta matriz seria:
Ort=
1 0 0 0
0 1 0 0
0 0 0 1
Crie o programa abaixo no Notepad e salve o arquivo com o mesmo nome do comando
no seu diretório de trabalho:
function newp=projort(p)
ort = [1 0 0 0; 0 1 0 0; 0 0 0 1];
newp = ort*p;
Vá para o Matlab. Utilizando o objeto 3D que você criou aplique a função para
projeção ortográfica e faça a visualização2D das coordenadas X e Y para ter a
vista do objeto.
Como seria a função se quiséssemos fazer as outras vistas perpendiculares aos
eixos X e Y?
• Projeção Oblíqua
Também é um caso de projeção paralela, mas as projetantes não atingem o plano de
projeção de forma perpendicular, mas sim, oblíqua.
A projeção é definida por dois ângulos, α e β. O primeiro representa o ângulo da
projeção e o segundo representa a inclinação ou rotação em relação ao eixo X com que
o desenho deverá ser feito.
No caso, da projeção ser perpendicular ao eixo Z, as coordenadas X eY da projeção
deverão ser as coordenadas originais acrescidas de deslocamentos proporcionais a sua
coordenada Z e em escala definida por α.
Xp = X + Z* l *cos(β); 
Yp = Y + Z* l * sen(β); onde a escala l = cotg(α).
Na forma de matriz:
Obliq =
1 0 l cos(β) 0
0 1 l sen(β) 0
0 0 0 1
A função seria:
function newp=projobliq(p,alfa,beta)
beta=beta*pi/180;
alfa=alfa*pi/180;
l=cot(alfa);
obliq= [1 0 l*cos(beta) 0; 0 1 l*sin(beta) 0; 0 0 0 1];
newp = obliq*p;
Aplique a função acima para o objeto que você criou e faça a visualização em 2D.
Experimente diferentes valores de ângulos para entender a projeção oblíqua.
Como seriam as projeções cavaleira e a cabinet? Crie e teste as rotinas para estas
duas projeções.
• Projeção Perspectiva
Neste caso, as medidas projetadas variam inversamente com a distância em relação ao
centro de projeção.
Considerando o plano de projeção perpendicular ao eixo Z e com o sistema de
coordenadas definidas conforme o desenho abaixo, tem-se:
Xp = X/(Z/f + 1) e Yp = Y/(Z/f + 1)
Na forma de matriz: 
Pers =
1 0 0 0
0 1 0 0
0 0 1/f 1
Conforme os exercícios anteriores, faça a rotina para a projeção perspectiva
implementando uma função que tenha como parâmetros a distância focal e uma
matriz de pontos. Salve a função em um arquivo .m e execute o comando em
Matlab para fazer a projeção perspectiva do objeto que você criou. Faça a
visualização em 2D.
f
x
y
z
u
 v
m(u,v)
M(x,y,z)
C

Continue navegando