2013-05-08 57 views
0

我有以下的順序並使用以下變量3個變換:從glRotate()+ glTranslate()到gluLookAt()

glTranslate(dirX, dirY, dirZ); 
glRotate(angleX, 1, 0, 0); 
glRotate(angleY, 0, 1, 0); 

有了這些,我能夠改變我的模型視圖中的3D實現幾個效果(在空間周圍平移物體,圍繞其中心旋轉物體,從原點放大和縮小)。

用相同的變量,並使用gluLookAt(),我要實現的最後2(繞對象的中心,從源頭縮放)

回答

1
target = object_position 
pos.x = zoom * sin(phi) * cos(theta); 
pos.y = zoom * cos(phi); 
pos.z = zoom * sin(phi) * sin(theta); 

pos += target; 

gluLookAt(pos, target, vec3(0, 1, 0)); // up vector is fixed... 

上面的代碼創建了一個「相機」是看着物體中心,並可以旋轉(使用球形座標)。

http://mathworld.wolfram.com/SphericalCoordinates.html