## Geometric algebra equations for spheres, cylinders, etc.

Higher-dimensional geometry (previously "Polyshapes").

### Geometric algebra equations for spheres, cylinders, etc.

I'll use lowercase letters for scalars (a), lowercase bold for vectors (a), and uppercase for general multivectors (A).

We want to describe some "surface" or "submanifold" of Rn, which is a set of points/vectors {x = x1e1 + x2e2 + ... + xnen}.

An implicit description of the manifold is a set of equations

f1(x) = 0 , f2(x) = 0 , ... , fk(x) = 0,

where each fi is a function from Rn to R. These can be combined into a single vector equation f(x) = 0 (or f(x) = constant), where f is a function from Rn to Rk. The manifold is (n-k)-dimensional (in general).

A parametric description of the manifold is an equation x = f(t), where f is a function from Rk to Rn. We call (t1, t2, ... , tk) the "parameters" or "coordinates". The manifold is k-dimensional (in general).

I'll allow the function f to have multivector inputs and outputs. This isn't really a generalization, because multivectors are equivalent to vectors in an abstract sense; they just have different rules for multiplication, and different interpretations.

Let's focus on implicit equations first.

2 dimensions

Circle : x2 = a2

Line : x^a = B

By taking the dual (multiplying by e1e2), this equation is equivalent to

x.c = d

The line's direction (tangent vector) is a, and its normal vector is c. If ||c|| = 1, then d is the line's distance from the origin.

Pair of parallel lines : ||x^a||2 = d2

or equivalently (x.c)2 = d2

Point : x^a = b

or equivalently x.C = d

where C is a bivector. The wedge product with a scalar (a) is the same as scalar multiplication, which is invertible: x = b/a = constant.

Entire plane : x^A = 0

where A is a bivector.

3 dimensions

Sphere : x2 = a2

Plane : x^A = B

or equivalently x.c = d

The plane's direction (tangent bivector) is A, and its normal vector is c.

Pair of parallel planes : ||x^A||2 = d2

or equivalently (x.c)2 = d2

Line : x^a = B

or equivalently x.C = d

The line's direction is a, and its normal bivector is C.

Cylinder: ||x^a||2 = d2

or equivalently ||x.C||2 = d2

Point : x^a = b

or equivalently x.C = D

where C is a trivector.

Entire space : x^A = 0

where A is a trivector.

4 dimensions

Point : x^a = b

or equivalently x.C = D

Glome : ||x^a||2 = d2

This is getting tedious. Here's the general pattern.

A k-dimensional linear subspace has a direction (tangent k-blade) A, and a normal (n-k)-blade C which is the dual of A. The equation is x^A = constant, or x.C = constant.

A "boundary of a normal tube", or I guess a "spheration", of the subspace x^A = 0, is the set of all points at a certain distance from it. This is isomorphic to the Cartesian product of Rk with the sphere Sn-k-1. The equation is ||x^A||2 = constant, or ||x.C||2 = constant.
ΓΔΘΛΞΠΣΦΨΩ αβγδεζηθϑικλμνξοπρϱσςτυϕφχψωϖ °±∓½⅓⅔¼¾×÷†‡• ⁰¹²³⁴⁵⁶⁷⁸⁹⁺⁻⁼⁽⁾₀₁₂₃₄₅₆₇₈₉₊₋₌₍₎
ℕℤℚℝℂ∂¬∀∃∅∆∇∈∉∋∌∏∑ ∗∘∙√∛∜∝∞∧∨∩∪∫≅≈≟≠≡≤≥⊂⊃⊆⊇ ⊕⊖⊗⊘⊙⌈⌉⌊⌋⌜⌝⌞⌟〈〉⟨⟩
mr_e_man
Trionian

Posts: 138
Joined: Tue Sep 18, 2018 4:10 am

### Re: Geometric algebra equations for spheres, cylinders, etc.

Let's apply this to the (double) hyperbolic plane in R2,1. The equation x2 = -1 describes both sheets. A single sheet has the further restriction that x.y < 0 for any two points on it.

x^a = 0, a2 < 0 describes an antipodal pair of points.

x.a = 0, a2 > 0 describes a geodesic, the intersection of the hyperboloid with the plane through the origin orthogonal to a.

x^B = 0, B2 > 0, with a bivector B, also describes a geodesic, the intersection of the hyperboloid with the plane through the origin parallel to B.

x^a = constant, a2 < 0 describes a pair of points on opposite sheets, not necessarily antipodal.

x^a = constant, a2 = 0 describes a single point, or nothing, depending on the constant.

x^a = constant, a2 > 0 describes a pair of points on the same sheet, or a single point, or nothing.

x^B = constant, B2 > 0 describes a hypercycle (pair), the intersection of the hyperboloid with a plane parallel to B.

x^B = constant, B2 = 0 describes a horocycle, or nothing.

x^B = constant, B2 < 0 describes a circle (which may look like an ellipse to our Euclidean eyes), or a single point, or nothing.

(x^a)2 = constant, a2 < 0 describes an antipodal pair of circles.

(x^a)2 = constant, a2 = 0 describes an antipodal pair of horocycles.

(x^a)2 = constant, a2 > 0 describes four hypercycles.

And here are a few examples in hyperbolic space in R3,1.

x^B = 0, B2 > 0, with a simple bivector B, still describes a geodesic. The bivector can be found as the wedge product (or geometric product, as they're orthogonal) of any point on the geodesic and the tangent vector at that point (the "initial velocity"). Alternatively, the bivector can be found as the wedge product of any two points on the geodesic. A cylinder centred on the geodesic is described by (x^B)2 = constant.

x^a = 0, a2 < 0 describes a single point. A sphere centred on this point is described by (x^a)2 = constant.

x^T = 0, T2 > 0, with a trivector T, describes a geodesic plane. The trivector can be found as the wedge product of any point on the plane and two independent tangent vectors to the plane, or as the wedge product of any three non-collinear points on the plane. A pair of equidistant surfaces is described by (x^T)2 = constant.
ΓΔΘΛΞΠΣΦΨΩ αβγδεζηθϑικλμνξοπρϱσςτυϕφχψωϖ °±∓½⅓⅔¼¾×÷†‡• ⁰¹²³⁴⁵⁶⁷⁸⁹⁺⁻⁼⁽⁾₀₁₂₃₄₅₆₇₈₉₊₋₌₍₎
ℕℤℚℝℂ∂¬∀∃∅∆∇∈∉∋∌∏∑ ∗∘∙√∛∜∝∞∧∨∩∪∫≅≈≟≠≡≤≥⊂⊃⊆⊇ ⊕⊖⊗⊘⊙⌈⌉⌊⌋⌜⌝⌞⌟〈〉⟨⟩
mr_e_man
Trionian

Posts: 138
Joined: Tue Sep 18, 2018 4:10 am

### Re: Geometric algebra equations for spheres, cylinders, etc.

Now to parametric equations.

Point : x = b

Line : x = a t + b

Plane : x = a1t1 + a2t2 + b

k-dimensional subspace : x = a1t1 + a2t2 + ... + aktk + b

where all ai are linearly independent; the direction of the subspace is A = a1^a2^...^ak.

Circle : x = a (e1cos t + e2sin t)

= a e1(cos t + e1e2sin t)

= a e1exp(e1e2t)

= a exp(Bt)

where B is a bivector representing the plane of the circle, and a is a point on the circle, with a^B = 0 (or equivalently aB = -Ba). Also, I've used Euler's formula, which applies because (e1e2)2 = -1. For later generalization, we might want to write this as

x = exp(-Bt/2) a exp(Bt/2)

= R~ a R

where R is a variable (function of t) rotor in the circle's symmetry group.

Cylinder : x = a exp(Bt1) + c t2

where a and B have the same meaning as above for the cross-sectional circle, and c represents the cylinder's axis.

Sphere : x = a ((e1cos t1 + e2sin t1)sin t2 + e3cos t2)

= a e3(cos t2 + (e3e1cos t1 + e3e2sin t1)sin t2)

= a e3exp(t2(e3e1cos t1 + e3e2sin t1))

Now notice this expression which has the form of polar coordinates for the e1e2 plane; we can change variables, to write it in the form of rectangular coordinates:

t2(e1cos t1 + e2sin t1) = u1e1 + u2e2

x = a e3exp(u1e3e1 + u2e3e2)

= a exp(U)

= exp(-U/2) a exp(U/2)

= R~ a R

where a is a point on the sphere (the north pole), U is a variable bivector whose plane contains a (so aU = -Ua), and R is a rotor in the sphere's symmetry group. This group is actually 3-dimensional, though the sphere is 2-dimensional; this corresponds to the fact that a is not moved by rotating in the e1e2 plane. If we allow R to vary through the full 3-dimensional group, then the parametrization is degenerate. As we've written it, with R = exp((u1e3e1 + u2e3e2)/2), it's non-degenerate, but it does not form a group; the product of two different such R's is not another such R.

Instead of rotating a point to cover the sphere, we could rotate a circle. Let's use a 1-variable rotor R = exp(t1e1e2/2), and a 1-variable point y on the circle in the e1e3 plane:

x = a ((e1cos t1 + e2sin t1)sin t2 + e3cos t2)

= a (R~e1R sin t2 + R~e3R cos t2)

= R~ a (e1sin t2 + e3cos t2) R

= R~ y R

Indeed, with this concept we can generate toratopes.

Classical torus : x = a (e1cos t1 + e2sin t1) + b ((e1cos t1 + e2sin t1)cos t2 + e3sin t2)

= a R~e1R + b (R~e1R cos t2 + R~e3R sin t2)

= R~ (a e1 + b (e1cos t2 + e3sin t2)) R

= R~ (a + S~ b S) R

where a = a e1 is the centre of the initial circle, b = b e1 is a vector from its centre to a point on it, S = exp(t2e1e3/2) is a 1-variable rotor that generates the initial circle, and R = exp(t1e1e2/2) is a 1-variable rotor that sweeps the circle around to generate the torus.
ΓΔΘΛΞΠΣΦΨΩ αβγδεζηθϑικλμνξοπρϱσςτυϕφχψωϖ °±∓½⅓⅔¼¾×÷†‡• ⁰¹²³⁴⁵⁶⁷⁸⁹⁺⁻⁼⁽⁾₀₁₂₃₄₅₆₇₈₉₊₋₌₍₎
ℕℤℚℝℂ∂¬∀∃∅∆∇∈∉∋∌∏∑ ∗∘∙√∛∜∝∞∧∨∩∪∫≅≈≟≠≡≤≥⊂⊃⊆⊇ ⊕⊖⊗⊘⊙⌈⌉⌊⌋⌜⌝⌞⌟〈〉⟨⟩
mr_e_man
Trionian

Posts: 138
Joined: Tue Sep 18, 2018 4:10 am 