基本上我有一个在2d空间移动的汽车(矩形)。 跟踪角落以与其他对象进行基本碰撞检测。 我无法正确地计算出我的三角函数。 目前我有以下内容:
this->FL.x = this->position.x - this->C_width/2*cos(this->spinY*pi/180) + this->C_length/2*sin(this->spinY*pi/180);
this->FL.y = this->position.z + this->C_length/2*sin(this->spinY*pi/180) - this->C_width/2*cos(this->spinY*pi/180);
this->FR.x = this->position.x + this->C_width/2*cos(this->spinY*pi/180) + this->C_length/2*sin(this->spinY*pi/180);
this->FR.y = this->position.z + this->C_length/2*sin(this->spinY*pi/180) + this->C_width/2*cos(this->spinY*pi/180);
this->BL.x = this->position.x - this->C_width/2*cos(this->spinY*pi/180) - this->C_length/2*sin(this->spinY*pi/180);
this->BL.y = this->position.z - this->C_length/2*sin(this->spinY*pi/180) - this->C_width/2*cos(this->spinY*pi/180);
this->BR.x = this->position.x + this->C_width/2*cos(this->spinY*pi/180) - this->C_length/2*sin(this->spinY*pi/180);
this->BR.y = this->position.z - this->C_length/2*sin(this->spinY*pi/180) + this->C_width/2*cos(this->spinY*pi/180);
答案 0 :(得分:2)
不是最简单的方法,但总是正确的方法是使用MODEL矩阵将对象放置在场景中并将角落的位置与其相乘。这将负责翻译/轮换/缩放及其与您的互动。
在OpenGL中,您有MODELVIEW矩阵。这就是模型矩阵乘以视图矩阵(或相机)。您可以重新计算模型矩阵(任何矩阵lib都可以帮助您)。或者将MODELVIEW与反转的VIEW矩阵相乘。你可以用glGetMatrix获得它们。