三角形、四角形、五角形、六角形などの正多角形を描画するアルゴリズムを探しています。
基本的には、すべての多角形の点が円の線上にあるという事実を扱っていると思います。
Polygon オブジェクトの N ポイントを計算するアルゴリズムは何ですか? 正多角形を描画した後、最初のものに基づいて別の正多角形を描画する必要がありますが、K 度回転しています。
sin と cos を使用します。
double theta = 2 * Math.PI / sides;
for (int i = 0; i < sides; ++i) {
double x = Math.cos(theta * i);
double y = Math.sin(theta * i);
// etc...
}
回転するには、角度に一定のオフセットを追加するだけtheta * i + offset
です。
-頂点N
多角形の頂点は、角度に配置されています
(2*Math.PI*K)/N
ここでK
、0 から までN-1
(両端を含む) になります。垂直座標は、角度に外接円の半径を掛けたサインとして計算できます。水平座標は、半径に角度の余弦を掛ける必要があることを除いて、同じ方法で計算されます。
ポリゴンをX
度単位で回転させるには、ラジアンに変換X
し、結果を式の角度に追加します。次のようにします。
(2*Math.PI*K)/N + Xrad
最後に、画面の原点がコーナーの 1 つにあるため、ポリゴンの一部のみが表示されます。これを回避するには、計算する各座標に外接円の中心の位置に等しいオフセットを追加します。
sin, cos, radius, 2*PI / 辺とループの数