【发布时间】:2017-07-30 14:26:27
【问题描述】:
假设我正在使用以下代码在六边形多边形中创建顶点:
hexagonPoints = new Array<Vector2>();
for (int a = 0; a < 6; a++)
{
float x = r * (float)Math.cos(a * 60 * Math.PI / 180f);
float y = r * (float)Math.sin(a * 60 * Math.PI / 180f);
hexagonPoints.add(new Vector2(x, y));
}
如何沿多边形的每一边添加额外的点,以便在每个连接的顶点集之间有 n 个额外的点?所有顶点的距离必须相等(包括形成初始形状的顶点)。例如。之前:
. .
. .
之后(其中 n = 1):
. . .
. .
. . .
编辑:这是我目前根据 Volker 的建议编写的代码:
float r = 3.0f;
int n = 1 + 2; // number of additional vertices between the main shape vertices
for (int a = 0; a < 6; a++)
{
float xe = r * (float)Math.cos(a * 60 * Math.PI / 180f);
float ye = r * (float)Math.sin(a * 60 * Math.PI / 180f);
if (a > 0)
{
for (int i = 1; i < n; ++i)
{
float xs = ((n - i) * hexagonPoints.get(a - 1).x + i * xe) / n;
float ys = ((n - i) * hexagonPoints.get(a - 1).y + i * ye) / n;
hexagonPoints.add(new Vector2(xs, ys));
}
}
hexagonPoints.add(new Vector2(xe, ye));
}
这会绘制额外的顶点,但它们的位置不正确。
编辑:似乎这不起作用,因为我没有考虑第一个顶点位置。
【问题讨论】: