Está en la página 1de 15

Transformaciones Geomtricas en 2D

Una transformacin es un cambio que se le aplica a una figura o punto para generar otra muy parecida pero con alguna diferencia en cuanto a tamao, posicin, ngulo o despliegue. Tipos de transformaciones que se pueden aplicar son escalamiento, rotacin, refleccin, traslacin y deformacin. Un punto en 2D se representa como ! , y" y este puede ser almacenado de diferentes formas en alguna estructura, como puede ser en# $ector unidimensional $ector %idimensional &lase de 'untos 'or e(emplo )amos a almacenar la figura de una flec*a que tiene por coordenadas# 2++,,+ -++,-++ 2++,-++ .++,-,+ -++,2++ 2++,2++

2++,2,+ int flec*a "/0-++,-++,2++,-++,2++,,+,.++,-,+,2++,2,+,2++,2++,-++,2++12 int flec*a " "/00-++,-++1,02++,-++1,02++,,+1,0.++,-,+1,02++,2,+1,02++,2++1,0-++,2++112 class punto0 int !2 int y2 1 punto flec*a "/0ne3 punto4-++,-++5,ne3 punto42++,-++5,ne3 punto42++,,+5, ne3 punto4.++,-,+5,ne3 punto42++,2,+5,ne3 punto42++,2++5, ne3 punto4-++,2++512 Despus de eso entonces a*ora sigue mostrar la figura en el plano bidimensional.

6epresentacin de las Transformaciones en 2D 7as transformaciones son representadas a tra)s de matrices. Un punto dado est representado por# !,y" 8 las transformaciones por una matri9 de 2!2 - + + -

De tal forma que si se multiplica el punto dado por la matri9 identidad nos queda el mismo punto. - + + !,y" 'ero si modificamos a la matri9 identidad por una )ariable nos queda de la siguiente forma# : + + !,y" / :!,y" 'roduciendo un escalamiento sobre el e(e ! / !,y"

8 si es sobre el otro )alor queda#'roduciendo un escalamiento sobre el e(e y / !,%y" - + + % !,y"

8 para que se produ9ca un escalamiento uniforme se modifican los dos )alores. / :!,%y" 'roduciendo un escalamiento uniforme sobre ambos e(es

: + + %

!,y"

6eali9ar la programacin del escalamiento en dos dimensiones.

Rotacin 7a rotacin de una figura en dos dimensiones tambin se reali9a por medio de la matri9 de transformacin de 2;2, como se muestra a continuacin# cos < sen < =sen < cos < !,y" / !cos<=ysen< ,!sen<>ycos<" 'roduciendo un rotacin en el sentido de las manecillas del relo(

cos < =sen < sen < cos < !,y"

/ !cos<>ysen< ,=!sen<>ycos<" las manecillas del relo(

'roduciendo un rotacin en contra de

Deformacin o Shear 7a deformacin de una figura en dos dimensiones modifica la forma de la figura, este cambio puede ser tanto en ! como en y o en ambos. - % + !,y" / !,%!>y" 'roduciendo una deformacin en el e(e y

/ !>:y,y"

'roduciendo una deformacin en el e(e !

- + : -

!,y"

- + : !,y"

/ !>:y,%!>y"

'roduciendo una deformacin en ambos e(es

Traslacin o Trasladar 'ara reali9ar una traslacin y que esta funciones como una multiplicacin de matrices y no como una suma, la matri9 se debe de ampliar a .!. y utili9ar coordenadas *omogneas. + + + + T! Ty !,y,-" / !>T!,y>Ty,-" Trasladando el punto la cantidad especificada por T! y Ty

7a traslacin nos sir)e para que podamos escalar, rotar, refle(ar y deformar una figura sobre un punto de esta. ?ecuencia# a5 Trasladar la figura al origen @T!,=Ty b5 6eali9ar la transformacin 4escalar, rotar, refle(ar y deformar5 c5 6egresar la figura a la posicin especificada 4T!,Ty5 6efleccin Asta transformacin permite simular lo que ocurre cuando se refle(a una imagen en un espe(o.
=- + + !,y" / =!,y" 6efleccin en B

- + + =!,y"

/ !,=y" 6efleccin en 8

/ =!,=y" 6efleccin en B8

=- + + =!,y"

&oordenadas *omogneas 7as coordenadas homogneas son un instrumento usado para describir un punto en el espacio. An coordenadas *omogneas, todo punto bidimensional est definido por tres coordenadas. De tal modo que un punto de dimensiones x, y, se lo representa por . )alores# x C w, y C w, w. Datemticamente, las coordenadas x y y se *allan di)idiendo los dos primeros nEmeros entre el tercero, respecti)amente. An dos dimensiones, su )alor se puede encontrar ms fcilmente si w / -, por simplificacin. %sicamente, se trata de ampliar el plano euclFdeo 4en el caso bidimensional5 al plano proyecti)o. Una consecuencia de esta escritura es que un punto tiene infinitas formas de escribirlo, todo depender de los cocientes x C w y y C w 4con w distinto de +5. &oordenadas *omogneas 4 2,G,-5/4G,H,25/4-2,2G,I5 Jb(eti)o# &on)ertir la traslacin de una suma a una multiplicacin, adems de permitir concatenar una sucesin de transformaciones en una matri9. Kuiere decir que nosotros podemos encadenar matrices para formar una sola que realice mEltiples transformaciones.

A(emplo de un escalamiento sobre un punto utili9ando coordenadas *omogneas#


Trasladar al origen Ascalar Trasladar a su posicin

+ -

+ + .

? ! +

+ .

+ -

+ + / Datri9 transformacin de

?y +

=T! =Ty -

T !

Ty -

?! + + !,y,-" . + ?y + / =T!;?!>?! =Ty;?y>?y Trasladar al origen 6otar

!?!=T!?!>T!,y?y=Ty?y>Ty,-"

Trasladar a su posicin

+ -

+ + .

=T! =Ty -

co s se n +

= sen cos +

+ + .

+ T !

+ -

+ + / Datri9 de transformacin

Ty -

cos =sen + !,y,-" . sen &os + / !cos>ysen=T!cos=Tysen>T!, =!sen>ycos>T!sen=Tycos>Ty,-" =T!cos=Tysen>T! T!sen=Tycos>Ty -

Trasladar al origen

Deformar

Trasladar a su posicin

+ + + - + =T! =Ty -

- % + : - + + + -

+ T !

+ + - + Ty -

/ Datri9 de transformacin

% + !,y,-" . : + / =:Ty =%T! -

!>:y=:Ty,%!>y=%T!,-"

6eali9ar todas las matrices de transformaciones y programarlas con la figura que debe de contener por lo menos -++ puntos.

Dapeo de $entana a puerto de $isin

?!/ 4B)isionma!=B)min5C4B3indo3ma!=B3min5 ?y/ 48)ma!=8)min5C483ma!=83min5 ?!/ 4IG+=,++5C4IG+=+5/-G+CIG+/+.2-HL, ?y/ 4GH+=.,+5C4GH+=+5/-.+CGH+/+.2L+H.. factores de escala 'ara representarlos en el puerto de )isin se les suma los )alores de inicio del puerto de )isin. ,++>$alores en B y .,+>$alores en 8.
Como cargar imgenes en Java 'rimero *ay que obtener la ruta donde se encuentra el proyecto. ?ystem.get'roperty4Muser.dirN52 obtener el directorio actual mediante una cadena get&lass4 5.get6esource4MDireCfile.!!!N52 obtener el directorio actual mediante un U67

Definir la imagen mediante un ob(eto Omage imagen2 define un ob(eto de tipo imagen OmageOcon icono2 define una imagen para un icono

Onstanciar el OmageOcon a tra)s de un U67 U67 ruta/get&lass45.get6esource4PCUnidadOO)2COmagenesCDibu(ar.'QGP52 imgdib/new OmageOcon4ruta52

OmageOcon puede recibir en el constructor una imagen o un U67

'ara obtener una imagen en un ob(eto Omage se puede *acer# : tra)s del mtodo getimage de la clase ToolRit de a3t generando un ob(eto ToolRit tR/ToolRit.getDefaultToolkit452 Omagen/tR.getOmage4ruta52 : tra)s un mtodo de)ol)iendo un ob(eto de tipo imagen
public %ufferedOmage loadOmage4?tring nombre5 0 U67 url/null2 try 0 url / get&lass45.get6esource4nombre52

return OmageOJ.read4url52 1 catch 4A!ception e5 0

?ystem.out.println4PQo se pudo cargar la imagen P > nombre >P de P>url52 ?ystem.out.println4PAl error fue # P>e.get&lass45.getQame45>P P>e.getDessage4552 CC?ystem.e!it4+52 return null2 1 1

&omo integrar un DenE a una aplicacin -5 25 .5 G5 ,5 I5 L5 H5 T5 Generar un %arra de DenE. SDenu%ar %arraD2 &onstruir la %arraD/new SDenu%ar452 :signar la barra de DenE a la )entana )entana.setSDenu%ar4%arraD52 Definir los menEs SDenu uno,dos2 &onstruir los menEs uno/new SDenu4PDibu(arP52 Definir las opciones de los DenEs SDenuOtem el-,el2,el.,elG,el,2 &onstruir las opciones de los DenEs el-/new SDenuOtem4P6ectanguloP52 :gregar las opciones a los DenEs uno.add4el-52 &argar a la %arra de DenE los DenEs %arraD.add4uno52

Generar elementos de tipo :ction. :ction Al-/new :bstract:ction4P6ectanguloP, new OmageOcon4Omagen550 public void action'erformed4:ctionA)ent arg+5 0 ob(.Dibu(a6ect452 112 Al-.put$alue4:ction.SHORT_DESCRIPTION,PDibu(a un 6ectanguloP52 Al-.put$alue4:ction.MNEMONIC_KEY,new Onteger4U6U552 Al-.put$alue4:ction. CCE!ER TOR_KEY,Vey?troRe.getKeyStroke4VeyA)ent."K_R, OnputA)ent.CTR!_M SK552

Ontegrar las acciones al DenE. uno.add4Al-52 &omo agregar una %arra de Werramientas a una aplicacin. -5 &rear una barra de *erramientas STool%ar bar*2 25 ?e construye la barra de *erramientas %arra*/new STool%ar4PJperacionesP,?3ing&onstants."ERTIC !52 Wori9ontal es el orden de acomodos de los botones. .5 :gregar los botones o acciones a la barra de *erramientas G5 :gregar la barra de *erramientas cont.add4%arra*,%order7ayout.E ST52 A)entos del 6atn Douse7istener,DouseDotion7istener,DouseX*eel7istener Dtodos y acciones de los e)entos del raton.

$ertical y

%arra*.add4uno52 al contenedor

Mouse istener )oid mouse&licRed4DouseA)ent me5 cuando se presiona y se libera el ratn )oid mouseAntered4DouseA)ent me5 cuando el ratn entra en un componente )oid mouseA!ited4DouseA)ent me5 cuando el ratn sale de un componente )oid mouse'ressed4DouseA)ent me5 cuando se presiona el ratn )oid mouse6eleased4DouseA)ent me5 cuando se libera el ratn

MouseMotion istener )oid mouseDragged4DouseA)ent me5 ?e llama mientras se arrastra el ratn )oid mouseDo)ed4DouseA)ent me5 ?e llama mientras se mue)a el ratn

Mouse!heel istener )oid mouseX*eelDo)ed4DouseX*eelA)ent me5 &uando se mue)e la rueda del raton.

Mtodos mas utili"ados de Mouse#vent int get%utton4 5 int get&licR&ount4 5 'oint get'oint4 5 int getB4 5 int get84 5 Jb(ect get?ource4 5 indica que boton del raton *a cambiado su estado, se puede *acer la consulta comparando con los )alores %UTTJQ-,%UTTJQ2 o %UTTJQ. De)uel)e el nEmero de clicRs asociados con el e)ento. De)uel)e la coordenada !,y donde se presiono. De)uel)e la coordenada en ! donde se presiono De)uel)e la coordenada en y donde se presiono De)uel)e el nombre del ob(eto que produ(o el e)ento.

Dtodo ms utili9ado de DouseX*eelA)ent int getX*eel6otation4 5 De)uel)e el nEmero de rotaciones reali9adas por la rueda. De)uel)e un )alor negati)o cuando el mo)imiento es *acia arriba y positi)o cuando es *acia aba(o.

&uadros de Dialogo
class Drotation extends JDialog{ JRadioButton rd,ri; JTextField ang; JDialog dialog; JButton b1,b2; ButtonGroup group; int ret=0; public Drotation JFra!e padre,boolean !odal"{ super padre,!odal"; ##!odal $ue debe de seleccionar a%uer&as algo J'anel panel=ne( J'anel "; )con bug = ne( )!age)con get*lass "+getResource ,#-nidad))#rec#Fd+png, " ";

)!age)con

)con bug2 = ne( get*lass "+getResource ,#-nidad))#rec#Fi+png, " "; group = ne( ButtonGroup "; J.abel l1=ne( J.abel ,,,bug, /(ing*onstants+LEFT"; J.abel l2=ne( J.abel ,,,bug2, /(ing*onstants+LEFT"; J.abel l0=ne( J.abel , 1ngulo a rotar2 ,"; rd=ne( JRadioButton ,,,%alse"; ri=ne( JRadioButton ,,,%alse"; group+add rd"; group+add ri"; ang=ne( JTextField "; ang+set*olu!ns 3"; b1=ne( JButton ,1ceptar,"; b2=ne( JButton ,*ancelar,"; panel+add l2"; panel+add ri"; panel+add l1"; panel+add rd"; panel+add l0"; panel+add ang"; panel+add b1, Border.a4out+SOUTH"; panel+add b2,Border.a4out+SOUTH"; add panel"; t5is+set/i&e 600,70"; b1+add1ction.istener ne( 1ction.istener "{ public 8oid action'er%or!ed 1ction98ent e" { i% rd+is/elected "" ret=1; else i% ri+is/elected "" ret=2; else ret=:1; Drotation+t5is+set;isible %alse"; Drotation+t5is+dispose ";

<

<"; b2+add1ction.istener ne( 1ction.istener "{ public 8oid action'er%or!ed 1ction98ent e" { ret=:1; Drotation+t5is+set;isible %alse"; Drotation+t5is+dispose "; < <"; < public int !ostrar "{ t5is+set;isible true";

<

return :1; < public 8oid closeDialog =indo(98ent (e"{ t5is+set;isible %alse"; t5is+dispose "; <

A)ento mouse'ressed
int cox=arg0+get> "; int co4=arg0+get? "; .ien&o+!in!ax "; /4ste!+out+println .ien&o+!enorx@,,,@.ien&o+!a4orx@,,,@.ien&o+!eno r4@,,,@.ien&o+!a4or4"; i% coxA.ien&o+!enorx BB coxC.ien&o+!a4orx" BB co4A.ien&o+!enor4 BB co4C.ien&o+!a4or4"" !o8erse=true; else !o8erse=%alse; /4ste!+out+println !o8erse";

Evento mouseDragged
int dx=e+get> "; int d4=e+get? "; i% !o8erse" .ien&o+Trasladar dx, d4";

'resentaciones de los temas de Sa)a 2D.

Transformaciones geomtricas en .D
Una transformacin es un cambio que se le aplica a una figura o punto para generar otra muy parecida pero con alguna diferencia en cuanto a tamao, posicin, ngulo o despliegue. Tipos de transformaciones que se pueden aplicar son escalamiento, rotacin, refleccin, traslacin. :ntes de almacenar las coordenadas es necesario obtenerlas y poder calcularlas en base a una representacin de una figura en .D, con sus correspondientes dimensiones llamado Osomtrico.

'ara poder encontrar las coordenadas primero se debe de definir el origen de la figura y para no tener que trasladar la figura al origen, para aplicarle alguna transformacin y esta no cambie de posicin, por con)eniencia se define dentro de la figura.

?i el Jrigen est en el centro de cubo las coordenadas ?erian# :5 %5 &5 D5 !/=2+ y/=-, 9/-, !/=2+ y/-, 9/-, !/2+ y/=-, 9/-, !/2+ y/-, 9/-, 'untos del &ubo A5 !/=2+ y/=-, 9/=-, Y5 !/=2+ y/-, 9/=-, G5 !/2+ y/=-, 9/=-, W5 !/2+ y/-, 9/=-,

A(ercicio#

-5 ?acar las coordenadas en tres dimensiones de la figura anterior para cada uno de sus )rtices, considere el origen en el punto es decir el centro de la parte de cubo. 4Qo ol)ide los )rtices ocultos5. 25 ?acar la )istas ortogrficas para la misma figura 4?uperior, Yrontal, 7ateral derec*a5. .5 Transformar las coordenadas .d en coordenadas 2d y graficarlas. 4?B,?85 considere una distancia de 2+. Un punto en .D se representa como ! , y, 9" y este puede ser almacenado de diferentes formas en alguna estructura, como puede ser en# $ector unidimensional

$ector %idimensional &lase de 'untos

Despus de tener los puntos almacenados es necesario para )isuali9ar la figura *acer una proyeccin en un plano bidimensional, es decir es necesario con)ertir de coordenadas en .D a coordenadas en 2D. 4$er presentacin Trans de .D a 2D proyecciones5. 8a que se *i9o la proyeccin de la figura en el plano bidimensional, a*ora si ya se le pueden aplicar las transformaciones# Transformaciones Tridimensionales 4.D5 Rota#i$% &o're el e(e de la x) - + + &os Z + =sen Z + ?en Z &os Z

Rota#i$% &o're el e(e de la y) &os Z + =sen Z + ?en Z - + + &os Z

Rota#i$% &o're el e(e de la *) &os Z =sen Z + ?en Z + &os Z + + -

: )eces es necesario generar una sola matri9 de rotacin que nos permita rotar en mEltiples sentidos de manera simultnea 46otacin en !/2+ o en y/.+o 9/,+o5 por lo que *ay que aplicar coordenadas *omogneas concatenar mEltiples transformaciones. !,y,9,-" . + + + 6otacin en ! + &os ! =sen ! + + + &os y ?en ! + . + &os ! + =sen y + + 6otacin en y + + + ?en y + &os 9 + + . =sen 9 &os y + + + + 6otacin en 9 ?en 9 &os 9 + + + + + + + / + -

7a matri9 resultante me permite generar rotaciones en mEltiples sentidos en un solo proceso.

6esultado/ !;4cry;cr95>y;44=sr!;sry5;cr9>4cr!;sr955>9;44cr!;sry5;cr9>4sr!;sr955 !;4cry;=sr95>y;44=sr!;sry5;=sr9>4cr!;cr955>9;44cr!;sry5;=sr9>4sr!;cr955 !;=sry>y;4=sr!;cry5>9;4cr!;cry5

E&#alar An tres dimensiones *ay dos formas bsicas para escalar una figura# $ariando la distancia del obser)ador en la proyeccin 4&entro de proyeccin5 :plicar la matri9 de escalamiento.

?! + !,y,9" . + ?y + / !;?!,y;?y,9;?9" + + ?9 Donde ?! es la cantidad a escalar en B, ?y la cantidad en 8 y ?9 la cantidad a escalar en [. Tra&ladar 'ara trasladar una figura es necesario aplicar coordenadas *omogneas# + !,y,9,-" . + + + T! Ty T! es la cantidad a trasladar en [. $istas + + + + / !>T!,y>Ty,9>T9,-" + T9 trasladar en B, Ty la cantidad a Trasladar en 8 y T9 la cantidad a

'ara poder obtener las )istas ortogrficas es necesario quitar algunos )alores, por e(emplo si se quiere sacar la )ista frontal de una figura se debe de eliminar la profundidad, para generar la )ista superior ser necesario eliminar y y para la )ista lateral eliminar !. Omplementar S?lider para las operaciones de rotacin y escalamiento.