Grasshopper

algorithmic modeling for Rhino

クラスEの経験を元に、とりあえずpythonやってみました。

こんにちは。

クラスEを受けた小野です。

classの概念はまだよくわかっていないのですが、def ~はなんとなくわかったような気がするので、今回の経験を元に他のpythonチュートリアルをやってみたのですが、ちょっと不明なところがあります。

このようなツリー上のポリラインを引くコードのようなのですが、添付してあるGHデータには2つの関数が使用されています。(関数という呼び方でいいんですよね…?)

このmakeptという部分はVectorunitizeでベクターを定義してそこにポイントを作成する。という内容でs理解はできたのですが、その下の"re"という関数で、なぜ枝分かれして分岐していくのかがわかりません。

上記の状態で問題なく動いているのですが、"gens"の数値が1以上の場合、

linelistになんのpolylineが入っているのかがわかりません。

もしご存知でしたらご教授お願いします。

表示: 1226

添付ファイル

このディスカッションに返信

こんばんは、堀川です。

これは再帰(Recursion)という手法をpythonで実現したものです。http://ja.wikipedia.org/wiki/%E5%86%8D%E5%B8%B0

作った関数の中で、その関数自身を階層として何回も呼び出すことで上図のようなフラクタル描写を実現することができます。

プログラムでは、gensが1になったとき、linelistにpolylineが入るようになっています。なので、1より大きいときにはlinelistには何もいれていません。

gensは、re()の中で再度re()を呼び出す度に-1されているので、1より大きくてもいつかは1になって、そのとき初めてlinelistの中にpolylineが入るという形です。

そして、gensが0のとき、はじめてre()の計算がおわります。なので、if gens >0: の条件を取り除くとずっと計算し続けようとしてGHが止まってしまいます。

堀川さんへ

なるほど!たぶんわかったような気がします!

とい、いう認識でいいでしょうか?

小野さん

はい、まさにそういうことです。

RSS

About

Translate

Search

© 2024   Created by Scott Davidson.   Powered by

Badges  |  Report an Issue  |  Terms of Service