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
  • 相关阅读:
    java泛型介绍
    JavaWeb---总结(十九)Session机制
    ServiceWorker入门介绍一
    Ehcache入门介绍一
    Hadoop入门介绍一
    给安卓端调用的短信发送接口demo
    Java开发需要注意的流程
    一些题
    省选模拟3
    省选模拟2
  • 原文地址:https://www.cnblogs.com/codingdiary/p/7056929.html
Copyright © 2011-2022 走看看