Safe Haskell | None |
---|---|
Language | Haskell2010 |
Basic operations on 2D points represented as linear offsets.
Synopsis
- type X = Int
- type Y = Int
- data Point = Point {}
- maxLevelDimExponent :: Int
- chessDist :: Point -> Point -> Int
- euclidDistSq :: Point -> Point -> Int
- adjacent :: Point -> Point -> Bool
- inside :: Point -> (X, Y, X, Y) -> Bool
- bla :: X -> Y -> Int -> Point -> Point -> Maybe [Point]
- fromTo :: Point -> Point -> [Point]
- originPoint :: Point
- maxLevelDim :: Int
- blaXY :: Int -> Point -> Point -> [Point]
- balancedWord :: Int -> Int -> Int -> [Int]
Documentation
2D points in cartesian representation. Coordinates grow to the right and down, so that the (0, 0) point is in the top-left corner of the screen. Coordinates are never negative.
Instances
Enum Point Source # | |
Defined in Game.LambdaHack.Common.Point | |
Eq Point Source # | |
Ord Point Source # | |
Show Point Source # | |
Generic Point Source # | |
Binary Point Source # | |
type Rep Point Source # | |
Defined in Game.LambdaHack.Common.Point type Rep Point = D1 (MetaData "Point" "Game.LambdaHack.Common.Point" "LambdaHack-0.8.1.2-9Fmfvbfsr9xEInnejydwaW" False) (C1 (MetaCons "Point" PrefixI True) (S1 (MetaSel (Just "px") NoSourceUnpackedness NoSourceStrictness DecidedStrict) (Rec0 X) :*: S1 (MetaSel (Just "py") NoSourceUnpackedness NoSourceStrictness DecidedStrict) (Rec0 Y))) |
maxLevelDimExponent :: Int Source #
The maximum number of bits for level X and Y dimension (16). The value is chosen to support architectures with 32-bit Ints.
chessDist :: Point -> Point -> Int Source #
The distance between two points in the chessboard metric.
adjacent :: Point -> Point -> Bool Source #
Checks whether two points are adjacent on the map (horizontally, vertically or diagonally).
bla :: X -> Y -> Int -> Point -> Point -> Maybe [Point] Source #
Bresenham's line algorithm generalized to arbitrary starting eps
(eps
value of 0 gives the standard BLA).
Skips the source point and goes through the second point
to the edge of the level. GIves Nothing
if the points are equal.
The target is given as Point
to permit aiming out of the level,
e.g., to get uniform distributions of directions for explosions
close to the edge of the level.
fromTo :: Point -> Point -> [Point] Source #
A list of all points on a straight vertical or straight horizontal line between two points. Fails if no such line exists.
originPoint :: Point Source #
Internal operations
maxLevelDim :: Int Source #
Maximal supported level X and Y dimension. Not checked anywhere. The value is chosen to support architectures with 32-bit Ints.
blaXY :: Int -> Point -> Point -> [Point] Source #
Bresenham's line algorithm generalized to arbitrary starting eps
(eps
value of 0 gives the standard BLA). Includes the source point
and goes through the target point to infinity.