:note

くるくるしたものを作る

InDesignで同心円状の楕円オブジェクトを描き、それらの座標値を結合したら螺旋のような軌跡ができました。一筆書きでうずまきみたくしてみるスクリプト。パラメータでうずまきの数や最小値最大値、ピッチなどを調整してランダム生成します。

くるくるしたものを作る /images/2010/09/615-kurukuru.jpg

ただし、よくみると奇麗な螺旋ではありません。

くるくるしたものを作る /images/2010/09/616-kuru_zoom.jpg

円の4個目のアンカーポイントと一回り大きめな円の1個目のアンカーポイントを連結していますが、3個目から4個目にかけてのアンカーポイントとコントールハンドルは小さい方の円のままなので、ちょっと歪になってしまってます。

/*
くるくるとしたものを作る
"make spiral pattern"
使い方:
最前面のドキュメントのサイズいっぱいに、渦巻きのようなものをつくります。
開いているドキュメントがなければ新規ドキュメントを勝手に作って実行します。
動作確認:OS10.4.11 InDesign CS3
milligramme
www.milligramme.cc
*/
if(app.documents.length == 0){
var doc=app.documents.add();
}
var doc=app.documents[0];
var dWidth=doc.documentPreferences.pageWidth;
var dHeight=doc.documentPreferences.pageHeight;
var baramakiValue=50;//うずまき達の数
var baseR=2;//うずまきの一番小さい所の大きさ、ここから大きくしていく
var grinMax=55;//うずまく量の最大値
var grinMin=3;//うずまく量の最小値
var grinPitch=1;//うずまきのピッチ
for(var j=0; j < baramakiValue; j++ ){
var coOrdi=new Array();
for(var i=0; i < grinMin+Math.round(grinMax*Math.random()); i++){
//とりあえず同心円を描いていく
var baseOval=doc.ovals.add();
baseOval.geometricBounds=[0-i*grinPitch,0-i*grinPitch,baseR+i*grinPitch,baseR+i*grinPitch];
var ovalPath=baseOval.paths[0].entirePath;
//アンカーポイントとコントールハンドルをおぼえておく、どんどん貯める
coOrdi.push([ovalPath[0][0],ovalPath[0][1],ovalPath[0][2]]);
coOrdi.push([ovalPath[1][0],ovalPath[1][1],ovalPath[1][2]]);
coOrdi.push([ovalPath[2][0],ovalPath[2][1],ovalPath[2][2]]);
coOrdi.push([ovalPath[3][0],ovalPath[3][1],ovalPath[3][2]]);
baseOval.remove();//円を消す
}
var pCo=coOrdi;//同心円のアンカーポイントとコントロールハンドルの座標を連結した配列
var grinObj=doc.rectangles.add();//四角形をつくって
grinObj.paths[0].entirePath=pCo;//座標を入れ替える
grinObj.paths[0].pathType = PathType.openPath;//オープンパスにする
grinObj.move([dWidth*Math.random(),dHeight*Math.random()]);//ちらばす
grinObj.fillColor="None";
grinObj.strokeColor="Black";
grinObj.strokeWeight=0.1;
grinObj.strokeTint=-1;
//変形マトリクスで回転
var matrixObj=app.transformationMatrices.add({counterclockwiseRotationAngle:360*Math.random()});
grinObj.transform(CoordinateSpaces.PASTEBOARD_COORDINATES, AnchorPoint.CENTER_ANCHOR, matrixObj);
}
 
comments powered by Disqus
back to top