【发布时间】:2009-09-24 00:00:19
【问题描述】:
我正在尝试计算旋转矩形 (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);
}
【问题讨论】:
标签: c++ math matrix trigonometry rectangles