Q, Ki, Kf must be in the scattering plane: move the Q position with the mouse as in 2D
Calculate Qh, Qk, Ql from the screen position.
In VEXPController.js, add functions:
setKiInReciprocalSpaceFromSelection(origin, direction)
setKfInReciprocalSpaceFromSelection(origin, direction)
Arguments origin and direction are vectors get from Three.js raycaster when dragging. See https://threejs.org/docs/#api/core/Raycaster.
The functions calculate the intersection of the ray with the scattering plane and set the new ki and kf points.
Then in the reciprocal view, in the drag function, kiSphere and kfSphere positions are updated from the new ki and kf points.