Arcs

A \(k\)–arc in a projective or affine plane \(P\) is a set of \(k\) points of \(P\), no three of which are collinear. A \(k\)–arc is complete if it cannot be extended to a \((k + 1)\)–arc by the addition of another point. A tangent to an arc \(A\) is a line which meets \(A\) exactly once; a secant is a line which meets \(A\) exactly twice; and a passant, or external line, is a line which does not meet \(A\) at all.

kArc(P, k): Plane, RngIntElt -> SetEnum

Return a \(k\)–arc for the plane \(P\).

CompleteKArc(P, k): Plane, RngIntElt -> SetEnum

Return a complete \(k\)–arc for the plane \(P\) (if one exists).

IsArc(P, A): Plane, { PlanePt } -> BoolElt

Returns true if the set of points \(A\) is an arc in the plane \(P\), i.e. no three points of \(A\) are collinear.

IsComplete(P, A): Plane, { PlanePt } -> BoolElt

Returns true if the \(k\)–arc \(A\) is complete in the plane \(P\).

Conic(P, S): Plane, { PlanePt } -> SetEnum

Given a set \(S\) of five points belonging to a classical projective plane \(P\) of order \(n > 3\) and being in general position, construct the unique conic that passes through them.

QuadraticForm(S): { PlanePt } -> RngMPolElt

Given a set \(S\) of five points belonging to a classical projective plane of order \(n > 3\) that are in general position, return the quadratic form defining the conic containing the five points.

Tangent(P, A, p): Plane, { PlanePt }, PlanePt -> PlaneLn

Given an arc \(A\) in the plane \(P\), and a point \(p\) on \(A\), return a tangent to \(A\) at \(p\).

AllTangents(P, A): Plane, { PlanePt} -> { PlaneLn}

Given an arc \(A\) in the plane \(P\), return the set of tangent lines to \(A\).

AllSecants(P, A): Plane, { PlanePt} -> { PlaneLn}

Given an arc \(A\) in the plane \(P\), return the set of secant lines to \(A\).

ExternalLines(P, A): Plane, { PlanePt} -> { PlaneLn}
AllPassants(P, A): Plane, { PlanePt} -> { PlaneLn}

Given an arc \(A\) in the plane \(P\), return the set of external lines to \(A\).

Knot(P, C): Plane, { PlanePt} -> PlanePt

Given a conic \(C\) in the projective plane \(P\) of even order, return the knot of the conic \(C\), i.e the intersection point of the tangents to \(C\).

Exterior(P, C): Plane, { PlanePt} -> { PlanePt}

Given a conic \(C\) in the projective plane \(P\) of odd order, return the exterior points of \(C\), i.e. the points of \(P\) that lie on two tangents of \(C\).

Interior(P, C): Plane, { PlanePt} -> { PlanePt}

Given a conic \(C\) in the projective plane \(P\) of odd order, return the interior points of \(C\), i.e. the points of \(P\) that do not lie on any tangent of \(C\).

Example: Oval Design from an Arc (ex-ca0adf)

Run in calculator (opens in a new tab)

The following sequence of instructions constructs an oval design from \(PG_2(16)\).

> P, V, L := FiniteProjectivePlane(16);
> oval := kArc(P, 18);
> pts := Points(P) diff oval;
> lns := ExternalLines(P, oval);
> I := IncidenceStructure< SetToIndexedSet(pts) | [l meet pts : l in lns] >;
> D := Design(Dual(I), 2);
> D;
2-(120, 8, 1) Design with 255 blocks

The next example uses various functions discussed so far, and shows the relationship between a plane and its subplanes.

> K<w> := GF(9);
> P, V, L := FiniteProjectivePlane(K);
> c := kArc(P, 5);
> c;
{  ( 1 : 0 : 0 ), ( 0 : 1 : 0 ), ( 0 : 0 : 1 ), ( 1 : 2 : w^3 ),
   ( 1 : w : w) }
> C := Conic(P, c);
> C;
{  ( 1 : 0 : 0 ), ( 0 : 1 : 0 ), ( 0 : 0 : 1 ), ( 1 : 2 : w^3 ),
   ( 1 : w : w), ( 1 : w^5 : w^6 ), ( 1 : w^7 : 2 ), ( 1 : w^2 : 1 ),
   ( 1 : w^3 : w^5 ), ( 1 : w^6 : w^2 ) }
> #C;
10
> #Interior(P, C);
36
>
> S, SV, SL := SubfieldSubplane(P, GF(3));
> S subset P;
true
> a := kArc(S, 4);
> IsArc(S, a);
true
> IsArc(P, a);
true
> IsComplete(S, a);
true
> IsComplete(P, a);
false
> a;
{ ( 1 : 0 : 0 ), ( 0 : 1 : 0 ), ( 0 : 0 : 1 ), ( 1 : 2 : 1 ) }
> S2 := sub< P | a >;
> S2;
Projective Plane of order 3
> S2 eq S;
true
> p := Random(a);
> p;
( 1 : 2 : 1 )
> Tangent(S, a, p);
< 1 : 2 : 1 >
> AllTangents(S, a);
{
    < 1 : 2 : 0 >,
    < 0 : 1 : 2 >,
    < 1 : 2 : 1 >,
    < 1 : 0 : 1 >
}
> AllTangents(P, a);
{
    < 1 : w^5 : w^6 >,
    < 1 : 0 : w >,
    < 1 : w^2 : w >,
    < 1 : 0 : w^6 >,
    < 1 : 0 : 1 >,
    < 1 : w^6 : w^3 >,
    < 1 : w^6 : 0 >,
    < 0 : 1 : w^6 >,
    < 1 : 2 : 0 >,
    < 0 : 1 : 2 >,
    < 1 : 2 : 1 >,
    < 1 : w^3 : w^5 >,
    < 1 : 0 : w^7 >,
    < 1 : 0 : w^2 >,
    < 1 : w : 0 >,
    < 0 : 1 : w >,
    < 1 : 0 : w^5 >,
    < 1 : 0 : w^3 >,
    < 1 : w : w^7 >,
    < 1 : w^3 : 0 >,
    < 0 : 1 : w^3 >,
    < 1 : w^7 : w^2 >,
    < 1 : w^5 : 0 >,
    < 0 : 1 : w^5 >,
    < 1 : w^7 : 0 >,
    < 0 : 1 : w^7 >,
    < 1 : w^2 : 0 >,
    < 0 : 1 : w^2 >
}

Run in calculator (opens in a new tab)