繁体   English   中英

生成多边形的顶点

[英]Generate vertices for a polygon

我正在尝试为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();
}

不幸的是,我的三角形永远不对。 它歪斜了很多,尺寸似乎不对......

我想我把大小扔进了错误的公式,有人可以帮忙吗?

编辑:这是一些示例数据多边形测试=新的多边形(新的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

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

在这种情况下,我绘制的任何三角形都被我的渲染窗口剪切了。 对我来说,看起来三角形是倾斜的。 真的,它被剪掉了!

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM