Las Coordenadas de Usuario y Los Pixels
-
Upload
edwinsanchez -
Category
Documents
-
view
222 -
download
0
Transcript of Las Coordenadas de Usuario y Los Pixels
-
7/21/2019 Las Coordenadas de Usuario y Los Pixels
1/4
LAS COORDENADAS DE USUARIO Y LOS PIXELS
Un problema normal en los grficos es que nosotros queremos dibujar un grfico con unas
determinadas coordenadas (por ejemplo, una funcin matemtica sin(x) va de 0.0 a 2!" en el
eje x # de $% a % en el eje #), mientras que los ordenadores se empe&an en ofrecernos
coordenadas de pixels. ' las coordenadas de nuestro grfico las llamar coordenadas de
usuario.
!ara facilitar este trabaja, e creado una interface *scala+rafica con todos (es un decir) los
mtodos de pintado de +rapics. Una clase ija *scala+raficaartesiana implementa estos
metodos, pero aciendo la transformacin de coordenadas. -e esta forma, si en ve de
dibujar directamente con +rapics, dibujamos con *scala+raficaartesiana, no debemos
preocuparnos de transformar coordenadas de usuario en pixels.
*scala+raficaartesiana se inicialia pasndole cuales queremos que sean las coordenadas
l/mite de nuestro grfico. -e esta forma, puede acer las cuentas para transformar las
coordenadas nuestras en pixels.
EscalaGrafica escala = new EscalaGraficaCartesiana();
escala.tomaExtremos (0.0, -1.0, 2*Math.PI, 1.0);
i en *scala+rafica ni en *scala+raficaartesiana estn implementados todos los mtodos
de +rapics. *s algo que tengo que a&adir...
LOS OBJETOS GRAFICOS
1e eco tambin una interface bjeto+rafico. *sta interface tiene un 3nico mtodo
dibujate(), que recibe una *scala+rafica. ualquier cosa que queramos dibujar deber/a ser
una clase que implemente esta interface. *n el mtodo dibujate() debe dibujar lo que se quiera
dibujar, pero siempre en coordenadas de usuario. o debemos preocuparnos de transformar a
pixels.
omo ejemplos, e creado varios bjeto+rafico que #a estn disponibles para utiliar, aunque
no son demasiado sofistificados4
5ejilla6ija, dibuja una rejilla sobre nuestra rea de dibujo, poniendo n3meros en las
coordenadas.
6uncion'bstracta, dibuja cualquier funcin matemtica del estilo #7f(x). 1a# que
eredar de ella # redefinir el mtodo funcion(), que devuelve la # en funcin de la x.
-
7/21/2019 Las Coordenadas de Usuario y Los Pixels
2/4
8eno, es una implementacin de la clase anterior para dibujar la funcin seno.
9arta, dibuja un grfico de tarta pasndolo un arra# de n3meros, de forma que cada
n3mero es una porcin de la tarta.
1istograma, dibuja un grfico de columnas pasndole un arra# de n3meros, de forma
que cada n3mero tiene su columna.
LOS OBSERVADORES DE RATON
1e eco una interface bservador5aton. *sta interface tiene el mtodo evento5aton(), al
que se le pasa el evento de ratn # las coordenadas x,# de usuario en las que se a producido
el evento. *l mtodo debe devolver true si el tratamiento del evento ace que se necesite un
repintado del grfico # false en caso contrario.
omo ejemplos, e creado varios bservador5aton
Un :isor5aton, que es un ;9ext6ield en el que se puede ver la coordenada x o # por
donde se mueve el ratn, en coordenadas de usuario.
Una clase ursor, que sirve de padre para ursor1ilo # ursorieno, que ereda de ;>a#ered!ane. 9iene dos
capas de dibujo, para poder acer un dibujo de fondo # otro por encima que normalmente es
alg3n tipo de cursor que se mueve con el ratn. *ste >ieno se inicialia pasndole la
*scala+rafica que queramos (con sus l/mites de las coordendas de usuario). 'dmite que le
a&adamos todos los bjeto+rafico que queramos. *l >ieno, cuando necesite repintado,
llamar a todos los dibujate() de los bjeto+rafico que tiene en su interior # presentar el
dibujo en pantalla.
Lienzo lienzo = new Lienzo();
lienzo.tomaEscala (escala);
-
7/21/2019 Las Coordenadas de Usuario y Los Pixels
3/4
Histograma histograma = new Histograma (...);
lienzo.tomaObjetoGrafico(histograma);
BOTONES DE ZOOM
1e eco un boton de oom que permite acercar o alejar el grfico. 8e les inicialia
pasndoles la misma *scala+rafica que se pasa al >ieno # el porcenaje de acercamiento o
alejamiento que se desea cada ve que se pulse.
ZoomPorcentaje acercar = new ZoomPorcentaje (escala, 10);
ZoomPorcentaje alejar = new ZoomPorcentaje (escala, -10);
*s fcil implementar (# lo ar) unos botones de oom inicial # oom previo.
INTENCIONES FUTURAS
=ejorar la *scala+rafica!olar # acer algo para dibujo en ?-
'lgunos objetos grficos ms, seg3n los va#a necesitando para probar las nuevas
implementaciones.
!osibilidad de dibujo en los mrgenes (escalas, t/tulos, etc).
=ostrar unidades para los ejes.
=s abajo tienes tanto el jar como los fuentes. 8i aces alguna modificacin interesante,
a&ades alguna funcionalidad o corriges alg3n error, por favor,env/amela# la a&adir en esta
pgina.
mailto:[email protected]:[email protected]:[email protected] -
7/21/2019 Las Coordenadas de Usuario y Los Pixels
4/4