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

Safe HaskellNone

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, QueryRaw db ~ Snippet db, Plus a b, ExpressionOf db r x a, ExpressionOf db r y b) => x -> y -> Expr db r aSource

Translation

box '((0,0),(1,1))' + point '(2.0,0)' = box '(3,1),(2,0)'

(-.) :: (SqlDb db, QueryRaw db ~ Snippet db, BoxCirclePathPoint a, ExpressionOf db r x a, ExpressionOf db r y Point) => x -> y -> Expr db r aSource

Translation

box '((0,0),(1,1))' - point '(2.0,0)' = box '(-1,1),(-2,0)'

(*.) :: (SqlDb db, QueryRaw db ~ Snippet db, BoxCirclePathPoint a, ExpressionOf db r x a, ExpressionOf db r y Point) => x -> y -> Expr db r aSource

Scaling/rotation

box '((0,0),(1,1))' * point '(2.0,0)' = box '(2,2),(0,0)'

(/.) :: (SqlDb db, QueryRaw db ~ Snippet db, BoxCirclePathPoint a, ExpressionOf db r x a, ExpressionOf db r y Point) => x -> y -> Expr db r aSource

Scaling/rotation

box '((0,0),(2,2))' / point '(2.0,0)' = box '(1,1),(0,0)'

(#) :: (SqlDb db, QueryRaw db ~ Snippet db, BoxLineLseg a, ExpressionOf db r x a, ExpressionOf db r y a) => x -> y -> Expr db r aSource

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, QueryRaw db ~ Snippet db, Closest a b, ExpressionOf db r x a, ExpressionOf db r y b) => x -> y -> Expr db r PointSource

Closest point to first operand on second operand

point '(0,0)'  lseg '((2,0),(0,2))' = point '(1,1)'

(<->) :: (SqlDb db, QueryRaw db ~ Snippet db, Distance a b, ExpressionOf db r x a, ExpressionOf db r y b) => x -> y -> Expr db r DoubleSource

Distance between

circle '((0,0),1)' - circle '((5,0),1)' = 3

(&&) :: (SqlDb db, QueryRaw db ~ Snippet db, BoxCirclePolygon a, ExpressionOf db r x a, ExpressionOf db r y a) => x -> y -> Cond db rSource

Overlaps?

box '((0,0),(1,1))' && box '((0,0),(2,2))' = true

(<<) :: (SqlDb db, QueryRaw db ~ Snippet db, BoxCirclePointPolygon a, ExpressionOf db r x a, ExpressionOf db r y a) => x -> y -> Cond db rSource

Is strictly left of?

circle '((0,0),1)' << circle '((5,0),1)' = true

(>>) :: (SqlDb db, QueryRaw db ~ Snippet db, BoxCirclePointPolygon a, ExpressionOf db r x a, ExpressionOf db r y a) => x -> y -> Cond db rSource

Is strictly right of?

circle '((5,0),1)' >> circle '((0,0),1)' = true

(&<) :: (SqlDb db, QueryRaw db ~ Snippet db, BoxCirclePolygon a, ExpressionOf db r x a, ExpressionOf db r y a) => x -> y -> Cond db rSource

Does not extend to the right of? box '((0,0),(1,1))' &< box '((0,0),(2,2))' = t

(&>) :: (SqlDb db, QueryRaw db ~ Snippet db, BoxCirclePolygon a, ExpressionOf db r x a, ExpressionOf db r y a) => x -> y -> Cond db rSource

Does not extend to the left of?

box '((0,0),(3,3))' &> box '((0,0),(2,2))' = true

(<<|) :: (SqlDb db, QueryRaw db ~ Snippet db, BoxCirclePolygon a, ExpressionOf db r x a, ExpressionOf db r y a) => x -> y -> Cond db rSource

Is strictly below?

box '((0,0),(3,3))' <<| box '((3,4),(5,5))' = true

(|>>) :: (SqlDb db, QueryRaw db ~ Snippet db, BoxCirclePolygon a, ExpressionOf db r x a, ExpressionOf db r y a) => x -> y -> Cond db rSource

Is strictly above?

box '((3,4),(5,5))' |>> box '((0,0),(3,3))'

(&<|) :: (SqlDb db, QueryRaw db ~ Snippet db, BoxCirclePolygon a, ExpressionOf db r x a, ExpressionOf db r y a) => x -> y -> Cond db rSource

Does not extend above?

box '((0,0),(1,1))' &<| box '((0,0),(2,2))' = true

(|&>) :: (SqlDb db, QueryRaw db ~ Snippet db, BoxCirclePolygon a, ExpressionOf db r x a, ExpressionOf db r y a) => x -> y -> Cond db rSource

Does not extend below?

box '((0,0),(3,3))' |&> box '((0,0),(2,2))' = true

(<^) :: (SqlDb db, QueryRaw db ~ Snippet db, BoxPoint a, ExpressionOf db r x a, ExpressionOf db r y a) => x -> y -> Cond db rSource

Is below (allows touching)?

circle '((0,0),1)' <^ circle '((0,5),1)' = true

(>^) :: (SqlDb db, QueryRaw db ~ Snippet db, BoxPoint a, ExpressionOf db r x a, ExpressionOf db r y a) => x -> y -> Cond db rSource

Is above (allows touching)?

circle '((0,5),1)' >^ circle '((0,0),1)' = true

(?#) :: (SqlDb db, QueryRaw db ~ Snippet db, Intersects a b, ExpressionOf db r x a, ExpressionOf db r y b) => x -> y -> Cond db rSource

Intersects?

lseg '((-1,0),(1,0))' ?# box '((-2,-2),(2,2))' = true

(?-) :: (SqlDb db, QueryRaw db ~ Snippet db, ExpressionOf db r x Point, ExpressionOf db r y Point) => x -> y -> Cond db rSource

Are horizontally aligned?

point '(1,0)' ?- point '(0,0)' = true

(?|) :: (SqlDb db, QueryRaw db ~ Snippet db, ExpressionOf db r x Point, ExpressionOf db r y Point) => x -> y -> Cond db rSource

Are vertically aligned?

point '(0,1)' ?| point '(0,0)' = true

(?-|) :: (SqlDb db, QueryRaw db ~ Snippet db, LineLseg a, ExpressionOf db r x a, ExpressionOf db r y a) => x -> y -> Cond db rSource

Is perpendicular?

lseg '((0,0),(0,1))' ?-| lseg '((0,0),(1,0))' = true

(?||) :: (SqlDb db, QueryRaw db ~ Snippet db, LineLseg a, ExpressionOf db r x a, ExpressionOf db r y a) => x -> y -> Cond db rSource

Are parallel?

lseg '((-1,0),(1,0))' ?|| lseg '((-1,2),(1,2))' = true

(@>) :: (SqlDb db, QueryRaw db ~ Snippet db, Contains a b, ExpressionOf db r x a, ExpressionOf db r y b) => x -> y -> Cond db rSource

Contains?

circle '((0,0),2)' @> point '(1,1)' = true

(<@) :: (SqlDb db, QueryRaw db ~ Snippet db, Contained a b, ExpressionOf db r x a, ExpressionOf db r y b) => x -> y -> Cond db rSource

Contained in or on?

point '(1,1)' <@ circle '((0,0),2)' = true

(~=) :: (SqlDb db, QueryRaw db ~ Snippet db, BoxCirclePointPolygon a, ExpressionOf db r x a, ExpressionOf db r y a) => x -> y -> Cond db rSource

Same as?

polygon '((0,0),(1,1))' ~= polygon '((1,1),(0,0))' = true