Game Production and Pipeline Services

Geek Zone

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

Old-school way

It's not hard to find the distance of a point p (represented as a position vector p) from the origin : simply compute norm(p).

Neither is it hard to find the distance of a plane P (represented in [N : -d] form) from the origin: it's simply d.

However, according to the information at this link, the process of finding the distance of a line represented homogeneously (in Plücker coordinates) from the origin is more involved.

For a line represented as {U : V}, (with U the line's 3-d direction vector and V the line's 3-d moment vector), its squared distance from the origin is

V , V⟩ / ⟨U , U

so the distance of a Plücker line to the origin is the square root of that.


  • These techniques offer no consistent methodology for determining the minimum distance of a geometric entity to the origin. We have one way of dealing with points, another way of dealing with planes, and yet another way of dealing with lines.


New-school way

Fortunately, GA provides a consistent framework for finding the (squared) distance of a k-flat X to the origin. Define

dX, O2 = || supp(X) || 2 , where supp(X) ∈ R N returns the support vector of X .

Recall that

  • eN + 1-1e N + 1 ≡ [0 : 1] , i.e., the origin of PN + 1

  • dir(X) = (e N + 1-1X) , giving the direction of k-flat X .


  • moment(X) as eN + 1 -1 ⌋ (e N + 1X) , giving the moment of k-flat X .

  • supp(X) is defined as moment(X) / dir(X), with / denoting geometric division if dir(X) is not scalar.

Compare this with the method given further above for the finding squared distance of Plücker line to origin.



  • the squared distance of a k-flat to the origin is equal to the square of its support vector.



Jason WoodComment