- delta = V2 ((tx - ox) % maxComponent) ((ty - oy) % maxComponent)
- startR = V2 (tx % 1) (ty % 1)
- rawScreens = takeWhile (inBounds bounds) [startR ^+^ n *^ delta | n <- [1..]]
- screens = filter isIntegral rawScreens
- screenInteger = map integerVec screens
- fullScreened = S.fromList screenInteger
- screened = S.delete target fullScreened
-
-inBounds :: Bounds -> Delta -> Bool
-inBounds (maxX, maxY) (V2 x y) = (x >= 0) && (x <= (maxX % 1)) && (y >= 0) && (y <= (maxY % 1))
+ delta = V2 ((tx - ox) / maxComponent) ((ty - oy) / maxComponent)
+ rawScreens = takeWhile (inBounds bounds) [target ^+^ n *^ delta | n <- [1..]]
+ screened = S.fromList rawScreens