packages feed

GlomeVec 0.1.2 → 0.2

raw patch · 2 files changed

+50/−16 lines, 2 filesdep ~base

Dependency ranges changed: base

Files

Data/Glome/Vec.hs view
@@ -108,6 +108,10 @@ data Ray = Ray {origin, dir :: !Vec} deriving Show --data Plane = Plane {norm :: !Vec, offset :: !Flt} deriving Show +ray_ub :: Ray -> (# Flt, Flt, Flt, Flt, Flt, Flt #)+ray_ub (Ray (Vec !ox !oy !oz) (Vec !dx !dy !dz)) = (# ox, oy, oz, dx, dy, dz #)++ -- | Vec constructor. vec :: Flt -> Flt -> Flt -> Vec vec !x !y !z = (Vec x y z)@@ -717,22 +721,48 @@ -- we hit.  Otherwise, we miss. (It's up to the  -- caller to figure that out.) +{- bbclip :: Ray -> Bbox -> Interval bbclip (Ray (Vec ox oy oz) (Vec dx dy dz))         (Bbox (Vec p1x p1y p1z) (Vec p2x p2y p2z)) =- let dxrcp = 1/dx-     dyrcp = 1/dy-     dzrcp = 1/dz-     Interval inx outx = if dx > 0 -                         then Interval ((p1x-ox)*dxrcp) ((p2x-ox)*dxrcp)-                         else Interval ((p2x-ox)*dxrcp) ((p1x-ox)*dxrcp)-     Interval iny outy = if dy > 0-                         then Interval ((p1y-oy)*dyrcp) ((p2y-oy)*dyrcp)-                         else Interval ((p2y-oy)*dyrcp) ((p1y-oy)*dyrcp)-     Interval inz outz = if dz > 0-                         then Interval ((p1z-oz)*dzrcp) ((p2z-oz)*dzrcp)-                         else Interval ((p2z-oz)*dzrcp) ((p1z-oz)*dzrcp)+ let !dxrcp = 1/dx+     !dyrcp = 1/dy+     !dzrcp = 1/dz+     Interval !inx !outx = if dx > 0 +                           then Interval ((p1x-ox)*dxrcp) ((p2x-ox)*dxrcp)+                           else Interval ((p2x-ox)*dxrcp) ((p1x-ox)*dxrcp)+     Interval !iny !outy = if dy > 0+                           then Interval ((p1y-oy)*dyrcp) ((p2y-oy)*dyrcp)+                           else Interval ((p2y-oy)*dyrcp) ((p1y-oy)*dyrcp)+     Interval !inz !outz = if dz > 0+                           then Interval ((p1z-oz)*dzrcp) ((p2z-oz)*dzrcp)+                           else Interval ((p2z-oz)*dzrcp) ((p1z-oz)*dzrcp)  in    Interval (fmax3 inx iny inz) (fmin3 outx outy outz)+-} +bbclip_ub :: Ray -> Bbox -> (# Flt, Flt #)+bbclip_ub (Ray (Vec !ox !oy !oz) (Vec !dx !dy !dz)) +          (Bbox (Vec !p1x !p1y !p1z) (Vec !p2x !p2y !p2z)) =+ let !dxrcp = 1/dx+     !dyrcp = 1/dy+     !dzrcp = 1/dz+     (# !inx, !outx #) =+       if dx > 0 +       then (# (p1x-ox)*dxrcp, (p2x-ox)*dxrcp #)+       else (# (p2x-ox)*dxrcp, (p1x-ox)*dxrcp #)+     (# !iny, !outy #) =+       if dy > 0+       then (# (p1y-oy)*dyrcp, (p2y-oy)*dyrcp #)+       else (# (p2y-oy)*dyrcp, (p1y-oy)*dyrcp #)+     (# !inz, !outz #) =+       if dz > 0+       then (# (p1z-oz)*dzrcp, (p2z-oz)*dzrcp #)+       else (# (p2z-oz)*dzrcp, (p1z-oz)*dzrcp #)+ in+   (# fmax3 inx iny inz, fmin3 outx outy outz #) +bbclip :: Ray -> Bbox -> Interval+bbclip ray bbox =+  let (# near, far #) = bbclip_ub ray bbox+  in Interval near far
GlomeVec.cabal view
@@ -1,20 +1,24 @@ Name:                GlomeVec-Version:             0.1.2+Version:             0.2 Synopsis:            Simple 3D vector library Description:         A simple library for dealing with 3D vectors, suitable for graphics projects.  A small texture library with Perlin noise is included as well. License:             GPL License-file:        LICENSE Author:              Jim Snow Maintainer:          Jim Snow <jsnow@cs.pdx.edu>-Copyright:           Copyright 2008,2009 Jim Snow+Copyright:           Copyright 2008,2009,2014 Jim Snow Homepage:            http://www.haskell.org/haskellwiki/Glome Stability:           experimental Category:            graphics build-type:          Simple-Cabal-Version: >= 1.2+Cabal-Version: >= 1.2.3 extra-source-files:   README.txt library+  ghc-options: -fllvm -O2 -funbox-strict-fields+  extensions: UnboxedTuples+  ghc-prof-options: -prof -auto-all+   exposed-modules:   Data.Glome.Vec                      Data.Glome.Texture-  Build-Depends:     base >= 3 && < 4, array+  Build-Depends:     base >= 4 && < 5, array