« 映像:30F素材のページにリンゴの素材を追加 | メイン | Illustrator CS3、テキストオーバーフローチェック... »
2009年12月15日
Illustrator CS3でコッホ曲線
C言語のを移植してIllustratorCS3でコッホ曲線を描くようにしてみました。
(function(){
var s = Math.sin(Math.PI/3);
var c = Math.cos(Math.PI/3);
var w = app.activeDocument.width;
var h = 200;
KochCurve(0,0, w, 0, 5);
function KochCurve(x1, y1, x2, y2, dim){
var x3, y3, x4, y4, x5, y5;
if( dim <= 0 ){
drawLine( x1, h-y1, x2, h-y2 );
return;
}
var x3 = ( 2*x1 + x2 ) / 3;
var y3 = ( 2*y1 + y2 ) / 3;
var x5 = ( x1 + 2*x2 ) / 3;
var y5 = ( y1 + 2*y2 ) / 3;
var x4 = x3 + (x5-x3)*c + (y5-y3)*s;
var y4 = y3 - (x5-x3)*s + (y5-y3)*c;
KochCurve( x1, y1, x3, y3, dim-1 );
KochCurve( x3, y3, x4, y4, dim-1 );
KochCurve( x4, y4, x5, y5, dim-1 );
KochCurve( x5, y5, x2, y2, dim-1 );
}
})();
// 直線を描く
function drawLine(x1,y1,x2,y2){
var lineObj = app.activeDocument.pathItems.add();
lineObj.setEntirePath([[x1, y1],[x2, y2]]);
lineObj.stroked = true; // 先にtrueを設定した後で線幅を指定しないとダメ
lineObj.strokeWidth = 0.5;
lineObj.strokeColor = setCMYKColor(0, 100, 0, 0);
}
// CMYKカラーを設定し、CMYKカラーオブジェクトを返す
function setCMYKColor(c,m,y,k){
var CMYK = new CMYKColor();
CMYK.cyan = c;
CMYK.magenta = m;
CMYK.yellow = y;
CMYK.black = k;
return CMYK;
}
投稿者 openspc : 2009年12月15日 22:01