zoukankan      html  css  js  c++  java
  • Arcball轨迹球

    Arcball屏幕后面的虚拟轨迹球。Arcball的作用是输入屏幕上的点击或拖动,输出轨迹球的旋转量(旋转矩阵或四元数),用来控制摄像机等物体的旋转。

     https://en.wikibooks.org/wiki/OpenGL_Programming/Modern_OpenGL_Tutorial_Arcball

    1. Convert the screen coordinates (in pixels) to camera coordinates (in [-1, 1])
    2. 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{displaystyle scriptstyle b;=;{sqrt {c^{2}\,-\,a^{2}}}.\,}
      • If P1 or P2 is too far away from the sphere ({displaystyle scriptstyle left|mathbf {OP} 
ight|;>;1}), we normalize it to get the nearest point on the surface of the ball
    3. We have {displaystyle scriptstyle mathbf{displaystyle scriptstyle mathbf {a} cdot mathbf {b} ;=;left|mathbf {a} 
ight|\,left|mathbf {b} 
ight|cos(	heta )}, and the ball's size is 1 ({displaystyle scriptstyle left|mathbf {a} 
ight|;=;left|mathbf {b} 
ight|;=;1}), so we get the angle using {displaystyle scriptstyle arccos left(mathbf {OP1} cdot mathbf {OP2} 
ight)}.
    4. Get the rotation axis in 3D, we compute {displaystyle scriptstyle mathbf {OP1} 	imes mathbf {OP2} }, which will give a unit perpendicular vector
  • 相关阅读:
    Redis使用详细教程
    Web API 强势入门指南
    log4net
    ASP.NET Web API——选择Web API还是WCF
    Hadoop RPC机制
    力扣算法:每日温度
    力扣算法:完全平方数
    力扣算法:岛屿数量
    面试总结二
    面试总结
  • 原文地址:https://www.cnblogs.com/codingdiary/p/7056929.html
Copyright © 2011-2022 走看看