通常のn辺のポリゴンのコーナーを作成するアルゴリズム


10

私は多くのキーワードの組み合わせを使用してこれをグーグルで調べましたが、驚いたことに、通常のn辺のポリゴンを特定の円に構築するためのアルゴリズム、つまりn個のコーナーポイントの座標を見つけることができませんでした。私が見つけることができたのは、物理的なコンパスと定規、またはソースのないインタラクティブなブラウザプラグインでそれを行う方法の説明だけでした。

では、そのようなアルゴリズムはどこにありますか?


2
Googleへの信頼を回復させてください。;-) "algorithm regular polygon"の4番目のヒット:gamedev.net/topic/… "次に、基本的な三角法を使用して、円の周囲に等間隔に配置されたn個のポイントを選択します(つまり、nが3の場合、3個のポイントを選択します互いに120度離れている円周)。」これは、ケビンのコードが正確に行うことです。
Eric

回答:


15

以下とiから行く0 to n-1包括:

pointX[i] = ( sin( i / n * 2 * PI ) * radius ) + xOffset;
pointY[i] = ( cos( i / n * 2 * PI ) * radius ) + yOffset;

編集:Lars Viklundがコメントで述べたように、これは、整数除算が整数ではなく浮動小数点数を返すjavascriptなどの言語でのみ安全です。他の言語では、最初にi浮動小数点数にキャストする必要があります。


3
整数を除算すると整数が得られる言語では、i / nの整数除算のトラップに注意してください。
Lars Viklund、2012年

Aahは非常に良い点です。その警告に答えを追加します。
Elva

これは言うまでもないが、あなたはまた、ケースを防ぐためにたいと思うn * 2 * PI == 0あなたは1つの不幸のポリゴンを:(あるでしょうか。
ザック・ザ・人間の

奇妙なオーバーフローを排除n * 2 * PI == 0すると、私が考えることができる唯一のn は0です。これは、私の知る限り、未定義であり、i / 0と同じです。:)
Elva
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.