2013-12-18 91 views
1

基本上我有一輛汽車(矩形)在2D空間中移動。 追蹤與其他物體進行基本碰撞檢測的角點。 我無法正確地計算出三角函數。 目前,我有以下幾點:跟蹤正在移動的旋轉矩形的角C++ openGL

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

你正在使用opengl,因爲我看到了,那麼如果你用矩陣旋轉/移動它,你也可以在cpu上得到它們的座標。 –

+1

我知道它很重要,但是真的需要所有這些'this->'前綴嗎?你的代碼是非常不可讀的。 – Shoe

回答

2

不是最簡單的方法,但總是正確的是使用你的地方在對象的場景模型矩陣和繁殖與角落的位置。這將負責翻譯/旋轉/縮放以及它們之間的交互。

在OpenGL中你有MODELVIEW矩陣。這是模型矩陣乘以視圖矩陣(或相機)。您可以重新計算模型矩陣(任何矩陣庫將幫助您在這裏)。或者將MODELVIEW與倒轉的VIEW矩陣相乘。你可以用glGetMatrix來獲得它們。