Work on grid point creation
This commit is contained in:
@@ -52,7 +52,7 @@ tutAnoTree = do
|
|||||||
-- , return $ tToBTree "cor" $ return $ cleatOnward corridor
|
-- , return $ tToBTree "cor" $ return $ cleatOnward corridor
|
||||||
-- , return $ tToBTree "cor" $ return $ cleatOnward airlock0
|
-- , return $ tToBTree "cor" $ return $ cleatOnward airlock0
|
||||||
, return $ tToBTree "cor" $ return $ cleatOnward corridor
|
, return $ tToBTree "cor" $ return $ cleatOnward corridor
|
||||||
, return $ tToBTree "cor" $ return $ cleatOnward airlockCrystal
|
, tToBTree "cor" . return . cleatOnward <$> (zChasm 25)
|
||||||
-- , tToBTree "x" . return . cleatOnward <$> airlockSimple
|
-- , tToBTree "x" . return . cleatOnward <$> airlockSimple
|
||||||
-- , tToBTree "lastun" . return . cleatOnward <$> tanksRoom [] []
|
-- , tToBTree "lastun" . return . cleatOnward <$> tanksRoom [] []
|
||||||
, return $ tToBTree "cor" $ return $ cleatOnward corridor
|
, return $ tToBTree "cor" $ return $ cleatOnward corridor
|
||||||
@@ -159,10 +159,13 @@ lChasm = do
|
|||||||
<&> rmLinks %~ setInLinks (isCornerLink SouthEast)
|
<&> rmLinks %~ setInLinks (isCornerLink SouthEast)
|
||||||
<&> rmPmnts <>~ [sps0 $ PutChasm (rectNSWE (y -50) 0 0 (x -50))]
|
<&> rmPmnts <>~ [sps0 $ PutChasm (rectNSWE (y -50) 0 0 (x -50))]
|
||||||
|
|
||||||
|
-- the Float is the width of the bridge
|
||||||
zChasm :: Float -> State LayoutVars Room
|
zChasm :: Float -> State LayoutVars Room
|
||||||
zChasm z = do
|
zChasm z = do
|
||||||
x <- state $ randomR (150, 300)
|
-- x <- state $ randomR (150, 300)
|
||||||
y <- state $ randomR (150, 300)
|
-- y <- state $ randomR (150, 300)
|
||||||
|
x <- return 250
|
||||||
|
y <- return 250
|
||||||
roomRectAutoLinks x y
|
roomRectAutoLinks x y
|
||||||
<&> rmLinks %~ setOutLinks (isCornerLink NorthWest)
|
<&> rmLinks %~ setOutLinks (isCornerLink NorthWest)
|
||||||
<&> rmLinks %~ setInLinks (isCornerLink SouthEast)
|
<&> rmLinks %~ setInLinks (isCornerLink SouthEast)
|
||||||
|
|||||||
+32
-7
@@ -1,11 +1,14 @@
|
|||||||
module Grid where
|
module Grid (
|
||||||
|
makeGrid,
|
||||||
|
gridInPolygon,
|
||||||
|
shiftedGrid,
|
||||||
|
gridPoints,
|
||||||
|
gridPoints'',
|
||||||
|
) where
|
||||||
|
|
||||||
import Bound
|
import Bound
|
||||||
--import Data.Function (on)
|
import Control.Lens
|
||||||
|
|
||||||
import Data.Bifunctor
|
|
||||||
import Data.List
|
import Data.List
|
||||||
--import Data.Maybe
|
|
||||||
import qualified Data.Tuple.Extra as Tup
|
import qualified Data.Tuple.Extra as Tup
|
||||||
import Geometry
|
import Geometry
|
||||||
|
|
||||||
@@ -41,8 +44,14 @@ shiftedGrid xmin xmax ymin ymax = grid
|
|||||||
shift p = bimap (p +.+) (p +.+)
|
shift p = bimap (p +.+) (p +.+)
|
||||||
grid = map (shift (V2 (xmin + 20) (ymin + 20))) $ makeGrid 60 xsteps 60 ysteps
|
grid = map (shift (V2 (xmin + 20) (ymin + 20))) $ makeGrid 60 xsteps 60 ysteps
|
||||||
|
|
||||||
-- creates a rectangular grid starting at (0,0) in the positive orthant
|
-- creates a DAG
|
||||||
-- needs fixing in degenerate (xstep or ystep == 0) cases
|
gridXsYs :: [Float] -> [Float] -> [(Point2, Point2)]
|
||||||
|
gridXsYs xs ys =
|
||||||
|
foldMap (\y -> mkpairs xs & each . each %~ (`V2` y)) ys
|
||||||
|
<> foldMap (\x -> mkpairs ys & each . each %~ V2 x) xs
|
||||||
|
where
|
||||||
|
mkpairs zs = zip zs $ tail zs
|
||||||
|
|
||||||
makeGrid ::
|
makeGrid ::
|
||||||
-- | horizontal step size
|
-- | horizontal step size
|
||||||
Float ->
|
Float ->
|
||||||
@@ -54,6 +63,22 @@ makeGrid ::
|
|||||||
Int ->
|
Int ->
|
||||||
[(Point2, Point2)]
|
[(Point2, Point2)]
|
||||||
makeGrid x nx y ny =
|
makeGrid x nx y ny =
|
||||||
|
foldMap doublePair $
|
||||||
|
gridXsYs (take (nx + 1) [0, x ..]) (take (ny + 1) [0, y ..])
|
||||||
|
|
||||||
|
-- creates a rectangular grid starting at (0,0) in the positive orthant
|
||||||
|
-- needs fixing in degenerate (xstep or ystep == 0) cases
|
||||||
|
makeGrid' ::
|
||||||
|
-- | horizontal step size
|
||||||
|
Float ->
|
||||||
|
-- | number of horizontal steps
|
||||||
|
Int ->
|
||||||
|
-- | vertical step size
|
||||||
|
Float ->
|
||||||
|
-- | number of vertical steps
|
||||||
|
Int ->
|
||||||
|
[(Point2, Point2)]
|
||||||
|
makeGrid' x nx y ny =
|
||||||
nub
|
nub
|
||||||
. concatMap doublePair
|
. concatMap doublePair
|
||||||
. concatMap (\p -> map (Tup.both (p +.+)) $ makeRect x y)
|
. concatMap (\p -> map (Tup.both (p +.+)) $ makeRect x y)
|
||||||
|
|||||||
Reference in New Issue
Block a user