# Applications and libraries/Graphics

### From HaskellWiki

< Applications and libraries(Difference between revisions)

EndreyMark (Talk | contribs) m (Giving an indirect link to Libraries and tools/GUI libraries, avoiding the redirection) |
DonStewart (Talk | contribs) (Found 10 (!) Haskell ray tracers out there, none documented here previously) |
||

Line 14: | Line 14: | ||

;[http://www.conal.net/Fran/ Functional Reactive Animation] |
;[http://www.conal.net/Fran/ Functional Reactive Animation] |
||

:FRAN is a Haskell library (or "embedded language") for interactive animations with 2D and 3D graphics and sound. It runs on Hugs under Windows 95 and Windows NT, using Win32 graphics (GDI). |
:FRAN is a Haskell library (or "embedded language") for interactive animations with 2D and 3D graphics and sound. It runs on Hugs under Windows 95 and Windows NT, using Win32 graphics (GDI). |
||

+ | |||

+ | ;[http://haskell.org/HOpenGL/ HOpenGL] |
||

+ | :HOpenGL is a Haskell binding for the OpenGL graphics API (GL 1.2.1 / GLU 1.3) and the portable OpenGL utility toolkit GLUT. |
||

+ | |||

+ | ;[http://cryp.to/funcmp/ Functional Metapost] |
||

+ | :Functional Metapost is a Haskell binding for MetaPost, the powerful but cumbersome graphics language. |
||

+ | |||

+ | ;[http://haskell.org/Blobs Blobs diagram editor] |
||

+ | :Blobs is a diagram editor for directed graphs. It is written in Haskell, using the platform-independent GUI toolkit wxHaskell. Blobs is a front-end for drawing and editing graph diagrams. |
||

+ | |||

+ | ;[http://www.haskell.org/hawiki/HaskLS L-systems] |
||

+ | :A Haskell implementation for Lindenmayer Systems (L-systems). The goal is to implement L-systems in Haskell, and provide a way to visualize them using HOpenGL. |
||

+ | |||

+ | === Pan === |
||

;[http://www.conal.net/pan Pan] |
;[http://www.conal.net/pan Pan] |
||

Line 30: | Line 44: | ||

:A cross-platform re-implementation of Pan in Haskell using the wxWidgets GUI library and OpenGL graphics library. |
:A cross-platform re-implementation of Pan in Haskell using the wxWidgets GUI library and OpenGL graphics library. |
||

− | ;[http://haskell.org/HOpenGL/ HOpenGL] |
+ | === Graphics File Formats === |

− | :HOpenGL is a Haskell binding for the OpenGL graphics API (GL 1.2.1 / GLU 1.3) and the portable OpenGL utility toolkit GLUT. |
||

− | ;[http://cryp.to/funcmp/ Functional Metapost] |
+ | ;[http://www.cs.uu.nl/people/jeroen/ Functional Specification of the JPEG algorithm, and an Implementation for Free] |

− | :Functional Metapost is a Haskell binding for MetaPost, the powerful but cumbersome graphics language. |
||

− | ;[http://haskell.org/Blobs Blobs diagram editor] |
+ | === Ray Tracing === |

− | :Blobs is a diagram editor for directed graphs. It is written in Haskell, using the platform-independent GUI toolkit wxHaskell. Blobs is a front-end for drawing and editing graph diagrams. |
||

− | === Graphics File Formats === |
+ | ;[http://www.cse.unsw.edu.au/~cgray/banky/ Banky : Monte Carlo ray tracing] |

+ | :A monte carlo ray tracer in Haskell. Monte-Carlo ray-Tracing uses random and quasi-random techniques for improved image synthesis. Monte-carlo ray-tracers simulate global illumination and eliminates the ambient term. It does this using a set of random techniques to simulate an integration model of illumination, which is far more realistic. |
||

− | ;[http://www.cs.uu.nl/people/jeroen/ Functional Specification of the JPEG algorithm, and an Implementation for Free] |
+ | ;[http://www.haskell.org/tmrwiki/HRay HRay: A Haskell ray tracer] |

+ | :HRay, a ray tracer in Haskell. The goal is to show how elegant, short and maintainable a ray tracing implementation would be in a functional language, as opposed to an imperative or procedural language. It uses a formal model for the application, using the functional and declarative formalism Funmath |
||

+ | |||

+ | ;[http://staff.science.uva.nl/~kort/hart/index.html HaRT: Haskell ray tracer] |
||

+ | :Yet another Haskell ray tracer |
||

+ | |||

+ | ;[http://benny.kramekweb.com/hrayt/ hrayt, A Haskell Raytracer] |
||

+ | :A Haskell ray tracer in only a few hours. |
||

+ | |||

+ | ;[http://www.nobugs.org/developer/htrace/index.html Htrace, A Haskell Raytracer] |
||

+ | :A 1 day raytracer. |
||

+ | |||

+ | ;[http://www.xs4all.nl/~jkort/ Haskell Ray Tracer] |
||

+ | :A Haskell ray tracer written for Jan Kort's master thesis |
||

+ | |||

+ | ;[http://www.cs.mu.oz.au/~bjpop/code.html bjpop-ray] |
||

+ | :A simple raytracer using wxHaskell for the GUI. |
||

+ | |||

+ | ;[http://groups.csail.mit.edu/graphics/classes/6.837/F99/projects/reports/team06.pdf Parallel Ray Tracing in pH] |
||

+ | :A parallel ray tracer, using the parallel Haskell |
||

+ | |||

+ | ;Galois Ray Tracer from icfp00 |
||

+ | :A Galois Connections team submitted a ray tracer entry in Haskell in the 2000 icfp contest |
||

+ | |||

+ | ;[http://www.macs.hw.ac.uk/~gnik/apset/ray_tracer.lhs A Ray Tracer for Spheres] |
||

+ | :David King's Haskell port of an Id ray tracer from the [http://www.csg.lcs.mit.edu/impala/ Impala suite] |
||

=== Dead === |
=== Dead === |

## Revision as of 06:06, 30 March 2006

*The copyright status of this work is not known. Please help resolve this on the talk page.*

*This page contains a list of libraries and tools in a certain category. For a comprehensive list of such pages, see Libraries and tools.*

## Contents |

## 1 Haskell Graphics Libraries

This page is about libraries for dealing with graphics, drawing and graphics file formats. For information about libraries for graphical user interfaces, see GUI libraries.

- The Hugs Graphics Library
- The Hugs Graphics Library supports 2-dimensional graphics operations, timers, mouse and keyboard actions and multiple windows. It runs on Hugs under both Win32 and X11. An earlier version was used for early prototypes of Fran.

- Haven
- Scalable Vector Graphics for Haskell. Portable, device-independent, resolution-independent library, including support for affine transformations, Bezier curves, fine-grained control of pen attributes, bounds and intersection tests, constructive area geometry, anti-aliased rendering, outline fonts, etc.

- Functional Reactive Animation
- FRAN is a Haskell library (or "embedded language") for interactive animations with 2D and 3D graphics and sound. It runs on Hugs under Windows 95 and Windows NT, using Win32 graphics (GDI).

- HOpenGL
- HOpenGL is a Haskell binding for the OpenGL graphics API (GL 1.2.1 / GLU 1.3) and the portable OpenGL utility toolkit GLUT.

- Functional Metapost
- Functional Metapost is a Haskell binding for MetaPost, the powerful but cumbersome graphics language.

- Blobs diagram editor
- Blobs is a diagram editor for directed graphs. It is written in Haskell, using the platform-independent GUI toolkit wxHaskell. Blobs is a front-end for drawing and editing graph diagrams.

- L-systems
- A Haskell implementation for Lindenmayer Systems (L-systems). The goal is to implement L-systems in Haskell, and provide a way to visualize them using HOpenGL.

### 1.1 Pan

- Pan
- An embedded language and highly optimizing compiler for image synthesis and transformation, based on the simple idea of images as functions over infinite, continuous 2D space. The resulting binaries can be used as PhotoShop plugins, embedded in web pages or PowerPoint, or used in an interactive standalone viewer. The compiler contains no domain-specific knowledge, so it's very extensible. See the gallery for visual examples. Currently Windows-only, but ports are encouraged.

- Pan#
- Pan# is a slightly re-engineered version of Pan. It uses the same compiler but used the Microsoft .NET framework instead of visual studio, making it easier to install and use. It also has a number of new features added. While Pan is embedded in Haskell, Pan# has its own Haskell-like language built in so there is no need to use other Haskell compilers. Currently Windows-only.

- Pancito
- Pancito is a Haskell module for manipulating functional images and then saving them to disk. It was inspired by Pan.

- PanTHeon
- PanTHeon is a cross platform re-implementation of of Pan. It is still in development and will likely undergo many changes in the future.

- Panic
- A cross-platform re-implementation of Pan in Haskell using the wxWidgets GUI library and OpenGL graphics library.

### 1.2 Graphics File Formats

### 1.3 Ray Tracing

- Banky : Monte Carlo ray tracing
- A monte carlo ray tracer in Haskell. Monte-Carlo ray-Tracing uses random and quasi-random techniques for improved image synthesis. Monte-carlo ray-tracers simulate global illumination and eliminates the ambient term. It does this using a set of random techniques to simulate an integration model of illumination, which is far more realistic.

- HRay: A Haskell ray tracer
- HRay, a ray tracer in Haskell. The goal is to show how elegant, short and maintainable a ray tracing implementation would be in a functional language, as opposed to an imperative or procedural language. It uses a formal model for the application, using the functional and declarative formalism Funmath

- HaRT: Haskell ray tracer
- Yet another Haskell ray tracer

- hrayt, A Haskell Raytracer
- A Haskell ray tracer in only a few hours.

- Htrace, A Haskell Raytracer
- A 1 day raytracer.

- Haskell Ray Tracer
- A Haskell ray tracer written for Jan Kort's master thesis

- bjpop-ray
- A simple raytracer using wxHaskell for the GUI.

- Parallel Ray Tracing in pH
- A parallel ray tracer, using the parallel Haskell

- Galois Ray Tracer from icfp00
- A Galois Connections team submitted a ray tracer entry in Haskell in the 2000 icfp contest

- A Ray Tracer for Spheres
- David King's Haskell port of an Id ray tracer from the Impala suite

### 1.4 Dead

daVinci binding (*via the Internet Archive since 2006-03-22*)

- A binding to daVinci, an X-Windows based visualization tool for directed graphs.

- Gif Writer
*(via Internet Archive since 10/06/2003)* - A simple tool - capable of producing GIF based plots from within Haskell programs. Such plots can be then incorporated into HTML reports, to literate Haskell programs, or to combination of both.

- JPEG encoding
*(This link is dead. Fix it or remove it.)* - Written in Gofer.