У меня есть простая модель, которую я хочу повернуть на 360 ° и переместиться в новом направлении. Моя проблема в том, что я перевожу модель, потому что она вращается в (0,0,0), а не в ее собственном центре. Это мой код:
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();
}
** EDIT
Я нашел проблему, я неправильно вычислял 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();
}
Теперь машина может вращаться и двигаться без проблем.