| Copyright | (c) Jonatan H Sundqvist 2016 | 
|---|---|
| License | MIT | 
| Maintainer | Jonatan H Sundqvist | 
| Stability | experimental|stable | 
| Portability | POSIX (not sure) | 
| Safe Haskell | None | 
| Language | Haskell2010 | 
Cartesian.Core
Description
- module Cartesian.Types
 - module Cartesian.Lenses
 - overlap :: Ord n => (n, n) -> (n, n) -> Maybe (n, n)
 - fromCorners :: (Applicative v, Num n, Ord n) => v n -> v n -> BoundingBox (v n)
 - fromAxes :: Applicative v => Axes v n -> BoundingBox (v n)
 - fromExtents :: (Applicative v, Num n) => Axes v n -> BoundingBox (v n)
 - intersect :: (Applicative v, Traversable v, Ord n, Num n) => BoundingBox (v n) -> BoundingBox (v n) -> Maybe (BoundingBox (v n))
 
Documentation
Types
module Cartesian.Types
Lenses
module Cartesian.Lenses
Functions
overlap :: Ord n => (n, n) -> (n, n) -> Maybe (n, n) Source #
Finds the overlap between two ranges (lower bound, upper bound).
 | Yields the overlap of two closed intervals (n ∈ R)
 TODO: Normalise intervals (eg. (12, 5) -> (5, 12))
 TODO: Type for intervals (which would also encode the openness of the lower and upper limits)
fromCorners :: (Applicative v, Num n, Ord n) => v n -> v n -> BoundingBox (v n) Source #
Cross product cross :: (Vector v, Num f) => v f -> v f -> v f cross a b = _
Euclidean distance between two points euclidean :: (Vector v, Floating f) => v f -> v f -> f euclidean a b = sqrt $ dot a b
Vector -> (magnitude, argument) polar :: (Floating a, Eq a) => Vector a -> (a, a) polar v@(Vector x y) = (magnitude v, argument v)
Creates a bounding box from two opposite corners
 TODO: Better name (?)
 TODO: Don't make assumptions about WHICH corners they are (✓)
 TODO: Should we care about degenerate cases (such as a and b being identical)
fromAxes :: Applicative v => Axes v n -> BoundingBox (v n) Source #
fromExtents :: (Applicative v, Num n) => Axes v n -> BoundingBox (v n) Source #
Top Left Bottom Right
intersect :: (Applicative v, Traversable v, Ord n, Num n) => BoundingBox (v n) -> BoundingBox (v n) -> Maybe (BoundingBox (v n)) Source #
Finds the intersection (boolean AND) of two bounding boxes