A couple days ago I wrote about homogeneous coordinates projective planes. I said that the lines *y* = 5 and *y* = 6 intersect in a point “at infinity.”

In projective geometry **any** two distinct lines intersect in exactly one point, and you can compute that intersection point the same way, whether the intersection is at a finite point or an infinite point [1].

## Definitions and notation

In my post on projective duality I explained how lines are defined. A line is simply a set of three coordinates, not all zero, just like a point. We used parentheses for triples that represent points, and square brackets for triples that represent lines. All variables come from a field *F*; you can think of *F* as the real numbers but everything here works in general fields.

As we noted in that post, a point (*a*, *b*, *c*) is defined to be on the line [*x*, *y*, *z*] if

*ax* + *by* + *cz* = 0.

Points and lines are **equivalence classes** of triples; multiplying all three components by the same non-zero value gives an equivalent point or equivalent line.

When we want to think of a triple as a vector in a vector space, not a point in a projective plane and not an equivalence class, we used double parentheses. So (*a*, *b*, *c*) would be a representative of a point in the projective plane, and ((*a*, *b*, *c*)) is a vector in *R*³, or more generally *F*³ for a field *F*.

Note that point (*a*, *b*, *c*) is on the line [*x*, *y*, *z*] if the dot product of the vectors ((*a*, *b*, *c*)) and ((*x*, *y*, *z*)) is zero.

## Calculating intersections

Two lines [*a*, *b*, *c*] and [*d*, *e*, *f*] intersect at a point (*g*, *h*, *i*) where ((*g*, *h*, *i*)) is the cross product of ((*a*, *b*, *c*)) and ((*d*, *e*, *f*)).

So to find the intersection of two lines, we take representations of each line, reinterpret the three coordinates as components of a vector rather than a line in projective space, take the cross product of these two vectors, then reinterpret the components as homogeneous coordinates of a point. It’s interesting that this algorithm requires interpreting triples three different ways.

Note that using different representatives of the same lines just results in a different representative of the same intersection point, so the intersection calculation gives a well-defined result.

Next we’ll give two examples: one where lines intersect at a finite point and one where the intersect at a point at infinity.

## Finite example

Consider the lines

*y* = 3*x* + 2

and

*y* = *x* + 4

The lines intersect at the point where *x* = 1 and *y* = 5 in the ordinary plane. If we embed each line in the projective plane and take the intersection there, we get the embedding of the point (1, 5) in the projective plane. Recall that we associate the point (*x*, *y*) in the ordinary plane with (*x*, *y*, 1) in the projective plane.

The line *y* = 3*x* + 2 becomes the line [3, -1, 2] in the projective plane because if

*y* = 3*x* + 2

then the dot product of ((*x*, *y*, 1)) with ((3, -1, 2)) is zero.

Similarly, the line *y* = *x* + 4 becomes the line [1, -2, 4] in the projective plane.

We have the cross product

((3, -1, 2)) × ((1, -2, 4)) = ((-2, -10, -2))

which is associated with the point (-2, -10, 2), which is in the same equivalence class as (1, 5, 1), which is the embedding of the point (1, 5) in the projective plane.

## Infinite example

Now consider the parallel lines

*y *= 5

and

*y* = 6

as in previous posts.

These lines have projective representations [0, -1, 5] and [0, -1, 6].

We take the cross product to find

((0, -1, 5)) × ((0, -1, 6)) = ((-1, 0, 0)).

Now we said in this post that the two lines intersected at (1, 0, 0). But (-1, 0, 0) is equivalent to (1, 0, 0) in homogeneous coordinates, so we get the same result using a cross product that we got before using more direct reasoning.

The important thing to note is that we didn’t have to do anything special for lines that intersect “at infinity.” We execute the same algorithm in any case. If we didn’t realize our lines were parallel (in the ordinary plane: there are *no* parallel lines in the projective plane) we could turn the crank and then notice a 0 in the third coordinate when we’re done. Then we’d know that our intersection point is at infinity, and so the original lines must have been parallel (when considered as lines in the ordinary plane).

[1] Distinguishing some points as infinite and some as finite is an artifact of how we constructed the projective plane and how we think of an ordinary plane sitting inside. There’s nothing special about “points at infinity” other than the way we think of them.