Octree 0.2.1 → 0.2.2
raw patch · 3 files changed
+14/−15 lines, 3 filesPVP: major bump suggested
API removals or changes: PVP suggests a major version bump
API changes (from Hackage documentation)
- Data.Octree: dist :: Vector v => v -> v -> Scalar
+ Data.Octree: dist :: Vector3 -> Vector3 -> Double
Files
- Data/Octree/Internal.hs +5/−10
- Octree.cabal +2/−3
- tests/test_Octree.hs +7/−2
Data/Octree/Internal.hs view
@@ -2,7 +2,7 @@ module Data.Octree.Internal(Vector3(..), dist, Octree(..), lookup, nearest, withinRange, fromList, toList, insert, -- internal- ODir,+ ODir(..), octreeStep, octantDistance, splitBy', joinStep, splitStep, allOctants, octantDistance', cmp, pickClosest@@ -20,11 +20,11 @@ import Test.QuickCheck.Arbitrary -- | norm of a vector-norm :: Vector v => v -> Scalar-norm a = a `vdot` a+norm :: Vector3 -> Double+norm a = sqrt (a `vdot` a) -- | distance between two vectors-dist :: Vector v => v -> v -> Scalar+dist :: Vector3 -> Vector3 -> Double dist u v = norm (u - v) data Octree a = Node { split :: Vector3,@@ -153,11 +153,6 @@ where i = cmp coord splitPoint (swd, sed, nwd, ned, swu, seu, nwu, neu) = splitBy splitPoint aList -{---- | Internal Sums a list of vectors-sumVector3s [(coord, _)] = coord-sumVector3s ((coord, _):aList) = coord + sumVector3s aList--} -- | Computes a center of mass for a given list of vectors - used to find a splitPoint. massCenter :: Fractional a => [(a, b)] -> a massCenter aList = sum (map fst aList) / count@@ -279,7 +274,7 @@ selectFrom' best [] = Just best -- | Internal method that picks from a given list a point closest to argument, -pickClosest :: Vector v => v -> [(v, t)] -> Maybe (v, t)+pickClosest :: Vector3 -> [(Vector3, t)] -> Maybe (Vector3, t) pickClosest pt [] = Nothing pickClosest pt (a:as) = Just $ foldr (pickCloser pt) a as pickCloser pt va@(a, _a) vb@(b, _b) = if dist pt a <= dist pt b
Octree.cabal view
@@ -1,5 +1,5 @@ name: Octree-version: 0.2.1+version: 0.2.2 stability: beta homepage: https://github.com/mgajda/octree package-url: http://hackage.haskell.org/package/octree@@ -17,8 +17,7 @@ build-type: Simple cabal-version: >=1.8-tested-with: GHC==7.0.4--- Also tested with GHC-7.4rc2+tested-with: GHC==7.0.4, GHC==7.4.1 source-repository head type: git
tests/test_Octree.hs view
@@ -44,13 +44,18 @@ where triangleInequality = (octantDistance' aptA (cmp ptB origin)) <= (dist aptA ptB) aptA = abs ptA -prop_octantDistanceNoGreaterThanInterpointDistance ptA ptB vp = triangleInequality || sameOctant+prop_octantDistanceNoGreaterThanInterpointDistance ptA ptB vp = triangleInequality where triangleInequality = (octantDistance (ptA - vp) (cmp ptB vp)) <= (dist ptA ptB) sameOctant = (cmp ptA vp) == (cmp ptB vp) -prop_octantDistanceNoGreaterThanInterpointDistanceZero ptA ptB = triangleInequality || sameOctant+prop_octantDistanceNoGreaterThanInterpointDistanceZero ptA ptB = triangleInequality where triangleInequality = (octantDistance ptA (cmp ptB origin)) <= (dist ptA ptB) sameOctant = (cmp ptA origin) == (cmp ptB origin)++prop_octantDistanceNoGreaterThanInterpointDistanceZero0 ptA ptB = triangleInequality+ where triangleInequality = (octantDistance aptA (cmp ptB origin)) <= (dist aptA ptB)+ sameOctant = (cmp aptA origin) == (cmp ptB origin)+ aptA = abs ptA prop_octantDistanceNoGreaterThanCentroidDistance pt vp = all testFun allOctants where testFun odir = (octantDistance (pt - vp) odir) <= dist pt vp