回転した長方形(2D)の頂点を計算しようとしています。
長方形が回転していなければ、それは十分に簡単です、私はその部分を理解しました。
長方形が回転している場合、頂点を計算する2つの方法を考えました。
頂点をローカル/オブジェクト/モデル空間(以下で理解したもの)からワールド空間に変換する方法を理解してください。正直なところわかりませんが、それが最善の方法であるとすれば、それを理解できれば、そこから多くのことを学ぶことができると思います。
三角関数を使用して、長方形の端点がワールド空間内の長方形の位置に対して相対的な位置を何らかの方法で把握します。これは私が今までやろうとしてきた方法でした、私はただその方法を理解していませんでした。
これまでの頂点を計算する関数です。助けてくれてありがとう
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);
}