Arcball屏幕后面的虚拟轨迹球。Arcball的作用是输入屏幕上的点击或拖动,输出轨迹球的旋转量(旋转矩阵或四元数),用来控制摄像机等物体的旋转。
https://en.wikibooks.org/wiki/OpenGL_Programming/Modern_OpenGL_Tutorial_Arcball
- Convert the screen coordinates (in pixels) to camera coordinates (in [-1, 1])
- Compute the vectors OP1 and OP2, the points at the surface of the ball that match our mouse click
- x and y coordinates are directly taken from the click in camera coordinates
- z coordinate is computed using the classical Pythagorean theorem
- If P1 or P2 is too far away from the sphere (), we normalize it to get the nearest point on the surface of the ball
- We have {displaystyle scriptstyle mathbf, and the ball's size is 1 (), so we get the angle using .
- Get the rotation axis in 3D, we compute , which will give a unit perpendicular vector