gap&gt; blocks := [
&gt;   [ 1, 2, 3, 4, 5 ], [ 1, 6, 7, 8, 9 ], [ 1, 10, 11, 12, 13 ],
&gt;   [ 1, 14, 15, 16, 17 ], [ 1, 18, 19, 20, 21 ], [ 2, 6, 10, 14, 18 ],
&gt;   [ 2, 7, 11, 15, 19 ], [ 2, 8, 12, 16, 20 ], [ 2, 9, 13, 17, 21 ],
&gt;   [ 3, 6, 11, 16, 21 ], [ 3, 7, 10, 17, 20 ], [ 3, 8, 13, 14, 19 ],
&gt;   [ 3, 9, 12, 15, 18 ], [ 4, 6, 12, 17, 19 ], [ 4, 7, 13, 16, 18 ],
&gt;   [ 4, 8, 10, 15, 21 ], [ 4, 9, 11, 14, 20 ], [ 5, 6, 13, 15, 20 ],
&gt;   [ 5, 7, 12, 14, 21 ], [ 5, 8, 11, 17, 18 ], [ 5, 9, 10, 16, 19 ] ];; 
gap&gt; gp := GeneralisedPolygonByBlocks( blocks ); 
&lt;projective plane order 4&gt;
gap&gt; l := Random(Lines(gp)); 
&lt;a line in &lt;projective plane order 4&gt;&gt;
gap&gt; pts := ShadowOfElement(gp,l,1);
&lt;shadow points in &lt;projective plane order 4&gt;&gt;
gap&gt; List(pts);
[ &lt;a point in &lt;projective plane order 4&gt;&gt;, 
  &lt;a point in &lt;projective plane order 4&gt;&gt;, 
  &lt;a point in &lt;projective plane order 4&gt;&gt;, 
  &lt;a point in &lt;projective plane order 4&gt;&gt;, 
  &lt;a point in &lt;projective plane order 4&gt;&gt; ]
gap&gt; p := Random(Points(gp));
&lt;a point in &lt;projective plane order 4&gt;&gt;
gap&gt; lines := Lines(p);
&lt;shadow lines in &lt;projective plane order 4&gt;&gt;
gap&gt; List(lines);
[ &lt;a line in &lt;projective plane order 4&gt;&gt;, &lt;a line in &lt;projective plane order 
    4&gt;&gt;, &lt;a line in &lt;projective plane order 4&gt;&gt;, 
  &lt;a line in &lt;projective plane order 4&gt;&gt;, &lt;a line in &lt;projective plane order 
    4&gt;&gt; ]
