gpt4 book ai didi

c++ - 旋转并移动到 OpenGL 中的相对中心

转载 作者:太空宇宙 更新时间:2023-11-04 14:20:16 25 4
gpt4 key购买 nike

我有一个简单的模型,我想旋转 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();
}

**编辑

我发现了问题,我计算错了 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();

现在汽车可以毫无问题地旋转和移动。

最佳答案

我认为您的订单倒退了。尝试先调用 Rotate,然后再调用 Translate。

关于c++ - 旋转并移动到 OpenGL 中的相对中心,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8141188/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com