Você está na página 1de 5

HOMOTETIAS - ampliao/reduo

Introduzir matriz A
k=0.5; //Alterar k para aumentar/diminuir
A=[0 0 -1 -1 2 2 1 1 ; 0 3 3 4 4 3 3 0];
X=A(1,:); A1=k*A; //Transformao de A obtida fazendo k*A
Y=A(2,:);
subplot(232);
subplot(231); plot(X,Y, 'r.-')
plot(X,Y, 'r.-') xfpoly(X,Y,9);
xfpoly(X,Y,9); xfpoly(A1(1,:),A1(2,:),20);
title(gettext("Figura original")); title(gettext("Homotetia"));

Rotao
TRANSLAO associada ao vector(x,y) // Rotao de um ngulo alpha
// S necessrio ngulo
Tx=2; //duas unidades para a direita
Ty=3; //trs unidades para cima angulo=90
alpha=angulo*(%pi)/180; // Passar a radianos
a=size(A,2);
T2x=Tx*ones(1,a); Rotao=[cos(alpha) sin(alpha); -sin(alpha)
T2y=Ty*ones(1,a); cos(alpha)];
T2=[T2x;T2y];
// Transformao de A obtida fazendo Rotao*A
A2=A+T2; // Transformao de A obtida fazendo A+T2 A3=Rotao*A;

subplot(234); subplot(235);
plot(X,Y, 'r.-') plot(X,Y, 'r.-')
xfpoly(X,Y,9); xfpoly(X,Y,9);
xfpoly(A2(1,:),A2(2,:),15); xfpoly(A3(1,:),A3(2,:),16);
title(gettext("Translao")); title(gettext("Rotao"));

Rotao
// Rotao de um angulo alpha
// S necessario angulo Outras transformaes
//Necessrio alterar a matriz T
angulo=90
alpha=angulo*(%pi)/180; // Passar a radianos
T=[1 1/4;0 1]
Rotao=[cos(alpha) sin(alpha); -sin(alpha)
/// Transformao de A obtida fazendo Rotao*A
cos(alpha)];
A4=T*A;
/// Transformao de A obtida fazendo Rotao*A
subplot(236);
A3=Rotao*A;
plot(X,Y, 'r.-')
xfpoly(X,Y,9);
subplot(235);
xfpoly(A4(1,:),A4(2,:),12);
plot(X,Y, 'r.-')
title(gettext("Transformao"));
xfpoly(X,Y,9);
xfpoly(A3(1,:),A3(2,:),16);
title(gettext("Rotao"));

Você também pode gostar