Currently, rotation of particles is emulated by rotating Q. In the future, keep Q=ki-kf invariant, and apply rotations to sample components.
Rotating Q instead of the sample was never more than a workaround. It may have helped to achieve some optimization with minimal coding. But it clearly does not reflect the given geometry, and is now becoming constringing.
In the future, we will have different sample components rotated relative to each other. It will be much more natural to model this by rotation of sample components, than by rotating Q.
In the past, keeping particles unrotated appeared advantageous because form factors were given in terms of x,y,z coordinates. This has completely changed with the reimplementation of the polyhedral form factors, which is based on coordinate-free algebra, with vertex coordinates only appearing in the constructor. This makes particle rotation very easy and fast: Just rotate the vertices in the constructor. Nothing has to change in evaluate_for_q(). Much more efficient than rotating every single Q.