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 Wood
3-d software engineer and humanist. Programming Languages: * 15+ years C/C++ coding experience. * Some experience with Java and D. * Experienced with Second Life scripting (LSL). * Exposure to Lua. Skills: * Extremely knowledgeable about rendering technologies / engines (15+ years experience). * Strong skills with topics in Linear & Geometric Algebra, game physics, collision detection, Machine Learning. * Some experience with Blender and GIMP. Platforms: * Daily use of MSVC and git. * Some Linux experience. Work experience: * GameFusion, Paris, France (2009- present) * Oddworld, SLO, CA (2001) * Wild Tangent, Redmond, WA (2000-01) * Eclipse Entertainment, Austin, TX (1998-99) * Titanic Entertainment, Austin, TX (1998)
Previous
Previous

Squared distance of point, line or plane to origin in GA

Next
Next

Using GA to test if a point lies on a line