connect_centers_nearest_modified

前回作った、選択オブジェクトの中心点をつなぐパスを作るスクリプトで、つなぐオブジェクト群をどうやってつくろうかと思って、Voronoi Stippler*1というプログラムがあったのを思い出しました。これを使って画像から上の点群を作り、connect_centers_nearest を実行すると… setEntirePath でつなげられる点の数の上限(数千個)にひっかかってエラーになります。なので、下のように書き換えて、再度実行。

  //path.setEntirePath(points);
  for(i=0; i<points.length; i++){
    with(path.pathPoints.add()){
        anchor = points[i];
        rightDirection = anchor;
        leftDirection = anchor;
    }
  }

これはこれで、面白いかもしれないけど、糸がからまってるみたいでちょっとみっともない。ので、つなぐ距離の上限を設けることにしてみました。距離が上限より遠い場合、いったんパスを区切ります。

なんか、よい感じ? 変更したスクリプトを置いておきます。同梱の .js は windows、.jsx は mac 用のつもりです。
実行すると上限の距離(ポイント)を聞いてきます。
中身のことを書くと、パスを区切るところで、座標の配列 [x, y] の代わりに 0 を入れています。

download: aics_script_connect_centers_nearest_modified2.zip -> http://shspage.com/ex/files.html

追記:そういえば上のスクリプトで距離を調べるときは、距離の二乗で比べているんだった! なので、設定する上限は、距離の二乗の上限ということになります。。
追記:(6.12) 距離の上限を設定するように修正しました。

*1:現在はダウンロードできなくなっている模様。少し探した範囲で代替になるお手軽なものは見つからなかったですが、ボロノイ系のスクリプトなどがいくつかあったので、そのうち何か考えてみたいと思います。