嘿,我試圖計算旋轉矩形(2D)的頂點。計算旋轉矩形的頂點
如果矩形沒有旋轉,我很容易,我想這一部分了。
如果矩形已經旋轉,我想到兩種可能的方法來計算頂點。 1)找出如何將頂點從本地/對象/模型空間(我下面想到的)轉換到世界空間。我真的沒有線索,如果這是最好的方式,那麼我覺得我會從中學到很多東西,如果我能想出來......
2)使用trig來弄清楚哪裏的端點矩形相對於世界空間中矩形的位置。這一直是我一直在努力的方式,直到現在我還沒有想出如何。
下面是計算頂點迄今爲止功能,感謝您的幫助
void Rect::calculateVertices()
{
if(m_orientation == 0) // if no rotation
{
setVertices(
&Vertex((m_position.x - (m_width/2) * m_scaleX), (m_position.y + (m_height/2) * m_scaleY), m_position.z),
&Vertex((m_position.x + (m_width/2) * m_scaleX), (m_position.y + (m_height/2) * m_scaleY), m_position.z),
&Vertex((m_position.x + (m_width/2) * m_scaleX), (m_position.y - (m_height/2) * m_scaleY), m_position.z),
&Vertex((m_position.x - (m_width/2) * m_scaleX), (m_position.y - (m_height/2) * m_scaleY), m_position.z));
}
else
{
// if the rectangle has been rotated..
}
//GLfloat theta = RAD_TO_DEG(atan(((m_width/2) * m_scaleX)/((m_height/2) * m_scaleY)));
//LOG->writeLn(&theta);
}
+1 - 我傾向於旋轉回來,然後做任何工作,使生活更簡單。 – 2009-09-24 00:45:43
通過這種方式,您只需執行2個觸發操作(如果在計算任何旋轉的頂點之前存儲'cos(t)'和'sin(t)'的結果)。 – jnylen 2009-09-24 01:55:41
這個公式將如何順時針旋轉? – 2012-09-06 19:35:38