[Next] [Prev] [Right] [Left] [Up] [Index] [Root]
Operations on Points and Lines
Operations on Points and Lines
Subsections
Elementary Operations
p eq q : PlanePt, PlanePt -> BoolElt
True if the points p and q are equal, otherwise false.
p ne q : PlanePt, PlanePt -> BoolElt
True if the points p and q are not equal, otherwise false.
l eq m : PlaneLn, PlaneLn -> BoolElt
True if the lines l and m are equal, otherwise false.
l ne m : PlaneLn, PlaneLn -> BoolElt
True if the lines l and m are not equal, otherwise false.
p in l : PlanePt, PlaneLn -> BoolElt
True if point p lies on the line l, otherwise false.
p notin l : PlanePt, PlaneLn -> BoolElt
True if point p does not lie on the line l, otherwise false.
S subset l : { PlanePt }, PlaneLn -> BoolElt
Given a subset S of the point set of the plane P and a
line l of P, return true if the subset S of points
lies on the line l, otherwise false.
S notsubset l : { PlanePt }, PlaneLn -> BoolElt
Given a subset S of the point set of the plane P and a
line l of P, return true if the subset S of points
does not lie on the line l, otherwise false.
l meet m : PlaneLn, PlaneLn -> PlanePt
The unique point common to the lines l and m.
Representative(l) : PlaneLn -> PlanePt
Rep(l) : PlaneLn -> PlanePt
Given a line l of the plane P, return a representative point
of P which is incident with l.
Random(l) : PlaneLn -> PlanePt
Given a line l of the plane P, return a random point
of P which is incident with l.
Deconstruction Functions
Index(P, p) : PlanePt -> RngIntElt
Given a point p from the point-set V of a plane P, return the
index of p, i.e. the integer i such that p is V.i.
Index(P, l) : PlaneLn -> RngIntElt
Given a line l, return the index of l in the plane P, i.e. the integer i such that l is L.i (where L is the line-set of P).
p[i] : PlanePt, RngIntElt -> FldFinElt
The i-th coordinate of the point p, which must be from
a classical plane. If p is from a projective plane, then i
must satisfy 1 <= i <= 3; if p is from an affine plane, then
i must satisfy 1 <= i <= 2.
l[i] : PlaneLn, RngIntElt -> FldFinElt
The i-th coordinate of the line l, which must be from
a classical plane. The integer i must satisfy 1 <= i <= 3.
Recall that in a classical plane <a:b:c> (where a, b, c in K)
represents the line given by the equation ax + by + cz = 0 in a
projective plane or ax + by + c = 0 in an affine plane.
Coordinates(P, p) : Plane, PlanePt -> [ FldFinElt ]
Given a point p = (a:b:c) from a classical projective plane P (or
p = (a, b) from a classical affine plane P), return the sequence
[a, b, c] (or [a, b] in the affine case) of coordinates of p.
Coordinates(P, l) : Plane, PlaneLn -> [ FldFinElt ]
Given a line l = <a:b:c> from a classical plane P (projective or
affine), return the sequence [a, b, c] of coordinates of l.
ElementToSequence(p) : PlanePt -> [ FldFinElt ]
Eltseq(p) : PlanePt -> [ FldFinElt ]
Given a point p = (a:b:c) from a classical projective plane P (or
p = (a, b) from a classical affine plane P), return the sequence
[a, b, c] (or [a, b] in the affine case) of coordinates of p.
ElementToSequence(l) : PlaneLn -> [ FldFinElt ]
Eltseq(l) : PlaneLn -> [ FldFinElt ]
Given a line l = <a:b:c> from a classical plane P (projective or
affine), return the sequence [a, b, c] of coordinates of l.
Set(l) : PlaneLn -> { PlanePt }
The set of points contained in the line l.
Example Plane_decon (H57E8)
The following example illustrates the use of some of the elementary and
deconstruction functions on lines and points discussed in the previous two
subsections.
> K<w> := GF(4);
> P, V, L := ProjectivePlane(K);
Create the line x + z = 0:
> l := L![1, 0, 1];
> l;
< 1 : 0 : 1 >
Look at the points on the line l:
> Set(l);
{ ( 0 : 1 : 0 ), ( 1 : w^2 : 1 ), ( 1 : 0 : 1 ),
( 1 : w : 1 ), ( 1 : 1 : 1) }
Get the coordinates of the line l:
> Coordinates(P, l);
[ 1, 0, 1 ]
> l[1];
1
Find the index of the line l in the line-set L of P, and check it:
> Index(P, l);
8
> l eq L.8;
true
Test if a point is on the line l:
> V![1, 0, 1] in l;
true
Test a set of points for containment in l:
> S := {V.1, V.2};
> S;
{ ( 1 : 0 : 0 ), ( 0 : 1 : 0 ) }
> S subset l;
false
Create the line containing the points in S:
> l2 := L!S;
> l2;
< 0 : 0 : 1 >
> S subset l2;
true
And finally, find the point common to the lines l and l2:
> p := l meet l2;
> p;
( 0 : 1 : 0 )
> p[3];
0
Other Point and Line Functions
IsCollinear(P, S) : Plane, { PlanePt } -> BoolElt, PlaneLn
True if the set S of points of the plane P are collinear,
otherwise false. If the points are collinear, the line which they
define is also returned.
IsConcurrent(P, R) : Plane, { PlaneLn } -> BoolElt, PlanePt
True if the set R of lines of the plane P are concurrent,
otherwise false. If the lines are concurrent, their common point
is returned as a second value.
ContainsQuadrangle(P, S) : Plane, { PlanePt } -> BoolElt
True if the set S of points of a plane P contains a quadrangle.
Pencil(P, p) : Plane, PlanePt -> { PlaneLn }
The pencil of lines passing through the point p in the plane P.
Slope(l) : PlaneLn -> FldFinElt
The slope of the line l of a classical affine plane P.
IsParallel(P, l, m) : Plane, PlaneLn, PlaneLn -> BoolElt
True if the line l is parallel to the line m in the affine
plane P.
ParallelClass(P, l) : Plane, PlaneLn -> { PlaneLn }
The parallel class containing the line l of an affine plane P.
ParallelClasses(P) : AffPl -> { { PlaneLn } }
The partition into parallel classes of the lines of the affine plane P.
Example Plane_elt-other (H57E9)
We use the affine plane AG_2(3) to demonstrate some of
the above functions.
> A, V, L := AffinePlane(3);
Create the line y = 2x + 1 in A, and check its slope:
> l := L![2, 1];
> l;
< 1 : 1 : 2 >
> Slope(l);
2
Find the lines parallel to l:
> ParallelClass(l);
{
< 1 : 1 : 0 >,
< 1 : 1 : 1 >,
< 1 : 1 : 2 >
}
> [Slope(m): m in ParallelClass(l)];
[ 2, 2, 2 ]
Get the pencil of lines through a point of l:
> p := Rep(l);
> p;
( 1, 0 )
> Pencil(A, p);
{
< 1 : 0 : 2 >,
< 1 : 1 : 2 >,
< 1 : 2 : 2 >,
< 0 : 1 : 0 >
}
[Next] [Prev] [Right] [Left] [Up] [Index] [Root]