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
  • 相关阅读:
    操作系统---学习笔记00
    操作系统---学习笔记0
    2015/07/16入园啦!
    1-1 console的用法
    2.3 js基础--DOM
    1.2 js基础
    1.1 js基础
    信息收集(1)
    Android概述
    从一次失败的比赛经历引发的思考
  • 原文地址:https://www.cnblogs.com/codingdiary/p/7056929.html
Copyright © 2011-2022 走看看