質問: ### 前提 OpenGLのテクスチャで、左に90度回転した画像が格納されているとします。 ### 実現したいこと これを画面に表示するために、今度は右に90度回転させたUV座標を求めたいです。 ### 前提条件 UV座標は、position(テクスチャ上の開始位置)、size(テクスチャ上のサイズ)として二次元ベクトルで表現しています。 表示したい画像は矩形のため、左上座標から描画を始めて、4ポイントをGL_TRIANGLE_STRIPで描画を行っています。 描画順序は、左上、左下、右上、右下の順に頂点座標とUV座標を設定しています。 ### 知りたいこと 右に90度回転した適切なpositionとsizeを知りたいです。 簡単な座標変換だとは思うのですが、これがなかなかわからず苦戦しております。
回答: C,C++の関数で頂点座標を回転処理を行うならこんな感じのプログラムになります。 ラジアン(Radian)は自分でお調べ下さい。 Vector2に関してはfloat型のxとy軸を保持する構造体です。 ``` void axis2D(Vector2& out, const Vector2& origin/*原点*/, const Vector2& pos, const float& radian){ Vector2 vec = Vector2(pos.x - origin.x, pos.y - origin.y); out.x = ((vec.x * cosf(radian)) - (vec.y * sinf(radian))) + origin.x; out.y = ((vec.x * sinf(radian)) + (vec.y * cosf(radian))) + origin.y; } ``` 引き続き頑張って下さい。