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();
}
現在汽車可以旋轉和移動沒有任何問題。
360度旋轉是無操作的。只是朝着你目前的方向前進。 – genpfault
是的,你是不是指90或180度? – TheBuzzSaw
我的意思是汽車/懸停可以在他的中心360°旋轉,然後移動到新的方向,但問題是當我翻譯它然後中心沒有他的中心是(0,0,0)o想要旋轉總是在他的中心 – fmarin