I've read a number of tutorials on Clifford algebra, but I am still unsure of some elementary concepts. For starters, how would I represent a vector in a 2D vector field as a Clifford multivector? For 2D, a multivector is given by A = a0*1 + a1*e1+a2*e2 + a3*e1e2, where 1 is a scalar, e1 and e2 are vectors in the Clifford basis, and e1e2 is a bivector. If I had a vector (1,2) at position (3,4), what would its multivector be? I want to say A = (3,4) + 1*e1 + 2*e2, but I believe a0 needs to be a scalar, yet I don't see how else I would represent the (3,4) shift from the origin. Second, suppose I miraculously found the Clifford algebra representation and did some operation that gave rise a multivector with contributions from the vector and bivector components (ie a0 through a3 are nonzero): in order to project back to Euclidean basis, would i merely retain only the a0 through a2 coefficients and set a3 to zero? Or must I do something to project the bivector component into the Euclidean space? Thanks for your help!
Where a vector's tail sits has to be represented separately from the vector, and I don't think that is necessarily any different when using Clifford Algebra unless you introduce some mechanism for encoding that translation. Are you asking about representations of lines in Clifford algebras? For example, a standard parametric representation for points x on a line with points a and b on the line is: [tex] x = a + \alpha (b-a) [/tex] you can rewrite this as [tex] (x - a) = \alpha (b-a) [/tex] Then wedge both sides with (b-a): [tex] (x - a) \wedge (b-a) = 0 [/tex] This produces a bivector representation of the line equivalent to the original parameterized equation. Points x on the line will be colinear with the direction vector (b-a), so the wedge product is zero.
Thanks Peeter, that part makes sense as you've explained it. I'm still a bit perplexed as to how I might implement an FFT of a 2D field of vectors (Clifford Fourier Transform on Vector Fields, Ebling,Scheuermann,2005) , which requires representing a point as F = F_0*1 + F_1*e1+F_2*e2+F_12*e12 and using the duals e2<->i2e1 and e12<->i2 this reduces to F(x) = 1[F_0(x) +F_12(x)i2] + e1[F_1(x) +F_2(x)i2] All this kind of makes sense in an abstact sense, but I wouldn't know where to begin if I wanted to program this representation for a 2D field with a vector at each point. Would you be able to explain a small example in this basis or know of a tutorial that would walk through these steps with real numbers? Thanks again for your patience and help! pete
Hi Pete, Again I think that your representation issue probably has to be thought through independent of any Clifford Algebra context. If you wanted to represent a vector and it's origin throughout space, then a pair of vectors is not really enough information. Suppose you represented the base of a 2D vector as a complex number B and it's length and magnetude as another complex number P. Then is a vector formed out of this pairing: [tex] V = (B, P) [/tex] really a good representation? I don't think so (consider addition, and what it does to the B values). You probably want a representation something like the computer graphics matrix representation of a point. For this 2D case you could probably use [tex] V = \begin{bmatrix} B & 0 \\ P & 1 \end{bmatrix} [/tex] Points with a representation like this can be added. Rotation and scaling are matrix operations of the form [tex] \begin{bmatrix} T & 0 \\ 0 & 1 \end{bmatrix} [/tex] And since you have the 1 value in the corner you can rescale your origin after any arbitrary sequence of operations (there's a name for this sort of representation in CG but its been 10 years since school where I used it so I forget that part). I'd conclude that you need at least five real coordinates for your 2D vector field representation problem (one to encode the scale factor). Once you get as far as picking a representation for this sort of vector field space, if desired I'd imagine that there would be a number of possible multivector representations that you could pick from to encode it, just as you have freedom to pick how you want to do so with a matrix representation (could use three by three matrixes with a 2x2 point representation, and 2x1 origin, plus a 1 and two zeros).
OK, will try messing around with that. I believe its called something like 'homogenous coordinates', which like you said, can allow you to translate a point with a matrix multiply. Wish I made that connection initially! For the matrix representations in the Clifford basis, I'm pretty much free to chose anything so long as they satisfy orthogonality, their duals, etc, right? Thanks pete