Game Production and Pipeline Services

Geek Zone

Using GA for intersection testing


Recall that ∼ denotes the geometric dual, and ⌋ denotes the left contraction product (LCP).

Write the intersection of blades A and B as A ∨ B , which is equivalent to ∼A ⌋ B .

  • The intersection of 2-d lines L1 and L2 = ∼L1 ⌋ L2 , which is a 2-d point.

  • The intersection of 3-d line L and plane P = ∼L ⌋ P , which is a 3-d point.

  • The intersection of planes P1 and P2 = ∼P1 ⌋ P2 , which is a 3-d line.

This looks nice and regular, but if we apply it to a pair of 3-d lines, the formula gives us a grade-0 blade, which is a scalar! This is because in 3-d projective GA, lines and dual lines are both bivectors (grade-2).

This scalar is not without meaning, however: it corresponds to the distance between the lines.

So if the lines are skew (i.e., don't intersect), then the distance will be non-zero. If the distance is zero, then the lines intersect in a common plane, which reduces the problem to finding the intersection of lines in two dimensions. More on this later...

Jason WoodComment