# Circle & Sphere Intersections - CGA vs. PGA or both?

It seems that CGA is the ideal geometry for doing operations on circles and spheres. At the same time PGA can use motors to represent circular objects and seems to work well for most of what I am interested in doing.

Would it make sense to work in CGA for the specific operations where it is advantageous (such as circle intersections), or does it make more sense to just stay in PGA and use motors?

Is there an efficient method of moving objects between the geometries if I want to use both?

Thanks!

You can just embed your PGA elements as the flat objects in CGA, by attaching ^ni to them (ni = n_\infinity). And as long as your results retain this form, you can process then with PGA if you want. (Mathematically, PGA is a subalgebra of CGA.) But round things as rotor orbits can be clumsy, true CGA can be very handy (see my recent paper on Boolean Processing of Circular Arcs, which suggested how to replace the parametrized rotor arc intersection by an orthogonal sphere representation in CGA).

Look for the recent ArXiv paper by Hrdina et al, which has a practical example at the end that shows smooth a transition from PGA to CGA.

Leo Dorst

4 Likes

Thank you!

This is precisely what I was hoping for.

I grabbed both your paper and “Projective Geometric Algebra as a Subalgebra of Conformal Geometric algebra” and will be doing some further reading.

-Joel

Presumably this one: “Boolean Combination of Circular Arcs using Orthogonal Spheres”

Thanks for sharing this Leo, I’m going to try my hand at implementing it!

1 Like

There’s a couple of implementation details to be careful about here.

By PGA one means (I assume) euclidean PGA: P(\mathbb{R}_{3,0,1}^*) .

By CGA one means (I assume) P(\mathbb{R}_{4,1}) in which the set of null points is a model for euclidean geometry.

If you are using this PGA and this CGA, then you’ll need to apply J, aka the “dual coordinate map”, to the elements of PGA before wedging them with n_\infty. That’s because the former algebra is built dually, out of planes (using meet) while the latter is a standard construction, built out of points (using join). J switches between these two coordinate systems.

1 Like