いそぷろのブログ

おもしろいことを考えていきたい

Grasshopper勉強日記#2 インボリュート曲線に挑戦

グラスホッパーの使い道を考えたときに、好きな歯車を自動生成できるアルゴリズムつくったら大量の歯車3Dモデルが作れるんじゃ…!!

100個とか200個用意したら3Dプリントユーザーにも配れるのでは…!!

(もしくはユーザーの好みの歯車をすぐに作れるような感じにするとか)

などと妄想してしまったので、そのためのアルゴリズムを試行錯誤しながらつくっていきます

 

とりあえずインボリュート曲線ってものを描いたことがいままで一度もないので、Rhinocerosだけで描いてみた

Grasshopper勉強日記#2 インボリュート曲線に挑戦

一応それっぽいのが描けた

このためだけに、工業高校時代の製図の教科書を引っ張り出しました

 

その後概念だけほんわかと理解した上で、グラスホッパーで実現するためのアルゴリズムを考えていきます

 

とりあえずインボリュート曲線の描き方と同じ流れで組んでいきます

今日は以下の流れを再現します

  1. 基礎円の描画
  2. それを12等分
  3. 円周と同じ長さの水平な線を円の一番下の点から右方向へ描画
  4. それを12等分

Grasshopper勉強日記#2 インボリュート曲線に挑戦

いやぁこれがなかなか難しい…

なんで水平な線を描きたいのに斜めになってしまうんだ!

円を12等分した内のx番目の点を始点とし、Y座標の高さもそれと同じにしようとしても上手くいかない

 

仮にx番目の点の座標が{0,-25,0}としたとき

Vector>Construct Pont を使ってLineの終点を{円周と同じ長さ,-25,0}にしようとしたが、どうしてもYの値が{0,-25,0}ではなく{0,25,0}に勝手に変換されてしまう

 

なんでそうなるの!と思いながら、

マイナスがどうしてもプラスに置き換えられてしまうのであれば、最初からマイナスにしなければいいのかと考えを改め

最初の円の中心点を半径と同じだけY座標をプラスにし、どんな半径を指示しても円の最下点は必ず{0,0,0}になるようにした

Grasshopper勉強日記#2 インボリュート曲線に挑戦

 

Grasshopper勉強日記#2 インボリュート曲線に挑戦

なんとか円の最下点から水平な線を描けました

次は円の各点それぞれに接線を描いていくアルゴリズムですね…これが難しそう。どうやってやるのかまだ検討がついてないです

 

とりあえず今日はこんな感じで終わり

インボリュート曲線が完璧に描けるようになったら、各部のアルゴリズムの組み方について詳細に書いていきたいと思います

いまはかなり試行錯誤を繰り返してつくっているのでごちゃごちゃしてるので、解説のしようがない

 

あと最終的には計算を全て内部で終わらせてから、結果のインボリュート曲線だけを描画してくれるようにする予定です

今は全然完成していないので、プレビューみながらやっていきます

 

グラスホッパーであーだこーだと試行錯誤してるときに、ちょっと面白いなと思ったのは数値をまとめたリストの操作ですね

リスト関係の操作をマスターすると楽しくなりそう(数値をシフトしたり置き換えたり挿入したり…)

 

余談 インボリュート曲線を手で描くための方法を真似して、コンピュータに計算させるのって効率悪いのかな…

↓ここに載ってる式使えばよくね?って思った(いまさら

KHK歯車技術資料 - 初級編):インボリュート歯車

 

おわり

【Amazon】Grasshopper入門