Haskell graficos

Solo disponible en BuenasTareas
  • Páginas : 8 (1826 palabras )
  • Descarga(s) : 0
  • Publicado : 28 de noviembre de 2011
Leer documento completo
Vista previa del texto
Graficos Un caso de estudio para Tipos de Datos Abstractos
Alfredo Paz Valderrama 19 de agosto de 2011

1.

Graphics.Gloss

Gloss es una biblioteca que permite hacer gr´ficos en Haskell de una manera muy sencilla. Esta biblioteca est´ basaa a da en otras dos bibliotecas que son algo m´s complejas: OpenGL y GLUT. a Gloss es descendiente de ANUPlot, una biblioteca para hacer gr´ficosdesarrollada por la Universidad Nacional a de Australia. Gloss permite que los programadores novatos podamos construir programas con gr´ficos sin mucha a complejidad. El uso Gloss servier´ como ejemplo pr´ctico y tangible de la utilidad de los tipos de datos abstractos en Haskell. a a

2.

Instalaci´n o
La instalaci´n puede ser hecha con cabal y en linux o windows escribiendo el siguiente comando: ocabal install gloss Sin embargo, esto requiere que se tenga cabal debidamente instalado. Para evitar inconvenientes, sugiero que no se instale la biblioteca y simplemente se desargue de la siguiente direcci´n: o http://hackage.haskell.org/packages/archive/gloss/1.3.4.1/gloss-1.3.4.1.tar.gz Luego s´lo habr´ que descomprimir la biblioteca y escribir nuestros programas, dentro del directorio donde seo ıa descomprimi´ la biblioteca. Por ejemplo, si descomprimimos el archivo anterior, s´lo habr´ que ingresar al directorio o o a gloss-1.3.4.1 y escribir all´ nuestros programas. Notar que el directorio Graphics debe estar en el mismo nivel que ı nuestros archivos. Para comprobar que todo funciona bien escriba el siguiente programa (dentro del directorio donde descomprimi´ la o biblioteca).Listing 1: first.hs import G ra ph ic s . G l o s s main : : IO ( ) main = displayInWindow ”Mi Ventana ” ( 2 0 0 , 2 0 0 ) ( 1 0 , 1 0 ) w h i t e ( C i r c l e 8 0 ) Si llamamos a la funci´n main se mostrar´ la siguiente figura: o a

1

3.

displayInWindow

displayInWindow : : String−>(Int , Int)−>(Int , Int)−>Color−>P i c t u r e −>IO ( ) Esta funci´n muestra figuras y recibe los siguientespar´metros: o a String El nombre de la ventana. (Int, Int) El tama˜o de la ventana en p´ n ıxeles. (Int, Int) Posici´n inicial de la ventana en p´ o ıxeles. Color El color del fondo de la pantalla. Picture La figura a dibujar. La pantalla del computadoras forma im´genes a partir de peque˜os puntos, conocidos como p´ a n ıxeles, de este modo la pantalla es una collecci´n de peque˜os puntos como si setratase de una matriz. o n Las figuras se dibujar´n dentro de los l´ a ımites de la ventana (tama˜o) usando un sistema de coordenas cartesianas n con el origen (0, 0) en el centro de la ventana.

3.1.

Color

data C o l o r deriving (Eq, Show) black , w h i t e : : C o l o r red , blue , g r e e n : : C o l o r y e l l o w , magenta , cyan : : C o l o r r o s e , orange , c h a r t r e u s e ,aquamarine , azure , v i o l e t : : C o l o r El tipo Color permite poner color a nuestros gr´ficos. a

3.2.

Picture

type Po i nt = ( Float , Float ) type Path [ Po in t ] data P i c t u r e = Blank | Polygon Path | Li ne Path | C i r c l e Float | T h i c k C i r c l e Float Float | Text String | Bitmap Int Int B y t e S t r i n g | Color Color Picture | T r a n s l a t e Float Float P ic t u r e | Rotate Float P i c t u r e | S c a l e Float Float P i c t u r e | Pictures [ Picture ] d e r v i n g (Eq, Show, Monoid ) Un Picture es la forma que tiene la biblioteca de representar una figura 2D. Una figura puede ser: Blank Crea una figura vac´ la figura nula. ıa, Polygon Path Crea una figura como un poligono de color s´lido, que sigue la ruta (path) se˜alada por los puntos de o n lalista. Line Path Crea una figura como una linea que uno los puntos se˜alados por la ruta (path). n Circle Float Crea una figura como un c´ ırculo del radio indicado. ThickCircle Float Float Crea una figura como un c´ ırculo del radio indicando dibujado con una l´ ınea de un grosor dado. Text String Crea una figura como un texto a dibujar. Bitmap Int Int ByteString Crea una figura a partir de una...
tracking img