極座標を用いて星型多角形(N芒星)を描く方法について

はじめに

星型多角形(N芒星)を描くための極方程式についての解説。
応用例は【Shader Graph】星型多角形(N芒星)を描くを参照。

描画結果

Desmosを使って描画した

https://raw.githubusercontent.com/sotanmochi/ProceduralShapesShaderPack/main/Docs/StarPolygon/Desmos_StarPolygon.png

https://raw.githubusercontent.com/sotanmochi/ProceduralShapesShaderPack/main/Docs/StarPolygon/Desmos_StarPolygon_Round.png

解説

極座標における正多角形の公式は以下のように表せる(参考文献 [1] [2])。


\rho = \frac{\text{cos} \left( \frac{2 \, \text{arcsin} (k) \, + \, \pi m}{2n} \right)}
            {\text{cos} \left( \frac{2 \, \text{arcsin} (k \, \text{cos} \left( n \phi \right)) \, + \, \pi m}{2n} \right)}
\, \cdots \, (1)

 \rho:動径
 \phi:角度
 n:凸型の頂点の数
 m:何個の頂点を経て辺が同一直線上に並ぶかを決定する値
 k:剛性。 k=0では他のパラメータに関係なく円、 k=1では直線を含む多角形、 0 \lt k \lt 1の中間値では円と多角形の中間的な図形が得られる。

星型多角形を描くために  k = 1, m = 3 の場合の式を導出する。

式(1) に  k = 1 を代入すると、


\rho = \frac{\text{cos} \left( \frac{2 \, \text{arcsin} (1) \, + \, \pi m}{2n} \right)}
            {\text{cos} \left( \frac{2 \, \text{arcsin} (\text{cos} \left( n \phi \right)) \, + \, \pi m}{2n} \right)}

となり、 \text{arcsin}(1) = \frac{\pi}{2}, \, \text{arcsin}\, x = \frac{\pi}{2} - \text{arccos}\, x より


\rho = \frac{\text{cos} \left( \frac{\left( m + 1 \right) \, \pi}{2n} \right)}
            {\text{cos} \left( \frac{\left( m + 1 \right) \, \pi}{2n} \, - \, \frac{\text{arccos} \left( \text{cos} \left( n \phi \right) \right)}{n} \right)}

となる。

さらに  m = 3 を代入すると、以下の式(2)が得られる。


\rho = \frac{\text{cos} \left( \frac{2 \, \pi}{n} \right)}
            {\text{cos} \left( \frac{2 \, \pi}{n} \, - \, \frac{\text{arccos} \left(\text{cos} \left( n \phi \right) \right)}{n} \right)}
\, \cdots \, (2)

式(2) を用いることで、N芒星( n \ge 5)を描くことができる。
式(2) は参考文献 [3] に示されている星型多角形の式を極方程式の形で表したものと等しい。

また、 k の値を変化させる( 0 \le k \le 1)ことによって、図形の丸みを変化させることができる。
 k の値を変化させる場合には、式(1) に  m = 3 のみを代入した、以下の式(3)を用いる。


\rho = \frac{\text{cos} \left( \frac{\text{arcsin} (k)}{n} \, + \, \frac{3 \pi}{2n} \right)}
            {\text{cos} \left( \frac{\text{arcsin} (k \, \text{cos} \left( n \phi \right))}{n} \, + \, \frac{3 \pi}{2n} \right)}
\, \cdots \, (3)

参考文献