2012-08-12 9 views
10

私はhaskellでいくつかのOpenGLプログラミングをしようとしています。しかし、私は図書館の現在の状態に混乱しています。 OpenGLは、いくつかのベクトルタイプのみを定義するパッケージ(ただし、一般的な方法ではありません)を使用します(Tensorパッケージ)。 Matrix実装を提供しているようではありません。HaskellでOpenGLに使用する線形代数はどれですか?

線形代数のためのいくつかの他のパッケージがあります。tensor(小文字Tに注意してください)、VechmatrixTensorより完全であるように見えます。

私が探しているのは、3Dグラフィックスや2Dグラフィックスで使用されている一般的な機能を含んでいて、妥当なパフォーマンスを持ち、OpenGLと互換性があるはずですが、ライブラリを変更する必要があると思います。

+1

[vect](http://hackage.haskell.org/package/vect)には、[OpenGL integration](http://hackage.haskell.org/package/vect-opengl)が組み込まれています。 –

+1

** vect **は使用可能に見えます。しかし、私はそれが素晴らしい(一般的な)haskellライブラリではないと思う。実際には、[Java VecMath](http://java.net/projects/vecmath/)のように見えますが、すべてのアルゴリズムがすべてのベクトル型に対して宣言されています。 – fho

+0

私は自分で書くべきだと思います。他の実装を批判することができるということは、あなたがそれを準備していることを意味します。私は似たような状況にありましたが、長い間待っていましたが、最終的にはそれは価値のある時間でした。 – user1095108

答えて

2

後期回答、申し訳ありません。 HMatrixはこれのための標準的な選択です。 http://dis.um.es/profesores/alberto/research.html

+1

残念ながら、hmatrixは 'Storable'というエイリアスの" C表現を持っている "もののベクトル/行列に対してのみ働きます。他のデータ型や独自のデータ型を使用したい場合は、低レベルのポインタプログラミング(または[generic-storable](http://hackage.haskell.org)を使用)を含む 'Storable'インスタンスを自分で記述する必要があります/ package/generic-storable))。他のパッケージにはこの制限がありません。すべては 'Num'インスタンスを持ちます。しかし、標準の数値だけが必要な場合は、hmatrixの方が良いかもしれません。 – nh2

+1

hmatrixもGPLライセンスに拘束されているようです。問題が生じる可能性があります。 – sdasdadas

1

私は最近同じように思っていましたが、特にTensorはドットプロダクトに便利な機能を提供していないと迷っていましたが、外積、正規化など

あなたが指摘したように、vectFloatDoubleための「ハードコードさ」であり、FunctorMonoidまたはApplicativeなどの便利な型クラスのインスタンスをtherfore持つことができない - ものと私たちは、業務の多くを得るだろう「についてフリー "、例えば追加:(+) <$> v1 <*> v2

#haskellで、私はlinearパッケージを指していました。それはよく管理され、有用なインスタンスと機能の束が付属しています。

関連する問題