今回は、グラスホッパーで、複数の円を接線でつなげる方法を解説します。

円同士を接線でつなげるには、Tangent Lines (Ex)・Tangent Lines (In)・Tangent Arcs を使うことでできます。

こちらが、Tangent Lines (Ex)の場合です。

こちらが、Tangent Lines (In)の場合です。

こちらが、Tangent Arcsの場合です。

使い方次第で、上の画像のように、複数の円でも応用できます。

また、3つのコンポーネントの説明の後に、余分な線を消す方法も解説します。

厚みを付ける方法も解説します。
それでは、1つずつ説明していきます。
ダウンロードできるデータのご利用に関しては、利用規約をご覧ください。
円の準備
まずは円を2つ作成します。
ライノセラス上で作成してもいいですが、今回はグラスホッパー上で作成します。

使用コンポーネント:①Circle
Circleを使うことで、円を作成することができます。
P端子に、円の中心点の座標(入寮しない場合は、座標0,0,0の位置に作成される)を入力します。
R端子に、半径の数値を入力します。
今回は、半径200の円を0,0,0の位置に1つ、半径300の円を500,500,0の位置に1つ設定しました。

すると、このような2つの円が作成されました。
今回は、この2つの円を使って説明していきます。
Tangent Lines (Ex)

使用コンポーネント:①Circle ②Tangent Lines (Ex)
Tangent Lines (Ex)は、2つの円の直線の接線を作成します。
Tangent Lines (Ex)のAとB端子に、2つのCircleをつなげます。

すると、このように直線の接線が作成されました。

T1とT2端子からは、それぞれの線データが出力されます。

このように、それぞれの線データが出力されていることが分かります。
Tangent Lines (In)

使用コンポーネント:①Circle ②Tangent Lines (In)
Tangent Lines (In)では、2つの接線が交差するように作成されます。
Tangent Lines (In)のAとB端子に、2つのCircleをつなげます。

すると、このように交差する接線が作成されました。

T1とT2端子からは、それぞれの線データが出力されます。

このように、それぞれの線データが出力されていることが分かります。
Tangent Arcs

使用コンポーネント:①Circle ②Tangent Arcs
Tangent Arcsでは、半径を指定することで、曲線の接線を作成することができます。
Tangent ArcsのAとB端子に、2つのCircleをつなげます。
R端子に、半径の数値を入力します。
今回は、400を入力しています。

すると、このような曲線の接線が作成されました。

半径400の円を作成し、比べてみました。
するとこのように、半径400の円の一部が、接線に使われていることが分かります。

右側のAとB端子からは、それぞれの曲線データが出力されます。

このように、それぞれの曲線データが出力されていることが分かります。
3つ以上円がある場合

使用コンポーネント:①Circle ②Tangent系コンポーネント ③Curve
3つ以上円がある場合、それぞれのTangent系のコンポーネントに、円を組み合わせることでできます。
上の画像は、3つの円の場合です。
今回は、内側の線を表示させないため、Curveで外側の線のみ抽出しています。

すると、このような3つの円でも、同様のことができました。
余分な線を消して結合する

内側の余分な線を消して、結合したい場合もあると思います。
そこで、上の画像のような、外側の線だけ残し、結合する方法も解説します。

使用コンポーネント:①Circle ②Tangent系コンポーネント ③Curve | Curve ④Shatter ⑤List Item ⑥Join Curves

最初は、このように余分な線があるところから始めます。

Curve | Curveに、それぞれの円と、接線をつなげます。
これを、円と接線が触れている部分全てで行います。
今回は4か所なので、4つのCurve | Curveを使っています。

すると、このように円と接線の交点のデータが抽出されます。

その後、ShatterのC端子にCircle、t端子にCurve | CurveのtA端子をつなげます。
tA端子からは、点が線のどの位置位あるかというデータがあり、それをShatterを使うことで、その位置で線を分割することができます。

すると、このように接線が触れる位置で、2つの線に円が分割されました。

赤い点の位置で、円が分割されています。

その後、List Itemを使うことで、インデックス番号を指定して外側の線を抽出します。
i端子に、0か1を入力すると、外側か内側の線が抽出されるので、外側の線が抽出される数値を入力してください。

すると、このように外側の線のみが抽出されました。

最後に、Join Curvesを使い、接線とList Itemで抽出した線を結合します。

この際に、Join CurvesのC端子を右クリックし、Flattenにしてください。
今回の場合これをしないと、線が結合されません。

結果として、このように余分な線を消して、結合することができました。
厚みを付ける

使用コンポーネント:①Extrude ②Unit Z ③Cap Holes
厚みを付けたい場合は、ExtrudeのB端子につなげ、D端子に押し出す距離の数値を入力したUnit Zをつなげます。
そして、Cap holesで蓋をすることで、厚みを付けることができます。

このように、厚みを付けることができました。
今回は以上になります。
Comment