2011-11-15 44 views
1

我有一個簡單的模型,我想旋轉360°並朝新的朝向移動。我的問題是當我翻譯模型時,因爲它在(0,0,0)中旋轉而不是在它自己的中心。這是我的代碼:旋轉並在OpenGL中移動到相對中心

void Car::move(void){ 
    if (car_direction > TWO_PI) 
     car_direction -= TWO_PI; 
    else 
     car_direction += TWO_PI; 

    car_x_pos = sin(car_direction)*incMov; 
    car_z_pos = cos(car_direction)*incMov; 

    glPushMatrix(); 
     glTranslatef(car_x_pos, car_y_pos, car_z_pos); 
     glRotatef(RAD_TO_DEG * car_direction, 0, 1, 0); 
     drawCar(); 
    glPopMatrix(); 
} 

* *編輯

我發現這個問題,我是計算錯了x和z正確的代碼是:

void Car::move(void){ 
if (car_direction > TWO_PI) 
    car_direction -= TWO_PI; 
else 
    car_direction += TWO_PI; 

car_z_pos += incMov * cos(car_direction); //correct calculation 
car_x_pos += incMov * sin(car_direction); //correct calculation 


glPushMatrix(); 
    glTranslatef(car_x_pos, car_y_pos, car_z_pos); 
    glRotatef(RAD_TO_DEG * car_direction, 0, 1, 0); 
    drawCar(); 
glPopMatrix(); 

}

現在汽車可以旋轉和移動沒有任何問題。

+2

360度旋轉是無操作的。只是朝着你目前的方向前進。 – genpfault

+0

是的,你是不是指90或180度? – TheBuzzSaw

+0

我的意思是汽車/懸停可以在他的中心360°旋轉,然後移動到新的方向,但問題是當我翻譯它然後中心沒有他的中心是(0,0,0)o想要旋轉總是在他的中心 – fmarin

回答

0

我想你只是把你的訂單倒退了。嘗試先調用旋轉,然後再進行翻譯。