Hi Tom,
Thanks so much. I have found the Python file of Chimera on linux. I currently do not have ChimeraX yet.
I think if one version can be worked out, it is not too hard to make the other version working.
I do not know Python. I would need to ask my collaborator to look into the code.
I am thinking for the cases k=0, or h=k, It is not too hard to implement a spherical icosahedral cage.
This is the diagram for a planner icosahedron definition:
We just need to think the H axis is an arc between two neighboring 5 fold vertices, and K is another arc connecting the origin and the other nearby 5 fold vertice. So the positions of 1, 2, 3, 4 ... would be defined by angles or length on the arc, rather than the length on the line connecting the two 5-fold points.
A quick test can be made by modifying the code of this routine (Linux Chimera): Tools => Higher-order Structure => Icosahedron Surfaces. When the sphere factor = 1. The subdivision can be considered to be a subdivision of the arc that connects two 5 folds. I am not sure what is the best method to draw the lattice lines when the sphere factor is >0 and less than 1, some kind of interpolation function has to be developed.
I do not know how to handle the cases of skewed icosahedron either, ie. h and k are different. It seems very difficult to define the references points and determine how to draw those parallel lines on the spherical surface. I am thinking we have to start with a big spherical triangle.
For example, if we want to define h=3, k=2 lattice (red triangle), we need to draw arcs on a sphere according to the purple triangle. The question is if we think the red triangle is the outline of a spherical triangle of three 5-fold vertices, where the vertices of the purple triangle are. The current version of Chimera can draw any icosahedral lattice beautifully. I think this must have been worked out for the planner cases. The python code must have some clues. I have to think about it more.
Best regards,
Wei