のは、私が六角形のポリゴンの頂点を作成するには、次のコードを使用していましょう:ポリゴンを作成する際に、頂点の間の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