2012-08-12 4 views
10

저는 haskell에서 OpenGL 프로그래밍을하려고합니다. 그러나 나는 도서관의 현 상태에 혼란 스럽다. OpenGL은 여러 벡터 유형을 정의하는 패키지 (일반적인 방법으로는 사용하지 않음) 인 Tensor 패키지를 사용합니다. Matrix 구현을 제공하지 않는 것 같습니다.하스켈에서 OpenGL에 사용할 선형 대수는 어느 것입니까?

선형 대수에 대한 몇 가지 다른 패키지가 있습니다 tensor이 (소문자 (T)를 참고), Vec, Tensor보다 더 완벽한 것 같다 hmatrix.

내가 찾고있는 것은 적어도 3d 및 2D 그래픽에 사용되는 일반적인 기능을 포함하고 합리적인 성능을 갖추고 있어야하며 OpenGL과 호환되어야하지만 그 라이브러리를 변경해야 할 것입니다.

+1

[OpenGL 통합] (http://hackage.haskell.org/package/vect-opengl)이 내장 된 [vect] (http://hackage.haskell.org/package/vect)도 있습니다. . –

+1

** vect **이 사용 가능합니다. 하지만 좋은 (일반) haskell 라이브러리가 아니라고 생각합니다. 실제로 모든 알고리즘이 모든 벡터 유형에 대해 선언되는 [Java VecMath] (http://java.net/projects/vecmath/)와 같이 많이 보입니다. – fho

+0

당신이 직접 작성해야한다고 생각합니다. 다른 구현을 비판 할 수 있다는 것은 당신이 그것을 할 준비가되었다는 것을 의미합니다. 나는 한때 비슷한 상황이었고 오랫동안 머물 렀지 만 결국에는 지출 할 가치가있는 시간이었습니다. – user1095108

답변

2

늦은 답변, 죄송합니다. HMatrix는 이런 식의 표준 선택입니다. 매우 호환되고 좋은 API를 가지고 있으며 실제로 다른 응용 프로그램 사이에서 컴퓨터 비전에 사용됩니다. http://dis.um.es/profesores/alberto/research.html

+1

불행히도, hmatrix는 'Storable'이라는 별칭의 "벡터 표현"을 가지고있는 벡터/행렬에서만 작동합니다. 거기에 다른 데이터 유형이나 자신의 데이터 유형을 사용하려면 저수준 포인터 프로그래밍 (또는 [generic-storable] (http://hackage.haskell.org) 사용)과 관련된 Storable 인스턴스를 직접 작성해야합니다./package/generic-storable)). 다른 패키지에는 이러한 제한이 없으며 예 : 모든 것은'Num' 인스턴스와 함께 있습니다. 표준 숫자 만 필요하다면 hmatrix가 더 좋을 수도 있습니다 (그리고 아마도 C로 구현 된 작업에서 더 빠른 방법 일 수 있습니다). – nh2

+1

hmatrix도 GPL 라이센스에 구속력이있는 것 같습니다. 문제가 될 수 있습니다. – sdasdadas

1

나는 최근에 같은 것을 궁금해했으며 특히 Tensor가 당신에게 편리한 제품 기능을 제공하지 않는다는 사실에 짜증났습니다. 외적, 정상화는 지적, vectFloatDouble는 "하드"

등등, 그리고 therfore Functor, Monoid 또는 Applicative 같은 유용한 typeclass 인스턴스를 가질 수 없습니다 - 그와 함께 우리가 "작업을 많이 얻을 것 무료 ", 예 또한 : (+) <$> v1 <*> v2.

#haskell에서 나는 linear 패키지를 가리켰다. 그것은 잘 관리되고 많은 유용한 인스턴스와 기능을 제공합니다.

관련 문제