4

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

4

2 に答える 2

1

自分がこんなにバカだったなんて信じられない。基本的に、レンダリング ウィンドウは画面よりも小さかったです。画面が長方形の場合、レンダリング ウィンドウは正方形でした。

これが事実であり、私が描いた上向きの三角形は、レンダリング ウィンドウによってクリップされました。私には、三角形が歪んでいるように見えました。本当に、それはちょうど切り取られました!

于 2013-02-09T06:27:37.797 に答える
0

Java 数学ライブラリは、度ではなくラジアンを入力として受け取ります。計算に使用していた角度はわかりませんでしたが、度からラジアンに変換していない場合、歪んだ形状が得られ、計算が正しいことを説明しますが、期待される結果はオフです.

于 2013-01-31T06:50:41.770 に答える