2012-02-27 2 views
10

Я хотел бы сделать некоторые эксперименты в компьютерной графике в Haskell. Это будет включать в себя выполнение некоторых геометрических вычислений и, в конечном счете, запись лучевого индикатора. Какую библиотеку я должен выбрать для удобства обработки векторов, матриц и соответствующих операций над ними?Какая библиотека Haskell для компьютерной графики?

В Hackage есть несколько интересных вещей, таких как vect и AC-Vector, но легко пропустить хорошего кандидата среди множества разных библиотек.

+0

Это крайне плохой вопрос ... Ознакомьтесь с FAQ по [Какие вопросы я не могу задать здесь?] (Http://stackoverflow.com/faq#dontask). Вероятно, вы должны удалить последнее предложение из своего вопроса, чтобы это не стало дискуссией. – cha0site

+0

@ cha0site Сделано. Это довольно нечетко для меня, почему это случай. – Tener

+2

Ваши требования несколько расплывчаты, но это все еще интересный вопрос ИМО. – stakx

ответ

5

Для векторов и матриц, которые используются для трансформаций, vect, вероятно, является вашим лучшим выбором. Он оптимизирован для быстрой, более низкой точности (как в точности Double, а не для точности Ratio), как и описано выше, и ее роль в качестве матричного стека в lambdacube (в качестве примера приложения, в котором производительность является ключевой) показывает, что это достаточно быстро для большинства приложений.

Для матриц данных, которые используются для изображений, например, вы, вероятно, захотите использовать repa, особенно при выполнении параллельных вычислений данных, таких как трассировка лучей.

2

У Conal Eliott есть интересная библиотека под названием vector-space, которая позволяет лениво вычислить ряд Тейлора многих аналитических функций. См. Также here. Однако не уверен в производительности.

+0

Векторное пространство очень полезно для классов типов, которые он предоставляет, которые расширяют иерархию Num (она по-прежнему очень полезна без линейной карты и производных элементов башни). Вам необходимо предоставить собственные типы данных Point, Vector и т. Д. –

Смежные вопросы