OpenGL ES レンダラー用の便利な汎用 2D ポリゴン クラスを作成しようとしています。ポリゴンを作成するとき、いくつかのパラメーターを指定します。
Polygon(Vector3 centerpoint, int numVertices, float inPolySize)
次に、頂点を生成しようとします。これは私が苦労しているところです。頂点の数を決定し、角度を取得し、その角度の x/y 位置を見つけ、誰かがサイズを考慮し、位置によってオフセットする必要があります。
OpenGL は、大量のデータ配列を処理します。Vector3 のリストほど素晴らしいものはありません。代わりに、最初のインデックスが X1、2 番目が Y1、3 番目が Z1、4 番目が X2 などの float[] 配列です。
final int XPOS = 0;
final int YPOS = 1;
final int ZPOS = 2;
int mvSize = 3; // (x, y, z);
float[] vertices = new float[mvSize * mNumVertices];
for (int verticeIndex = 0; verticeIndex < mNumVertices; verticeIndex++)
{
double angle = 2 * verticeIndex * Math.PI / mNumVertices;
vertices[mvSize * verticeIndex + XPOS] = (((float)Math.cos(angle)) * mPolygonSize) + mPosition.GetX();
vertices[mvSize * verticeIndex + YPOS] = (((float)Math.sin(angle)) * mPolygonSize) + mPosition.GetY();
vertices[mvSize * verticeIndex + ZPOS] = mPolygonSize + mPosition.GetZ();
}
残念ながら、私の三角形はまったく正しくありません。かなり歪んでいて、サイズが合っていないようです...
サイズを間違った式に入れていると思います。誰か助けてもらえますか?
編集: ここにいくつかのサンプル データがあります Polygon test = new Polygon( new Vector3(0, 1, 0), 3, .5f);
頂点[0] = -0.25
頂点[1] = 1.4330127
頂点[2] = 0.0
頂点[3] = -0.25
頂点[4] = 0.5669873
頂点[5] = 0.0
頂点[6] = 0.5
頂点[7] = 1.0
頂点[8] = 0.0
頂点[9] = -0.25
頂点[10] = 1.4330127
頂点[11] = 0.0