我正在尝试计算旋转矩形(2D)的顶点。
如果矩形没有被旋转,这很容易,我想出了那部分。
如果矩形已经旋转,我想到了两种可能的方法来计算顶点。
弄清楚如何将顶点从本地/对象/模型空间(我在下面找到的)转换到世界空间。老实说,我不知道,如果这是最好的方法,那么我觉得如果我能弄清楚的话,我会从中学到很多东西。
使用 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);
}