クリエイター手抜きプロジェクト[173]Illustrator CS2/CS3編 等比数列/古籏一浩

投稿:  著者:  読了時間:5分(本文:約2,000文字)


Illustratorでは等差数列に従った図形は手軽に描くことができますが、等比数列の場合は簡単にはできません。このような場合は、スクリプトの方が適しています。

以下のスクリプトは、等比数列の計算式を使って図形を描きます。ここで使っている計算式は

結果 = 2 × (dのn乗)

となっています。



expr = "x = 2 * ( Math.pow(d, n) );";
d = eval(prompt("dの値を入れてください", 4));
count = prompt("回数を入れてください", 6);
function setColor(r,g,b)
{
var tmpColor = new RGBColor();
tmpColor.red = r;
tmpColor.green = g;
tmpColor.blue = b;
return tmpColor;
}
layerObj = app.activeDocument.activeLayer;
for (n=0; n< count; n++)
{
x = eval(expr);
y = 0;
pObj = layerObj.pathItems.rectangle(0,0,2,10);
pObj.filled = true; // 塗りあり
pObj.stroked = true; // 線あり
pObj.strokeWidth = 1; // 線幅10ポイント
pObj.fillColor = setColor(255,0,0); // 塗りの色を指定(赤色)
pObj.strokeColor = setColor(0,0,255); // 線の色を指定(青色)
pObj.translate(x,0);
}

決められた数式ではなく、任意の数式にしたい場合には以下のスクリプトを使ってください。

expr = prompt("数式を入れてください","x = 2 * ( Math.pow(d, n) );");
d = eval(prompt("dの値を入れてください", 4));
count = prompt("回数を入れてください", 6);
function setColor(r,g,b)
{
var tmpColor = new RGBColor();
tmpColor.red = r;
tmpColor.green = g;
tmpColor.blue = b;
return tmpColor;
}
layerObj = app.activeDocument.activeLayer;
for (n=0; n< count; n++)
{
x = eval(expr);
y = 0;
pObj = layerObj.pathItems.rectangle(0,0,2,10);
pObj.filled = true; // 塗りあり
pObj.stroked = true; // 線あり
pObj.strokeWidth = 1; // 線幅10ポイント
pObj.fillColor = setColor(255,0,0); // 塗りの色を指定(赤色)
pObj.strokeColor = setColor(0,0,255); // 線の色を指定(青色)
pObj.translate(x,0);
}

指定できる数式ですが、必ずx=で始まり右側に数式を書きます。Math.pow()は指定した数値のn乗を返す関数です。Math.pow(2,8)であれば2の8乗になります。実際にはx=以後は、数式であればエラーにはなりません。x=100でもx=100*dでも正しく動作します。


【古籏一浩】openspc@po.shiojiri.ne.jp
< http://www.openspc2.org/ >

MacProとVMWare FusionのおかげでWindowsマシン使わなくなってしまって、一台除いて箱に入ったままです。Mac mini(Core solo)も一緒に段ボールに入ったまま……
他にはPSPも買ってブラウザの動作チェックした後は箱入り……
買ったけど封を切っていないソフトも結構ある……
ブルーレイドライブも買ってAdobe Encore少し使って焼けなかったので、そのまま……
iPod touchも少し使って、そのまま……
もったいないお化けがでそう……

< Ajaxライブラリでかんたんインターフェイスデザイン >
< http://www.amazon.co.jp/exec/obidos/ASIN/4861005698/openspace0d-22/ >
< 実践!Ajaxフレームワーク jQuery >
< http://www.amazon.co.jp/exec/obidos/ASIN/4839928541/openspace0d-22/ >

photo
Ajaxライブラリで かんたんインターフェイスデザイン
古籏一浩
ビー・エヌ・エヌ新社 2008-06-25



photo
実践!Ajaxフレームワーク jQuery
古籏 一浩
毎日コミュニケーションズ 2008-06-28

Ajax ポケットリファレンス (POCKET REFERENCE) jQueryで作る Ajaxアプリケーション prototype.jsとscript.aculo.usによるリッチWebアプリケーション開発

by G-Tools , 2008/06/30