gpt4 book ai didi

java - 创建多边形时如何在顶点之间添加n个点

转载 作者:行者123 更新时间:2023-11-29 08:34:29 24 4
gpt4 key购买 nike

假设我正在使用以下代码在六边形多边形中创建顶点:

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));
}

这绘制了额外的顶点,但它们的位置不正确。

编辑:这似乎不起作用,因为我没有考虑第一个顶点位置。

最佳答案

像您已经做的那样计算每一边的端点。然后用内循环引入额外的 split 点。

for (int i=1; i<n: ++i)
{
float xs = ((n-i)*xb + i*xe)/n;
float ys = ((n-i)*yb + i*ye)/n;
hexagonPoints.add(new Vector(xs, ys));
}
hexagonPoints.add(new Vector(xe, ye));

其中 xb, yb 是六边形边的起点,xe, ye 是终点。

关于java - 创建多边形时如何在顶点之间添加n个点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45400847/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com