Slicer doesn't show rotation slider value corresponding to a transform after rotation axis is not cannonical

The problem is that it would be impossible to compute the value of those 4 sliders from a 4x4 matrix. To summarize the requirements:

  1. invertible conversion between parameters (adjusted by the sliders) and 3x3 orientation matrix
  2. meaningful parameter values
  3. rotation along a stationary axis when any of the parameters are changed
  4. slight change of orientation when parameters are slightly changed (smooth orientation change, no jumps)

I believe it is impossible to fulfill all these requirements. I don’t think any other software managed to solve this. There are many ways to solve this if we relax a few requirements, but which requirements to relax depends on the application (probably you would not use the same parameterization for a fluoroscopy C-arm as for a knee joint angle). Application-specific transform editing sliders are added in extensions (e.g., we’ll release a C-arm simulator in SlicerHeart soon and it has meaningful C-arm angle display and editing with sliders).

Currently in Slicer core we avoid any particular parametrization. Using slider widgets for this is probably a bit confusing, the proper representation would be a jogwheel control, but there is no suitable built-in control in Qt.

Horizontal jogwheel control (looks similar to a slider but it can be dragged at any point, there is no handle; would be usable instead of a Slicer, but it is not a built-in Qt feature):

image

Round jogwheel control (available in Qt as QDial - unfortunately, it is very inconvenient to use, as the user needs to move the mouse pointer in a circular pattern to adjust it):

image