[Grasshopper]線の交点を抽出する3つの方法を解説

[Grasshopper]線の交点を抽出する3つの方法を解説 grasshopper

グラスホッパーを使っていると、線の交点を抽出したい場面があると思います。

そこで今回は、線の交点を抽出する方法を、3つ紹介します。

結論から言うと、「Curve | Curve」「Curve | Self」「Multiple Curves」を使うことで交点を抽出することができます。

「Curve | Curve」「Curve | Self」「Multiple Curves」

それでは、1つずつ見ていきましょう。

本記事では、コンポーネントはアイコン表示になっています。

アイコン表示に変えたい場合、以下のリンク先の記事を参考にしてください。

Curve | Curve

Curve | Curve

使用コンポーネント:①Curve ②Curve | Curve

Curve | Curveを使うことで、2つの線の交点を抽出することができます。

2つの線

まずは、交わっている2つの線を、それぞれCurveに格納します。

今回は、上の画像のような2つの線を用意しました。

Curve | Curveにつなげる

その後Curveをそれぞれ、Curve | CurveのA端子とB端子につなげます。

2つの線の交点が抽出される

すると、2つの線の交点が抽出されました。

Curve | Curveから出力されるデータ

使用コンポーネント:①Curve ②Curve | Curve ③LengthPoint

Curve | Curveから出力されるデータを見てみましょう。

P端子からは、交点の点データが抽出されます。

tAからは、1本目の線データのどの場所に交点があるかを教えてくれます。

Lengthを使うと、線の長さを調べることができるので、長さを見てみます。

すると、線の長さが約123だと分かりました。

tAを見てみると、約52です。

これは、交点が1つ目の123の長さの線の、約52の位置にあるということです。

一方でtBからは、2本目の線データのどの場所に交点があるかを教えてくれます。

Reparameterize

Reparameterizeにすることで、交点の位置を0~1で分かるようにできます。

Curve | CurveのAかB端子を右クリックします。

その後、Reparameterizeを選択します。

Reparameterizeにする

これをAとB端子どちらでも行います。

すると、どちらもReparameterizeにすることができました。

線を移動

今回は分かりやすくするため、交点を、1つの線の終点近くに移動させました。

0~1で表示される

するとtAとtBからは、0~1で表示されるようになりました。

0の場合は、交点が線の始点にあり、逆に1の場合は線の終点にあることを意味します。

先程、終点近くに1つの線を移動させたので、tBは約0.98と、1に非常に近い数値になりました。

Curve | Self

Curve | Self

使用コンポーネント:①Curve ②Curve | Self

Curve | Selfを使うことで、1つの線の交点を抽出することができます。

交わっている1本の線

上の画像のような、交わっている1本の線をCurveに格納します。

その後、CurveをCurve | SelfのC端子につなげます。

1本の線の交点が抽出される

すると、このように1本の線の交点が抽出されました。

Curve | Selfから出力されるデータ

使用コンポーネント:①Curve ②Curve | Self ③LengthPoint

Curve | Selfから出力されるデータを見てみましょう。

P端子からは、交点の点データが出力されます。

t端子からは、線の始点からの、交点の位置を教えてくれます。

今回の場合、線の全長は約156です。

t端子を見ると、始点から交点の距離は約16です。

もう一つは、線の約127の位置に交点があります。

Multiple Curves

使用コンポーネント:①Curve ②Multiple Curves

Multiple Curvesを使うことで、複数の線の交点を抽出することができます。

複数の線データ

今回は、上の画像のような、複数の線データをCurveに格納しました。

C端子につなげる

その後、CurveをMultiple CurvesのC端子につなげます。

複数の線の交点が抽出される

すると、このように複数の線の交点が抽出されました。

Multiple Curvesから出力されるデータ

使用コンポーネント:①Curve ②Multiple Curves ③PointList Item

Multiple Curvesから出力されるデータを見てみましょう。

P端子からは、交点の点データが出力されます。

iAとiBからは、それぞれの線の交点のIndex番号が出力されます。

1つ目の交点

List Itemを使い、最初はIndex番号0の点を見てみます。

1つ目の線のiAは、0と表示されています。

1つ目の点

すると、1つの線の上にある、1つの交点が選択されます。

この交点のIndex番号が0です。

2つ目の交点

次は、iBを見てみます。

すると、1つ目の線のiBでは、1と表示されています。

点データのIndex番号1を見てみます。

2つ目の点

すると、1つ目の線の、2つ目の点が選択されました。

このように、iAとiBからは、どの交点のデータなのかを、Index番号から判断できます。

交点の位置

tAとtBからは、それぞれの線のどの位置に交点があるかという、位置を知ることができます。

Index番号0が線の1本目、番号1が2本目、番号2が3本目のデータになります。

今回はReparameterizeにしているので、線の長さが0~1で表されています。

まとめ

まとめ

今回は、線の交点を抽出することができる「Curve | Curve」「Curve | Self」「Multiple Curves」の3つのコンポーネントを紹介しました。

この3つのコンポーネントを活用して、交点を抽出してください。

今回は以上になります。