
【Grasshopper × Python】正n角形作図プログラム
目的
Grasshopperを用いて、正n角形(nは小数も可能)を作成する方法を解説します。GHPython(PythonのGrasshopperバージョン)というプログラミング言語を用いて作成しています。
Process
GHPythonを用いて、以下のように繋いでください。
また、GHPythonについては、
start:point3D
vec:vector3D
ax:vector3D
上記の型に変更しておいてください。
*右クリックで変更できます。
今回、正n角形の定義を、
「内角が360/nで、全ての辺・角の長さ・大きさが等しいこと」
とします。

rsを宣言します。

開始点を現在の点と定義します。

出力用のリストを作成します。

forループで100手先まで、
ベクトルを回転 → 点を配置
を繰り返します。

元の位置(次の開始点)に戻す定義をし、現在の点とベクトルをappendします。
*appendとは、リストに格納するモジュール。

ここで、ひと工夫!
nがどの値であっても100手先まで計算させる必要はありません。
移動した点が原点に帰ったら終了と定義します。
こうすることで計算量を減らすことができます。
*例えば、3角形を100手先まで計算するのではなく、3手で完結させることができます。

完成です!
今回の正n角形の定義は小数点にも対応しています。
下の図は、正2.3角形です。

パラメトリックに変化させることで、意匠的なデザインを描くことができます。
下の図は正5.1角形ですが、よく目を凝らせば何か見たことある形かもしれません。(想像は無限大)

おわりに
Digitectは「建築×デジタル技術」に焦点をあて活動しています。Digitectのホームページに色々なコンテンツや紹介が載っているので見ていただけると嬉しいです。
※すべての著作権はDigitect(デジテクト)に帰属します。