Safe Haskell | None |
---|---|
Language | Haskell98 |
Database.Groundhog.Postgresql.Geometry
- data Point = Point Double Double
- data Line = Line Point Point
- data Lseg = Lseg Point Point
- data Box = Box Point Point
- data Path
- = ClosedPath [Point]
- | OpenPath [Point]
- data Polygon = Polygon [Point]
- data Circle = Circle Point Double
- (+.) :: (SqlDb db, Plus a b, ExpressionOf db r x a, ExpressionOf db r y b) => x -> y -> Expr db r a
- (-.) :: (SqlDb db, BoxCirclePathPoint a, ExpressionOf db r x a, ExpressionOf db r y Point) => x -> y -> Expr db r a
- (*.) :: (SqlDb db, BoxCirclePathPoint a, ExpressionOf db r x a, ExpressionOf db r y Point) => x -> y -> Expr db r a
- (/.) :: (SqlDb db, BoxCirclePathPoint a, ExpressionOf db r x a, ExpressionOf db r y Point) => x -> y -> Expr db r a
- (#) :: (SqlDb db, BoxLineLseg a, ExpressionOf db r x a, ExpressionOf db r y a) => x -> y -> Expr db r a
- (##) :: (SqlDb db, Closest a b, ExpressionOf db r x a, ExpressionOf db r y b) => x -> y -> Expr db r Point
- (<->) :: (SqlDb db, Distance a b, ExpressionOf db r x a, ExpressionOf db r y b) => x -> y -> Expr db r Double
- (&&) :: (SqlDb db, BoxCirclePolygon a, ExpressionOf db r x a, ExpressionOf db r y a) => x -> y -> Cond db r
- (<<) :: (SqlDb db, BoxCirclePointPolygon a, ExpressionOf db r x a, ExpressionOf db r y a) => x -> y -> Cond db r
- (>>) :: (SqlDb db, BoxCirclePointPolygon a, ExpressionOf db r x a, ExpressionOf db r y a) => x -> y -> Cond db r
- (&<) :: (SqlDb db, BoxCirclePolygon a, ExpressionOf db r x a, ExpressionOf db r y a) => x -> y -> Cond db r
- (&>) :: (SqlDb db, BoxCirclePolygon a, ExpressionOf db r x a, ExpressionOf db r y a) => x -> y -> Cond db r
- (<<|) :: (SqlDb db, BoxCirclePolygon a, ExpressionOf db r x a, ExpressionOf db r y a) => x -> y -> Cond db r
- (|>>) :: (SqlDb db, BoxCirclePolygon a, ExpressionOf db r x a, ExpressionOf db r y a) => x -> y -> Cond db r
- (&<|) :: (SqlDb db, BoxCirclePolygon a, ExpressionOf db r x a, ExpressionOf db r y a) => x -> y -> Cond db r
- (|&>) :: (SqlDb db, BoxCirclePolygon a, ExpressionOf db r x a, ExpressionOf db r y a) => x -> y -> Cond db r
- (<^) :: (SqlDb db, BoxPoint a, ExpressionOf db r x a, ExpressionOf db r y a) => x -> y -> Cond db r
- (>^) :: (SqlDb db, BoxPoint a, ExpressionOf db r x a, ExpressionOf db r y a) => x -> y -> Cond db r
- (?#) :: (SqlDb db, Intersects a b, ExpressionOf db r x a, ExpressionOf db r y b) => x -> y -> Cond db r
- (?-) :: (SqlDb db, ExpressionOf db r x Point, ExpressionOf db r y Point) => x -> y -> Cond db r
- (?|) :: (SqlDb db, ExpressionOf db r x Point, ExpressionOf db r y Point) => x -> y -> Cond db r
- (?-|) :: (SqlDb db, LineLseg a, ExpressionOf db r x a, ExpressionOf db r y a) => x -> y -> Cond db r
- (?||) :: (SqlDb db, LineLseg a, ExpressionOf db r x a, ExpressionOf db r y a) => x -> y -> Cond db r
- (@>) :: (SqlDb db, Contains a b, ExpressionOf db r x a, ExpressionOf db r y b) => x -> y -> Cond db r
- (<@) :: (SqlDb db, Contained a b, ExpressionOf db r x a, ExpressionOf db r y b) => x -> y -> Cond db r
- (~=) :: (SqlDb db, BoxCirclePointPolygon a, ExpressionOf db r x a, ExpressionOf db r y a) => x -> y -> Cond db r
Documentation
It is not fully implemented in PostgreSQL yet. It is kept just to match all geometric types.
Constructors
ClosedPath [Point] | |
OpenPath [Point] |
(+.) :: (SqlDb db, Plus a b, ExpressionOf db r x a, ExpressionOf db r y b) => x -> y -> Expr db r a infixl 6 Source #
Translation
box '((0,0),(1,1))' + point '(2.0,0)' = box '(3,1),(2,0)'
(-.) :: (SqlDb db, BoxCirclePathPoint a, ExpressionOf db r x a, ExpressionOf db r y Point) => x -> y -> Expr db r a infixl 6 Source #
Translation
box '((0,0),(1,1))' - point '(2.0,0)' = box '(-1,1),(-2,0)'
(*.) :: (SqlDb db, BoxCirclePathPoint a, ExpressionOf db r x a, ExpressionOf db r y Point) => x -> y -> Expr db r a infixl 7 Source #
Scaling/rotation
box '((0,0),(1,1))' * point '(2.0,0)' = box '(2,2),(0,0)'
(/.) :: (SqlDb db, BoxCirclePathPoint a, ExpressionOf db r x a, ExpressionOf db r y Point) => x -> y -> Expr db r a infixl 7 Source #
Scaling/rotation
box '((0,0),(2,2))' / point '(2.0,0)' = box '(1,1),(0,0)'
(#) :: (SqlDb db, BoxLineLseg a, ExpressionOf db r x a, ExpressionOf db r y a) => x -> y -> Expr db r a Source #
Point or box of intersection
lseg '((1,-1),(-1,1))' # '((1,1),(-1,-1))' = point '(0,0)'
box '((1,-1),(-1,1))' # '((1,1),(-1,-1))' = box '(1,1),(-1,-1)'
(##) :: (SqlDb db, Closest a b, ExpressionOf db r x a, ExpressionOf db r y b) => x -> y -> Expr db r Point Source #
Closest point to first operand on second operand
point '(0,0)' ## lseg '((2,0),(0,2))' = point '(1,1)'
(<->) :: (SqlDb db, Distance a b, ExpressionOf db r x a, ExpressionOf db r y b) => x -> y -> Expr db r Double Source #
Distance between
circle '((0,0),1)' - circle '((5,0),1)' = 3
(&&) :: (SqlDb db, BoxCirclePolygon a, ExpressionOf db r x a, ExpressionOf db r y a) => x -> y -> Cond db r Source #
Overlaps?
box '((0,0),(1,1))' && box '((0,0),(2,2))' = true
(<<) :: (SqlDb db, BoxCirclePointPolygon a, ExpressionOf db r x a, ExpressionOf db r y a) => x -> y -> Cond db r Source #
Is strictly left of?
circle '((0,0),1)' << circle '((5,0),1)' = true
(>>) :: (SqlDb db, BoxCirclePointPolygon a, ExpressionOf db r x a, ExpressionOf db r y a) => x -> y -> Cond db r Source #
Is strictly right of?
circle '((5,0),1)' >> circle '((0,0),1)' = true
(&<) :: (SqlDb db, BoxCirclePolygon a, ExpressionOf db r x a, ExpressionOf db r y a) => x -> y -> Cond db r Source #
Does not extend to the right of? box '((0,0),(1,1))' &< box '((0,0),(2,2))' = t
(&>) :: (SqlDb db, BoxCirclePolygon a, ExpressionOf db r x a, ExpressionOf db r y a) => x -> y -> Cond db r Source #
Does not extend to the left of?
box '((0,0),(3,3))' &> box '((0,0),(2,2))' = true
(<<|) :: (SqlDb db, BoxCirclePolygon a, ExpressionOf db r x a, ExpressionOf db r y a) => x -> y -> Cond db r Source #
Is strictly below?
box '((0,0),(3,3))' <<| box '((3,4),(5,5))' = true
(|>>) :: (SqlDb db, BoxCirclePolygon a, ExpressionOf db r x a, ExpressionOf db r y a) => x -> y -> Cond db r Source #
Is strictly above?
box '((3,4),(5,5))' |>> box '((0,0),(3,3))'
(&<|) :: (SqlDb db, BoxCirclePolygon a, ExpressionOf db r x a, ExpressionOf db r y a) => x -> y -> Cond db r Source #
Does not extend above?
box '((0,0),(1,1))' &<| box '((0,0),(2,2))' = true
(|&>) :: (SqlDb db, BoxCirclePolygon a, ExpressionOf db r x a, ExpressionOf db r y a) => x -> y -> Cond db r Source #
Does not extend below?
box '((0,0),(3,3))' |&> box '((0,0),(2,2))' = true
(<^) :: (SqlDb db, BoxPoint a, ExpressionOf db r x a, ExpressionOf db r y a) => x -> y -> Cond db r Source #
Is below (allows touching)?
circle '((0,0),1)' <^ circle '((0,5),1)' = true
(>^) :: (SqlDb db, BoxPoint a, ExpressionOf db r x a, ExpressionOf db r y a) => x -> y -> Cond db r Source #
Is above (allows touching)?
circle '((0,5),1)' >^ circle '((0,0),1)' = true
(?#) :: (SqlDb db, Intersects a b, ExpressionOf db r x a, ExpressionOf db r y b) => x -> y -> Cond db r Source #
Intersects?
lseg '((-1,0),(1,0))' ?# box '((-2,-2),(2,2))' = true
(?-) :: (SqlDb db, ExpressionOf db r x Point, ExpressionOf db r y Point) => x -> y -> Cond db r Source #
Are horizontally aligned?
point '(1,0)' ?- point '(0,0)' = true
(?|) :: (SqlDb db, ExpressionOf db r x Point, ExpressionOf db r y Point) => x -> y -> Cond db r Source #
Are vertically aligned?
point '(0,1)' ?| point '(0,0)' = true
(?-|) :: (SqlDb db, LineLseg a, ExpressionOf db r x a, ExpressionOf db r y a) => x -> y -> Cond db r Source #
Is perpendicular?
lseg '((0,0),(0,1))' ?-| lseg '((0,0),(1,0))' = true
(?||) :: (SqlDb db, LineLseg a, ExpressionOf db r x a, ExpressionOf db r y a) => x -> y -> Cond db r Source #
Are parallel?
lseg '((-1,0),(1,0))' ?|| lseg '((-1,2),(1,2))' = true
(@>) :: (SqlDb db, Contains a b, ExpressionOf db r x a, ExpressionOf db r y b) => x -> y -> Cond db r Source #
Contains?
circle '((0,0),2)' @> point '(1,1)' = true
(<@) :: (SqlDb db, Contained a b, ExpressionOf db r x a, ExpressionOf db r y b) => x -> y -> Cond db r Source #
Contained in or on?
point '(1,1)' <@ circle '((0,0),2)' = true
(~=) :: (SqlDb db, BoxCirclePointPolygon a, ExpressionOf db r x a, ExpressionOf db r y a) => x -> y -> Cond db r Source #
Same as?
polygon '((0,0),(1,1))' ~= polygon '((1,1),(0,0))' = true