groundhog-postgresql-0.9.0: PostgreSQL backend for the groundhog library.

Safe HaskellNone
LanguageHaskell98

Database.Groundhog.Postgresql.Geometry

Synopsis

Documentation

data Line Source #

It is not fully implemented in PostgreSQL yet. It is kept just to match all geometric types.

Constructors

Line Point 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