B...But... But I had however hidden to your eyes !!!
It is NOT 3D !
Why? If you want to add the 3rd
relative angle, the math op is very very big (more complex than the whole process you find)
The reason? There is an abstracted 'wall' named
gimbal lock.
You can try to discover yourself this very difficult wall :
1st absolute Z rotation : no problem, cos aZ and sin aZ
2nd X rotation : no problem, a cos X which is transformed by the 1st op
3rd Y rotation : no problem, but becomes complex, a cos Z which is transformed by the 2nd rotation, itself transformed by the 1st rotation.
4st op (Z rotation) is unabled : Z has a 'dead' rotation effect due to the cancelling angle got by blend of both perpendicular X and Y angles : this is the gimbal lock.
2 ways to solve this lock :
1) Create a Euler referency, and detach the initial 3D angle for every 3D frame. This prevents you to blend relative rotations (X,Y or Z object rotation axises) with absolute rotations (X, Y or Z world rotation axises). This blend is named
spherical lerp or
slerp.
Cube example --> You can see lots of ops and the slerps (i.e. blend Z object axis with Z world axis
smoothly when X and Y object axises are non-zero) are unabled without 3 times more ops than you can see in this example.
2) Create a Hamilton referency (quaternion), with W, X, Y and Z angles in a hyperspace (4D) which allows you to blend relative and absolute rotation (smoke effects, etc...) and convert from quaternion to Euler on every frame.
Quaternion + Euler converting is lightly lighter in ops quantities than Euler referency, but it is again a lot, and Ogre (or, its basis, OpenGL) has this integrated. That is the reason I told you, that using Ogre 3D was the easier way !
If you do not need to use slerp, you can study and make your own version of the Cube example. In this way, Ogre3D is not required.
But if you want (or not) the slerp, Ogre3D has all for that.
Last remark : EllipticSpiralWithRotation() and EllipseWithRotation() procedures have the same process : all is recorded in a X+Y list. This means that on Ogre3D, you can modify these procedure to create a 3D sphere per vertex, or a full mesh viewing, and not to have to use an image to be textured on a 3D plane entity.