Las Coordenadas de Usuario y Los Pixels

download Las Coordenadas de Usuario y Los Pixels

of 4

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