4

我正在尝试为 OpenGL ES 渲染器制作一个有用/通用的 2D 多边形类。当我创建一个多边形时,我给它几个参数:

Polygon(Vector3 centerpoint, int numVertices, float inPolySize)

然后,我尝试生成顶点。这是我遇到困难的地方。我需要确定顶点的数量,得到一个角度,找到该角度的 x/y 位置,有人考虑大小,并按位置偏移。

OpenGL 可以处理大量数据。没有什么比 Vector3 的列表更好的了。相反,它是 float[] 数组,第一个索引是 X1,第二个是 Y1,第三个是 Z1,第四个是 X2,等等......

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

我不敢相信我这么愚蠢。基本上,我的渲染窗口比我的屏幕小。如果我的屏幕是一个矩形,那么我的渲染窗口就是一个正方形。

This being the case, any triangle I draw that was up was clipped by my render window. To me, it looked like the triangle was skewed. Really, it was just clipped!

于 2013-02-09T06:27:37.797 回答
0

Java 数学库将弧度作为输入,而不是度数。我没有看到您用于计算的角度,但如果您没有从度数转换为弧度,您会看到一些倾斜的形状,并会解释您的计算是正确的,但预期的结果是错误的。

于 2013-01-31T06:50:41.770 回答