## Calculating duals

### Calculating duals

I was looking at the vertex figure of the scaliform polychoron "bidex", and I noticed that when stella makes the dual it comes out a little skewed. It's supposed to be self-dual (as can be seen by the cell of the dual of bidex and because it's both a partial stellation of the dodecahedron and a partial faceting of the icosahedron) but the edge lengths come out a little off when stella makes the dual. I was wondering how stella calculates duals with these type of polyhedra.

- robertw
- Site Admin
**Posts:**561**Joined:**Thu Jan 10, 2008 6:47 am**Location:**Melbourne, Australia-
**Contact:**

### Re: Calculating duals

Duals are computed using spherical reciprocation. But this requires choosing a centre of reciprocation. For polytopes with a centre of symmetry there's an obvious choice, eg in 3D anything with dihedral, tetrahedral, octahedral or icosahedral symmetry, but not pyramidal symmetry, which has an axis of symmetry and it's not obvious where to put the centre. Even worse if there's no symmetry at all. So my guess is that bidex doesn't have a centre of symmetry at a single point.

Stella just uses the centre of mass of the vertices (average of vertex positions), which is always right when there's a centre of symmetry. Pyramids are self-dual, but their duals are generally distorted in Stella. Bizarrely, to get a true self-dual of J2 the pentagonal pyramid, the centre of reciprocation has to go OUTSIDE the polyhedron, just above the apex. There's been discussion about how to select the "best" centre of reciprocation, but no one ever came up with a good generic algorithm. There was an ingenious solution for convex polyhedra (though I can't remember if it worked when the centre needs to go outside) but it wasn't easily implemented, and still no general solution for non-convex polyhedra.

Also, some polytopes are said to be self-dual when this is really only true in a topological sense, but can't be achieved geometrically. I think J7 might be one of those.

Stella just uses the centre of mass of the vertices (average of vertex positions), which is always right when there's a centre of symmetry. Pyramids are self-dual, but their duals are generally distorted in Stella. Bizarrely, to get a true self-dual of J2 the pentagonal pyramid, the centre of reciprocation has to go OUTSIDE the polyhedron, just above the apex. There's been discussion about how to select the "best" centre of reciprocation, but no one ever came up with a good generic algorithm. There was an ingenious solution for convex polyhedra (though I can't remember if it worked when the centre needs to go outside) but it wasn't easily implemented, and still no general solution for non-convex polyhedra.

Also, some polytopes are said to be self-dual when this is really only true in a topological sense, but can't be achieved geometrically. I think J7 might be one of those.

### Re: Calculating duals

I see what your saying, but since the vertices of this bidex vertex figure all lie on a sphere, shouldn't stella pick the center of that sphere? That would solve the J2 problem also.

- robertw
- Site Admin
**Posts:**561**Joined:**Thu Jan 10, 2008 6:47 am**Location:**Melbourne, Australia-
**Contact:**

### Re: Calculating duals

Hmm, maybe, although that would still be wrong in the simple case of J2. It would lead to a centre outside the polyhedron, and not the point that would lead to a self-dual, so it might be kind of odd.

This centre is also used as the centre of rotation, by the way, so the J2 would look odd rotating around a point below its base.

But I guess it could be a worthwhile strategy when the point lies inside.

Note: there's already an option to change what centre is used. See the "Poly->Centre for Reciprocation" submenu, including the circumcentre option. However it's not implemented in 4D. So what you probably really want is for that to be implemented in 4D, then you could try the circumcentre.

This centre is also used as the centre of rotation, by the way, so the J2 would look odd rotating around a point below its base.

But I guess it could be a worthwhile strategy when the point lies inside.

Note: there's already an option to change what centre is used. See the "Poly->Centre for Reciprocation" submenu, including the circumcentre option. However it's not implemented in 4D. So what you probably really want is for that to be implemented in 4D, then you could try the circumcentre.

### Re: Calculating duals

I was looking at the 3D implementation of it, and that menu option did fix the problem. Thanks!