Opengl - 沿视图平面移动对象(平行或垂直)

时间:2013-08-07 19:12:58

标签: opengl geometry

我想我有一个独特的问题。我有两个对象。一个是静态的立方体。我也有一个想要移动的球体。我的gluLookAt是:

float theta = (float) Math.toRadians(yRot); 
float phi = (float) Math.toRadians(xRot);   
glu.gluLookAt(Math.sin(phi) * Math.cos(theta) * cameraMovementRadius, Math.sin(phi) * Math.sin(theta) * cameraMovementRadius, Math.cos(phi) * cameraMovementRadius, 0, 0, 0, Math.cos(theta), Math.sin(theta), 1);

这只是将相机定位在球形路径上。现在我想沿着视平面移动球体,无论我从哪个天使看立方体。例如:如果我从以下位置查看立方体:phi = 30& theta = 85,那么球体的前后移动应垂直于视平面而不是原点(如下图所示)。我该如何实现这一目标?我所要做的就是改变球体的导航。

       | 
       |
       | Forward & Backward movement of sphere
       |
       |
---------------- View Plane

(Forward & Backward movement viewed from top)



  ___________ Left & Right movement of sphere


---------------- View Plane

(Forward & Backward movement viewed from top)

更新:通过找到平行于视线的方向矢量(摄像机位置和原点),我能够实现向前向后移动。但是,我不能做垂直运动。我知道有无数个垂直向量,但我只需向左或向右,向上或向下移动它。也许我没有以正确的方式看问题!?!

0 个答案:

没有答案