By the way, Vladimir Bulatov told me that he works in the Poincaré model because it resists accumulation of arithmetic errors better than the hyperboloid model.
I wonder... How would that look like with a 16-cell...
http://en.wikipedia.org/wiki/16-cellThat polytope has the remarkable property of being self-dual despite being neither a polygon nor a simplex. It's the sole exception.
Of course you mean the 24-cell. And if infinite lattices are allowed, the (hyper)cubic lattices are also self-dual, as are these hyperbolic lattices: {3,5,3}, {5,3,5}, {5,3,3,5} with finite cells; {4,4,4}, {3,6,3}, {6,3,6} with infinite cells.
Here is a 3D hyperbolic tesselation fragmentarium script. Just *-3-*-5-*-3-* Coxeter symmetry group for now.
There's a more specific notation for the figure shown: x3o5x3x
x means a ring, o means (perversely) no ring
I count 32 Coxeter tetrahedra in H3 (including 23 with vertices at infinity), giving at least 227 uniform tilings (about 14 with vertex at infinity) not counting snubs. I have long wished for the ability to make a picture of each one, but it looks like you're beating me to it.
I have plenty of learning to do if I'm ever to use Fragmentarium. I can't even tell from your code whether it's ray-tracing with mirrors, or makes copies of all those rods ....
By the way, in doing the algebra for hyperbolic geometry, I generally find it easiest on the brain to explicitly call one of the coordinates imaginary (it,x,y,z) rather than try to remember when to use a negative! This lets me treat positively and negatively curved spaces in the same way (up to a point). I can still build the (–+++) signature into my code when the time comes.
... We will need a mean to fix the 6 remaining degrees of freedom (which correspond to the set of orthonormal matrices in 4D). The simplest method I could think of is to set some of the components to 0 like this:
a:(a0,0,0,0); b:(b0,b1,0,0); c:(c0,c1,c2,0) and d:(d0,d1,d2,d3).
Then solve the system of equations.
When the Coxeter symbol has a loop, this pyramid scheme generally doesn't work, in my experience.