2012-02-27 15 views
10

Me gustaría hacer algunos experimentos en gráficos por computadora en Haskell. Esto incluirá hacer algunos cálculos de geometría y finalmente escribir un rayo trazador. ¿Qué biblioteca debo elegir para manejar fácilmente vectores, matrices y operaciones relevantes sobre ellos?¿Qué biblioteca de Haskell para la geometría de gráficos por computadora?

Hay pocos en Hackage, incluidos los agradables como vect y AC-Vector, pero es fácil perder un buen candidato entre tantas bibliotecas diferentes.

+0

Esta es una pregunta marginalmente mala ... Consulte las preguntas frecuentes sobre [¿Qué tipo de preguntas no debo hacer aquí?] (Http://stackoverflow.com/faq#dontask). Probablemente deberías eliminar la última oración de tu pregunta para evitar que esto se convierta en una discusión. – cha0site

+0

@ cha0site Hecho. Sin embargo, para mí es bastante confuso por qué es este un caso. – Tener

+2

Sus requisitos son algo vagos, pero sigue siendo una pregunta interesante de la OMI. – stakx

Respuesta

5

Para vectores y matrices que se usan para transformaciones, vect probablemente sea su mejor opción. Está optimizado para transformaciones rápidas y de menor precisión (como en Double precisión en oposición a Ratio precisión) como describió, y su función como pila matriz en lambdacube (como un ejemplo de una aplicación donde el rendimiento es la clave) muestra que es lo suficientemente rápido para la mayoría de las aplicaciones.

Para las matrices de datos, que se utilizan para imágenes, por ejemplo, es probable que desee utilizar repa, especialmente al realizar cálculos en paralelo de datos como el trazado de rayos.

2

Hay una biblioteca interesante llamada vector-space por Conal Eliott que le permite calcular perezosamente la serie Taylor de muchas funciones analíticas. Vea también here. Sin embargo, no estoy seguro sobre el rendimiento.

+0

Vector-space es muy útil para las clases de tipos que proporciona, que amplían la jerarquía Num (aún es muy útil sin el mapa lineal y las cosas de la torre derivada). Debe proporcionar sus propios tipos de datos de punto, vector, etc. –

Cuestiones relacionadas