The line splits $$ ^{2} in a positive and a negative side. A point $$p with Cartesian coordinates $$(px, py) is on the positive side of l, iff a px + b py + c > 0, it is on the negative side of l, iff a px + b py + c < 0. The positive side is to the left of l.
 
introduces a line l with the line equation in
Cartesian
coordinates $$ax +by +c = 0.
 
 
introduces a line l passing through the points $$p and $$q.
Line l is directed from $$p to $$q.
 
 
introduces a line l passing through point $$p with
direction $$d.
 
 
introduces a line l passing through point $$p and
oriented by $$v.
 
 
introduces a line l supporting the segment $$s,
oriented from source to target.
 
 
introduces a line l supporting the ray $$r,
with same orientation.


 
Test for equality: two lines are equal, iff they have a non empty intersection and the same direction.  

 
Test for inequality.  

 returns the first coefficient of $$l. 

 returns the second coefficient of $$l. 

 returns the third coefficient of $$l. 

 returns an arbitrary point on l. It holds point(i) == point(j), iff i==j. Furthermore, l is directed from point(i) to point(j), for all i $$< j. 

 
returns the orthogonal projection of $$p onto l.  

 
returns the $$xcoordinate of the point at l with
given $$ycoordinate. Precondition: l is not horizontal.  

 
returns the $$ycoordinate of the point at l with
given $$xcoordinate. Precondition: l is not vertical. 

 line l is degenerate, if the coefficients a and b of the line equation are zero. 







 
returns ON_ORIENTED_BOUNDARY, ON_NEGATIVE_SIDE, or the constant ON_POSITIVE_SIDE, depending on the position of $$p relative to the oriented line l. 
For convenience we provide the following boolean functions:

 

 



 returns a vector having the direction of l. 
 
 returns the direction of l.  

 returns the line with opposite direction. 

 
returns the line perpendicular to l and passing through $$p, where the direction is the direction of l rotated counterclockwise by 90 degrees.  

 
returns the line obtained by applying $$t on a point on l and the direction of l. 
Point_2< Cartesian<double> > p(1.0,1.0), q(4.0,7.0);
To define a line $$l we write:
Line_2< Cartesian<double> > l(p,q);