Fix bugs in zones near segments

This commit is contained in:
2025-10-27 00:03:57 +00:00
parent c641cbaa69
commit aa82519e05
10 changed files with 319 additions and 172 deletions
+8
View File
@@ -1,12 +1,20 @@
module Geometry.Zone
( divTo
, modTo
, floorTo
, ceilingTo
) where
divTo :: Float -> Float -> Int
{-# INLINE divTo #-}
divTo s = floor . (/s)
floorTo :: Float -> Float -> Float
floorTo s x = s * fromIntegral (divTo s x)
ceilingTo :: Float -> Float -> Float
ceilingTo s x = s * (1 + fromIntegral (divTo s x))
modTo :: Float -> Float -> Float
{-# INLINE modTo #-}
modTo s x = x - s * fromIntegral (divTo s x)