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.