Grasshopperユーザーの皆さん、こんにちは!今回は「360度を超える円弧」という、一見するとシンプルなようで実は奥深いテーマについて掘り下げていきます。Rhino/Grasshopperの標準的な機能では難しいとされるこの課題を、NURBS曲線を活用してスマートに解決する方法をお伝えします。
標準Arcコンポーネントの限界: 問題提起
Grasshopperの`Arc`コンポーネントは非常に便利ですが、その定義域は通常360度(2πラジアン)以内に制限されています。もしこの制限を超えて角度を設定しようとすると、Grasshopperは「結局、円が作りたかったんでしょ?」と言わんばかりに、完全な円を描いてしまいます。これは、曲線が特定の範囲内で閉じていることを前提としているためです。しかし、時には360度を超えても連続するような、例えば「平坦なヘリックス」のような曲線が必要になることがありますよね。
「平坦なヘリックス」の概念: 解決へのヒント
「平坦なヘリックス」という言葉は、今回の課題を解く上で重要なヒントになります。通常のヘリックス(螺旋)は、XY平面上で回転しながらZ軸方向に上昇または下降する3D曲線です。これを「平坦」にするということは、Z軸方向の動きを極めて小さくするか、完全にゼロにすることで、XY平面上に投影されたような、しかし360度を超えても途切れない曲線を作成するということです。これは、標準の`Arc`コンポーネントでは対応できない、自由な形状のNURBS曲線として実現できます。
極座標とNURBS曲線で実現: 実践ロジック
この問題を解決するには、数学的なアプローチ、特に極座標の概念を利用するのが効果的です。極座標では、点の位置を原点からの距離(半径r)と、X軸からの角度(θ)で定義します。この角度θを360度以上に設定することで、連続した回転を表現できます。そして、これらの点群を`Interpolate Curve`や`Nurbs Curve`コンポーネントでつなぎ合わせることで、目的の曲線を作成します。
具体的なGrasshopperの操作: ステップバイステップ
具体的なGrasshopperの操作を見ていきましょう。
1. まず、曲線の「半径」と「回転角度の最大値」(例: 720度や1080度など)、そして曲線を構成する点の「分割数」を`Number Slider`で定義します。
2. 回転角度の最大値を`Degrees to Radians`コンポーネントでラジアンに変換します。
3. `Range`コンポーネントを使って、0から変換したラジアン値までの連続した角度の数列を、定義した分割数で生成します。
4. 生成された各角度に対して、`Sine`コンポーネントでY座標、`Cosine`コンポーネントでX座標を計算します。これに半径の値を`Multiply`コンポーネントで乗算します。
5. Z座標は、別の`Number Slider`で非常に小さい値(例えば0.01など)を設定するか、完全に0にすることで「平坦」さを表現します。螺旋状にしたい場合は、角度に比例してZ値を増やすように設定します。
6. これらX, Y, Zの各座標を`Construct Point`コンポーネントに入力し、点群を作成します。
7. 最後に、作成された点群を`Interpolate Curve`コンポーネントに接続します。これで、360度を超えても連続する、自由なNURBS曲線が完成します。必要に応じて`Nurbs Curve`コンポーネントで次数(Degree)を設定することも可能です。
まとめと応用: さらなる可能性
このように、Grasshopperの標準コンポーネントの限界に直面しても、少し視点を変えてNURBS曲線の原理や数学的なアプローチを活用することで、より複雑で自由な形状を実現できます。今回ご紹介した「360度を超える円弧」の作成ロジックは、建築デザインにおける階段の手すりや、プロダクトデザインにおける複雑な曲線のモデリングなど、様々な場面に応用できるでしょう。ぜひ皆さんのプロジェクトで試してみてくださいね!