groundhog-postgresql-0.7.0.1: 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