下载此文档

球面相机旋转算法.doc


文档分类:论文 | 页数:约11页 举报非法文档有奖
1/11
下载提示
  • 1.该资料是网友上传的,本站提供全文预览,预览什么样,下载就什么样。
  • 2.下载该文档所得收入归上传者、原创者。
  • 3.下载的文档,不会出现我们的网址水印。
1/11 下载此文档
文档列表 文档介绍
球面相机旋转这种旋转方式用户体验方式要优于x轴y轴混合旋转方式,模型旋转的方向和鼠标移动方向保持一致。下面给出一种“球面相机”实现旋转的方法。原理:移动鼠标时,通过gluLookAt来改变视点的位置(采用增量的方式),而模型保持不动。即:只进行视点变换,不进行模型变换。下图是用户按下左键,在屏幕上移动的一段距离(从A移动到B)。由于屏幕坐标y轴向下,为了与投影平面坐标系(传统笛卡尔坐标)保持一致。AM=y1-y2; /*将消息代码描述*/BM=x2-x1;建立屏幕和投影变换近裁截面之间的对应关系(如下图)。代码实现:1voidsetSphereCameraPos()2{3    //左键未按下,直接返回4     if(!is_left_button_down)5        return;67    //从聚焦点指向视点的向量 OA向量8     vector3dda(eye-target);910    //计算球面相机半径11     radius=();1213    //将其单位化14     ();1516    //当前相机向上方向与a做叉乘,计算投影面水平向右方向向量u17     vector3ddu=(a);18    //将其单位化19     ();2021    //计算相机向上方向在投影面上的投影向量即垂直向上的方向向量v22     vector3ddv=(u);23    //将其单位化24     ();2526    //计算屏幕AB在投影面上对应的向量AB向量27     vector3ddm=u*+v*;2829    //计算m向量的长度30     doublelen=();31    //降低灵敏度32     len/=;3334    if(len>)35    {36        //角度AOB 弧度表示弧长/半径37         doublex=len/radius;38        //将AB向量单位化39         ();4041        //按相反方向转动视点到C从而使得按与鼠标移动一致的方向转动模型42         x=-1*x;43        //计算新的相机位置C44         eye=target+(a*cos(x)+m*sin(x))*radius;4546        //计算新的相机向上方向47         upvector=v;48    }49}消息代码1LRESULTCALLBACKWndProc(   HWND   hWnd,           //HandleForThisWindow2                          UINT   uMsg,               //MessageForThisWindow3                          WPARAM   wParam,               //AdditionalMessageInformation4                          LPARAM   lParam)               //AdditionalMessageInformation5 {6    switch(uMsg)                                   //CheckFor Windows Messages7     {8    caseWM_LBUTTONDOWN:9        {10            is_left_button_down=true;11            =LOWORD(lParam);12            =HIWORD(lParam);1314            return0;15        }1617    caseWM_MOUSEMOVE:18        {19            if(is_left_button_down)20            {21                =LOWORD(lParam);22                =HIWORD(lParam);//delta_point为增量点23               

球面相机旋转算法 来自淘豆网www.taodocs.com转载请标明出处.

相关文档 更多>>
非法内容举报中心
文档信息
  • 页数11
  • 收藏数0 收藏
  • 顶次数0
  • 上传人文库旗舰店
  • 文件大小28 KB
  • 时间2019-11-20