« del.icio.usのmp3対応 | メイン | 「Web 2.0 Design Patternsの訳」その後。 »

Illustrator + Javascriptでアルゴリズミック・ビューティー

ほかにも、AppleScriptとかの存在は知ってたのですけど、あれこれ面白い事ができるんだなと確認した次第です。

現在、調査中ですけど、手作業では相当難しいイメージを割に簡単に作れそうでいい感じみたいですね。アルゴリズミック・ビューティー。

個人的に、近い将来Webデザイナーはプログラマー(あるいはSE)にかなり近づくんじゃないかと予想してるのだけど、こんな所も理由のひとつかもしれない。

さっそく、デフォルトでインストールされているサンプル・スクリプトをいじって、3000個のオブジェクトを色と透明度を変えてランダムな位置にコピーし、円形内のものだけ表示するスクリプトを書いてみました。

/**********************************************************

DuplicateObjInDisc.js
for Adobe Illustrator CS2
sakana sato : 2005/11/09

*********************************************************/

sourceDoc = activeDocument;
for ( i = 0; i != 3000 ; ++i ){

// checked in a following Machine.
// [Power Mac G5 2Ghz Dual 512mb memory]
// You might have to decrease the looping number.

sourcePageRef = sourceDoc.pageItems[0];

var left = getRandomPoint();
var top = getRandomPoint();

if( checkPointInDisc(left , top) ){
dupRef = sourcePageRef.duplicate();
dupRef.moveToBeginning (activeDocument);
dupRef.position = new Array( left, top );

dupRef.opacity = Math.random() * 100;

var cmykColor = new CMYKColor();
cmykColor.cyan = getRandomNum();
cmykColor.yellow = getRandomNum()+10;
cmykColor.magenta = getRandomNum();
dupRef.filled = true;
dupRef.fillColor = cmykColor;
}
}

function getRandomNum(){
var p =(Math.random() * 100)-20;
if( p<0 ){
p = 0;
}
return p;
}

function getRandomPoint(){
return (Math.random() * 600);
}

function checkPointInDisc(l , t){
if( Math.pow(200, 2)>(Math.pow((l-300), 2)+Math.pow((t-300), 2)) ) {
return true;
} else {
return false;
}
}


使い方:
はじめに下のような形の小さめのオブジェクトを一つ用意します。

star.gif

次にメニューから ファイル → スクリプト → その他のスクリプト
で、保存したスクリプトを選択します。

待つ事しばらくで次のようなイメージが生成されます。

stars.jpg

サンプルスクリプトがデフォルトでインストールされているフォルダにスクリプトのマニュアルも保存されていました。
英語版しかないのが難ですが。

トラックバック

このエントリーのトラックバックURL:
http://www.minfish.jp/blog/mt-tb.cgi/64