Simple three-dimensional vectors of doubles with basic vector and
matrix operations, supporting
>>> let v1 = (-1, 0.0, 0.2) :: TVec3 >>> let v2 = ( 1, 2.3, 5.0) :: TVec3 >>> let v3 = ( 1, 1, -0.2) :: TVec3 -- Add two vectors: >>> v1 <+> v2 (0.0, 2.3, 5.2) -- Dot product: >>> v1 .* v2 0.0 -- Multiply by a scalar: >>> v1 .^ 5 (-5.0, 0.0, 1.0) -- Cross product: >>> v1 >< v3 (-0.2, 0.0, -1.0) -- Matrix-vector product: >>> diag 2 `mxv` v2 (2.0, 4.6, 10.0)
Please consult the Hackage page for simple-vec3 for full documentation.
The package provides two different implementations for
class, which differ in storage scheme. Benchmarks are included for
both. You most likely want to use
CVec3 which is based on contiguous
storage scheme and offers the best performance.
This package was written to explore and benchmark different array
storage schemes in Haskell, as supported by
vector library. Several
alternatives with more extensive APIs exist: