比方說,我用下面的代碼來創建一個六邊形的多邊形頂點:如何創建一個多邊形時頂點之間添加n個點
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):
. . .
. .
. . .
編輯:這裏是根據沃爾克的建議,我當前的代碼:
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));
}
該地塊的附加頂點,但他們不在正確的位置。
編輯:似乎這是行不通的,因爲我沒有考慮到第一個頂點的位置。
尼斯。 @lepton注意到Volker的代碼中的'n'應該等於頂點之間所需的段數,即1 +額外點的數量(認爲圍欄和圍欄帖子) – SirRaffleBuffle
謝謝你們。我添加了Volker建議的內部循環(請參閱已編輯的OP),但額外的頂點未被繪製在正確的位置,它們被繪製在六邊形內而不是主頂點之間。任何想法,我要去錯了嗎? – lepton
當您將xe,ye添加到hexagonPoints時,您必須切換到下一行的開頭,即x = xe; y = ye; – milbrandt