VEC: Fix the inRange function
It now takes a PROPER square, as in ((xmin, ymin), (xmax, ymax)) instead of ((xmin, xmax), (ymin, ymax)) and also works with negative values. Because the meaning of the arguments has changed, we also had to fix all uses of it.
This commit is contained in:
@@ -104,9 +104,9 @@ rangeSearch :: KDTree PT -> Square -> ([PT], Tree String)
|
||||
rangeSearch kd' sq' = (goPt kd' sq', goTree kd' sq' True)
|
||||
where
|
||||
-- either y1 or x1 depending on the orientation
|
||||
p1' dir ((x1, _), (y1, _)) = if' (dir == Vertical) y1 x1
|
||||
p1' dir ((x1, y1), (_, _)) = if' (dir == Vertical) y1 x1
|
||||
-- either y2 or x2 depending on the orientation
|
||||
p2' dir ((_, x2), (_, y2)) = if' (dir == Vertical) y2 x2
|
||||
p2' dir ((_, _), (x2, y2)) = if' (dir == Vertical) y2 x2
|
||||
-- either the second or first of the tuple, depending on the orientation
|
||||
cur' dir = if' (dir == Vertical) snd fst
|
||||
-- All points in the range.
|
||||
|
||||
@@ -57,10 +57,10 @@ data Orient = North | South | East | West
|
||||
|
||||
-- |Get a sub-square of the current square, e.g. nw, ne, sw or se.
|
||||
nwSq, neSq, swSq, seSq :: Square -> Square
|
||||
nwSq ((xl, xu), (yl, yu)) = (,) (xl, (xl + xu) / 2) ((yl + yu) / 2, yu)
|
||||
neSq ((xl, xu), (yl, yu)) = (,) ((xl + xu) / 2, xu) ((yl + yu) / 2, yu)
|
||||
swSq ((xl, xu), (yl, yu)) = (,) (xl, (xl + xu) / 2) (yl, (yl + yu) / 2)
|
||||
seSq ((xl, xu), (yl, yu)) = (,) ((xl + xu) / 2, xu) (yl, (yl + yu) / 2)
|
||||
nwSq ((xl, yl), (xu, yu)) = (,) (xl, (yl + yu) / 2) ((xl + xu) / 2, yu)
|
||||
neSq ((xl, yl), (xu, yu)) = (,) ((xl + xu) / 2, (yl + yu) / 2) (xu, yu)
|
||||
swSq ((xl, yl), (xu, yu)) = (,) (xl, yl) ((xl + xu) / 2, (yl + yu) / 2)
|
||||
seSq ((xl, yl), (xu, yu)) = (,) ((xl + xu) / 2, yl) (xu, (yl + yu) / 2)
|
||||
|
||||
|
||||
-- |Check whether the current Node is an nw, ne, sw or se child of it's
|
||||
|
||||
Reference in New Issue
Block a user