Point tuples — the 7→8 point effect¶
A set of k points can be represented as their join — the outer product of
their embeddings — and recovered from that blade by dualising to the space of
quadrics through the points. In the 3D quadric space this has a subtle
consequence: a join of seven points returns eight.
The Veronese embedding¶
Points are rank-1 symmetric matrices (see Conic space): a
point x is x xᵀ, so the image of P² (resp. P³) under the complete linear
system of quadrics is the Veronese variety.
The dual correspondence (join ↔ net)¶
The join of k points is the k-dimensional subspace spanned by their
embeddings. Its orthogonal complement (Frobenius inner product
<A,B> = tr(AᵀB)) is the (N−k)-dimensional space of quadrics through the
k points, where N = 6 (Q2) or N = 10 (Q3):
So the dual of a k-point join is the IPNS space of quadrics vanishing on those
points, and the points are the common base points of any generating set of that
space. Analysing the blade (analyze_entity, or Geometry.analyze) returns a
PointSet of those points.
Recovering points: dual → intersect → filter¶
Because three quadrics in P³ meet in eight base points (two conics in P² meet in four), recovery is a three-step process:
- Dual the blade to its complement
span{Q1, …, Q_{N−k}}of quadrics through the points. - Intersect three generic combinations
g1, g2, g3of those quadrics — up to eight base points (thekjoin points are a subset). - Filter the candidates to those on all complement quadrics; for
k < 7this selects exactly thekjoin points.
For Q2 (k = 3, 4) step 2 is two_conic_intersection; for Q3 it is
intersect_three_quadrics.
The k = 7 → 8 Cayley–Bacharach phenomenon¶
For k = 7, the complement is a 3-dimensional net of quadrics through the
seven points, and a generic triple in it has eight base points — the seven
originals plus one further point. This is the Cayley–Bacharach theorem in P³:
seven points in general position do not impose independent conditions on
quadrics; the net they span determines an eighth point. Consequently the
analysis of a grade-7 join returns eight points, not seven.
The IPNS dualise step handles this identically: the grade-3 IPNS net dualises to the grade-7 OPNS join, so both representations carry the same eighth point.
Relation to Perwass's conic method¶
Perwass's ConicIntersect.tex intersects two conics through the eigen-
decomposition of M = B⁻¹A — each real eigenvalue yields a degenerate conic
that factors into lines. The quadric work here is the same idea lifted one
dimension: a degenerate conic (line pair) becomes a degenerate quadric (plane
pair / cone), and the point-tuple complement net is intersected in triples.
See Also¶
- Conic space & visualization — embedding, reconstruction, rendering
dev/theory/quadric-point-tuples.md— the full derivationpy/examples/ga/quadric/point_tuples_demo.py— a runnable demonstration